MUNIK解读ISO21434专题分享(10):验证测试,漏洞扫描、模糊测试和渗透测试
—原创文章,文章内所有内容文字资料,版权均属本公众号所有,任何媒体、网站、公众号或个人未经Munik公司授权不得转载、转贴、引用或以其他方式复制发布 、发表。已经被Munik公司授权的媒体、网站、公众号、个人,在下载使用时必须注明来源,违者Munik公司将依法追究相关责任.
回到本文的源头文章“ISO21434标准解读”,请点击链接:ISO 21434 Automobile Cyber Security汽车网络安全服务
回到知识分享,请点击链接:MUNIK中国-技术分享
在ISO/SAE 21434标准中,验证测试是确保车辆系统在设计和实现过程中满足安全需求的关键步骤。但是在日常的咨询工作时,我们发现很多客户(OEM和Tier1)做了大量的测试工作,但是工作内容大量重复,故本篇推文主要为大家理清楚各种测试之间的关系。
根据图1按照21434第10章的定义,验证测试包括多种方法,如功能测试、漏洞扫描、模糊测试和渗透测试。这些测试方法有助于识别和修复潜在的安全漏洞,确保系统的安全性和可靠性。
图1 21434中Test相关定义
根据以上理解可以梳理成验证测试的组成,如图2所示为验证测试的组成。以下章节会逐一介绍相关测试的目标、工具、过程等
图2 验证测试的组成
【功能测试】
目标:是为了确保系统或组件符合其设计和功能要求。
- 工具:CANoe, CANalyzer, Scapy, IDA Pro等
- 过程:在ISO 21434的背景下,功能测试需要确保所有网络安全要求都得到了满足,并且系统在各种预期的操作条件下都能正常工作。由于涉及的网络安全要求较多,在后续推文中针对不同的网络安全要求,再做详细介绍。
【漏洞扫描(Vulnerability Scanning)】
目标:自动化地识别系统中的已知漏洞。
图3 漏洞扫描的类型
- 工具:使用专门的漏洞扫描工具,如Nessus、OpenVAS等。
- 过程:
- 配置扫描工具:根据系统的具体情况配置扫描工具,指定扫描范围和深度。
- 执行扫描:运行扫描工具,自动检测系统中的已知漏洞。
- 分析结果:分析扫描结果,识别和分类发现的漏洞。
- 修复漏洞:根据扫描结果,修复已识别的漏洞,更新系统配置或应用补丁。
- 重新扫描:在修复漏洞后,重新进行扫描,确保漏洞已被有效修复。
【模糊测试(Fuzz Testing)】
目标:通过向系统输入随机或异常数据,识别潜在的安全漏洞和稳定性问题。
在漏洞挖掘领域,与渗透测试技术相伴使用的是模糊测试技术,广泛应用于智能网联汽车的不同车载系统,发掘潜在的未知网络安全漏洞。模糊测试是一种将输入向量空间中的大量随机输入向量输入到被测系统(System Under Test , SUT )中以测试其是否存在潜在网络安全漏洞的自动化软件测试技术 。
图4 模糊测试框架图
模糊测试框架通常包含如图 2所示的三种常见组件:生成器、收发器、监视器 。生成器负责生成用于对目标系统进行测试的输入向量:
- 基于变异的生成器
- 基于生成的生成器
收发器用于 SUT 和模糊测试工具之间传输数据。鉴于不同的 SUT 有不同的通信接口与通信协议,收发器需要基于特定的 SUT 搭载不同的通信控制模块。
模糊测试的目的在于观察输入向量是否引发 SUT的异常响应。监视器的作用在于监控处于模糊测试中的 SUT,试图检测其出现的任何非预期异常状态与行为。
此外,自动化的模糊测试框架也会包含日志记录、报告生成、数据可视化、系统配置等附加功能。
模糊测试数据生成器基于变异策略或者基于协议规范等生成策略生成用于输入到 SUT 的输入向量。生成器作为模糊测试的关键模块之一,其数据生成质量影响模糊测试效率。如果生成器的数据生成策略设置不当可能使得输入向量空间较大,容易导致数据爆炸问题,也可能生成大量的无效数据,无法触发被测试目标非预期行为。
- 工具:使用模糊测试工具,如AFL(American Fuzzy Lop)、Peach Fuzzer等。
- 过程:
- 选择测试目标:确定需要进行模糊测试的系统组件或接口。
- 配置模糊测试工具:根据测试目标配置模糊测试工具,定义输入数据的格式和范围。
- 执行模糊测试:运行模糊测试工具,向系统输入随机或异常数据,观察系统的响应。
- 分析结果:分析测试结果,识别系统在处理异常输入时的崩溃、错误或其他异常行为。
- 修复问题:根据测试结果,修复系统中的潜在漏洞和稳定性问题。
- 重新测试:在修复问题后,重新进行模糊测试,确保问题已被有效解决。
【渗透测试(Penetration Testing)】
目标:模拟真实攻击者的行为,评估系统的安全性。
- 工具:使用渗透测试工具,如Metasploit、Burp Suite、Kali Linux等。
- 过程:
- 规划和准备:确定渗透测试的范围、目标和方法,获取必要的授权和资源。
- 信息收集:收集目标系统的相关信息,如网络拓扑、开放端口、服务版本等。
- 漏洞分析:分析收集到的信息,识别潜在的漏洞和攻击路径。
- 攻击和利用:利用已识别的漏洞,尝试进行实际攻击,获取系统访问权限或执行其他恶意操作。
- 后渗透活动:在成功获取访问权限后,进一步探索系统,识别更多的漏洞和敏感信息。
- 报告和修复:编写渗透测试报告,详细描述发现的漏洞、攻击路径和修复建议。根据报告结果,修复系统中的漏洞。
- 重新测试:在修复漏洞后,重新进行渗透测试,确保漏洞已被有效修复。
图5 渗透测试流程图
渗透测试是经过授权,利用自动化工具集或者手动方式,有计划地对目标应用、网络、系统等目标进行安全测试以验证其是否存在未经授权的访问等网络安全漏洞的过程 。渗透测试采用以攻击代替测试的观点,站在攻击者的角度,使用各种技术与工具尝试入侵目标系统,一旦发现可被利用的安全漏洞则将其提交给系统所有者 。
- 基于对被测试目标的了解程度,渗透测试可分为白盒渗透测试、灰盒渗透测试、黑盒渗透测试 。
1. 白盒渗透测试中,测试人员可以获取被测试目标涉及的源代码、内部数据、资源访问权限等关键数据与权限。
2. 黑盒渗透测试是经典的渗透测试技术,黑盒渗透测试人员仅可通过公开渠道获取被测试目标的可利用信息。
3. 灰盒渗透测试则介于二者之间,测试人员在开展灰盒渗透测试之前可以获取关于被测试目标的架构与网络安全威胁等部分信息。
【总结】
在ISO/SAE 21434标准的框架下,漏洞扫描、模糊测试和渗透测试是确保车辆系统安全性的重要方法。通过这些测试方法,可以识别和修复系统中的潜在漏洞,确保系统在面对各种威胁时的安全性和可靠性。以下是这些测试方法的关键点:
- 功能测试:是为了确保系统或组件符合其设计和功能要求。
- 漏洞扫描:自动化地识别已知漏洞,快速发现和修复系统中的安全问题。
- 模糊测试:通过输入随机或异常数据,识别系统在处理异常输入时的潜在漏洞和稳定性问题。
- 渗透测试:模拟真实攻击者的行为,全面评估系统的安全性,识别和修复潜在的安全漏洞。
通过综合使用这些测试方法,可以有效提高车辆系统的安全性,确保其在整个生命周期内的可靠性和安全性。
在后续的内容中,我们将继续探讨功能测试、漏洞扫描、模糊测试和渗透测试等具体内容。希望通过这些内容,能够帮助大家更全面地理解汽车网络安全相关测试的过程。
我们目前具有经验丰富的网络安全专家团队,且获得多家著名认证机构的预审核评估资质,客户主要是OEM主机厂和T1/T2 零部件供应商,以及供应商和相关上下游行业。最后,如果你还为汽车网络安全相关资质、审核、测试评估和认证不知道怎么下手而发愁,请不要犹豫,关注上海秒尼科技术服务有限公司官网www.munik.com,获取更多服务内容~