自美军将网络空间视为继陆、海、空、天外的第五大作战域,并将其列为国防部11项现代化优先事项之一后,美军开始重点关注网络空间的防御挑战。尽管美国在网络空间相关技术和实力方面走在世界前列,但相较于其他传统作战域,其网络空间防御能力仍显薄弱。根据美国政府2018年公布的一份政府工作报告显示,美国国防部2012年至2017年之间对美军自身武器系统进行了大规模的测试,发现所有测试的武器系统都存在严重的软件漏洞,在未来很容易成为强敌的突破口。为此,近年来美军不断推进人工智能、机器学习等技术在网络空间防御领域的应用和落地,探索使设备和系统能够自动检测网络威胁、发现网络漏洞并自动修复漏洞、抵御攻击,减少系统受攻击面的相关防御技术,以及可使网络资源始终处于动态变化状态,增加对手发动网络攻击的难度和成本的网络机动技术。其中,由ForAllSecure公司负责开发、美国国防高级研究计划局(DARPA)孵化并在美全军范围推广的智能化网络漏洞挖掘系统Mayhem,已经成为美军用于发现自身军用软件和系统漏洞的重要武器。

Mayhem系统概览

Mayhem是一套基于人工智能(AI)技术的自动网络推理系统,只针对Linux操作系统下的执行程序,可自动化地开展二进制分析、密码破译、逆向工程、漏洞挖掘和自动编程利用漏洞等活动,因此又被称为“机器人黑客”。ForAllSecure公司发言人表示,当今最先进的软件安全技术通常利用特殊工具来检查源代码并标记潜在的安全漏洞,但这一过程中会出现很多误报的情况,即把不是漏洞的标记为漏洞,因此通常需要安排所谓的“白帽黑客”来对标记进行核查。随着完成的软件产品中包含越来越多来自开源项目和其他第三方的组件,这个问题也变得越来越具有挑战性。Mayhem系统的宗旨就是用智能化系统来完成“白帽黑客”的漏洞挖掘和核查工作。它不仅能够指出可能存在的漏洞,并通过对漏洞加以利用,以此来证明其标记的正确性。

Mayhem可以监控目标的行为,自动生成测试用例。Mayhem的分析是准确和精确的,能以零假阳性发现软件代码缺陷。Mayhem构建了自治工具来检查软件是否存在可利用的漏洞。可以帮助任何组织在软件开发生命周期(SDLC)的早期发现已确认的风险。可通过此方法在SDLC的早期进行测试,使组织能够智能地进行测试,快速修复并放心地发布。

Mayhem系统于2016年参加DARPA网络挑战赛并击败超过100个竞争对手,夺得了最终的冠军,展现出媲美人类顶尖黑客团队的自动网络攻防实力。决赛中,所有参赛方进入一个完整的网络推理系统,不仅要在系统中发现问题,还能推断出问题的性质。Mayhem在6分钟之内发现了SQL Slammer漏洞并对其进行了修补。该漏洞此前导致客户遭受了将近10亿美元的损失,因为它在人类能够更新其系统之前攻击了超过7.5万台服务器。整个参赛过程中没有人工介入,全部工作均由参赛系统自主完成。

图1 Mayhem在DARPA网络挑战赛中的评分结果

2020年,美国防部国防创新部门(DIU)与ForAllSecure公司签署了一份总价4500万美元的合同,将利用后者研发的Mayhem系统在国防部武器系统中开展网络安全漏洞检测与修复工作。美军使用Mayhem在商用转军用的飞机控制软件中寻找漏洞,仅用时数分钟就成功发现漏洞,后由飞机制造商进行了验证和修复。

如今,该系统已经推广至国防部下属多个部门,包括空军第96网络空间测试组、空军第90网络空间作战中队、海军海上系统司令部(NAVSEA)和美国陆军指挥、控制、通信、计算机、网络、情报、监视和侦察中心(C5ISR)等,协助其在DevOps平台中开展测试和评估工作,以解决DevOps缺乏自动化、集成的安全测试工具的最大挑战。

系统功能和运行原理

目前,Mayhem主要针对基于Linux的操作系统的程序,它结合了两种成熟的动态应用安全测试(DAST)技术,即引导式模糊化与符号执行相结合,以前所未有的速度、规模和精度持续发现软件缺陷。导向型模糊测试使用随机生成的输入(如命令或照片)轰炸目标软件,并观察是否有触发可利用的漏洞。符号执行则创建一个目标软件的简化数学表示,可以对这个被简化的数学替身进行分析,以确定真实目标中的潜在弱点。通过上述两种技术来模拟潜在攻击者的策略,Mayhem可以在目标系统重发现潜在的漏洞,并生成漏洞利用。Mayhem的系统具有以下4点特征:

  • 零误报率并且测试结果可执行验证。筛选出假阳性是一项费力不讨好的事,跨部门的工作往往协调难度大,并容易挫败并影响开发人员的士气。Mayhem的所有报告都可验证其检测的软件漏洞。Mayhem的准确性使得开发人员,安全工程师和测试人员可以始终参与其中,确保团队开发工作快速推进。

  • 以机器速度进行自主测试。动态负性测试尽管已得到证实,但仍要求专家开发测试用例并审查结果,从而增加了不可预见的间接费用。而传统人工干预的测试方法限制了可扩展性、速度和有效性。Mayhem利用目标反馈来即时定制生成测试用例-意味着无需手动生成测试用例。Mayhem共享所有测试用例,以使回归测试变得毫不费力,快速且可扩展。

  • DevOps灵活性/左移动动态阴性测试。Mayhem通过在软件开发生命周期的早期引入动态否定性测试来克服其固有的局限性,帮助组织控制补救成本并防止产品上市时间的延迟。Mayhem进行回归和组件测试,并直接适合DevOps工作流程。

  • 管理来自未经检查的供应链的继承风险。Mayhem不需要源代码进行分析,从而允许用户验证和验证其软件供应链中的第三方代码。借助Mayhem减轻当今错综复杂的软件供应链所继承的风险。

Mayhem的设计思路主要基于以下四个原则:1)该系统应执行任意长时间,理想情况下是永远执行下去,而不会引起资源超出限制。2)为了提高性能,该系统不能做重复的工作。3)该系统不丢弃任何以前的分析结果。4)该系统应考虑符号化内存。

该系统还可以与DevSecOps等开发环境无缝集成,在不中断工作流程的情况下增强软件安全性。通过持续测试并从以前的运行数据中学习,使其成为在各个开发阶段维护应用程序的完整性和可靠性的动态工具,大大提高开发人员的生产率,可以实现以机器的速度进行测试,显著降低了DevSecOps的使用门槛。

工作流程

Mayhem通常以在线模式启动,当遇到内存临界点时,会自动切换到离线模式。这种使用混合执行算法则包括四个主要阶段:

1)初始化:初始化检查点管理器,检查点数据库以及测试用例目录。接着开始在线执行。

2)在线探测:Mayhem以在线的方式符号执行程序,并生成测试用例。

3)生成检查点:当内存消耗到一定程度时,生成检查点,保存符号执行的状态以及重放的信息。具体执行的状态被丢弃。

4)恢复检查点:检查点管理器恢复检查点,由于符号执行状态已被保存,Mayhem只需重新构造具体执行状态。Mayhem使用满足对应路径约束的输入来执行程序,直到程序指令达到挂起时的状态。

在线执行过程中,CEC管理多个具体执行状态,每个具体执行状态包括当前寄存器的上下文,内存以及OS状态。虚拟层调配所有向主机OS的系统调用,并对其进行模拟。为每个执行都保持独立的OS状态,如某个执行器向文件中写入值时,其它的执行器有该文件的相同实例。

关键技术

4.1 下一代模糊测试技术

Mayhem使用的下一代模糊测试技术,能够将自动化持续性安全测试融入DevOps流程,力求在早期发现漏洞、修复漏洞,以提高软件安全性。与传统模糊测试技术相比,Mayhem系统的下一代模糊测试技术结合了符号执行与导向型模糊测试技术,能够针对测试发现的安全漏洞自动化生成PoC和补丁,在一定程度上避免传统白盒测试的高误报和黑盒测试的盲目性,具有很高的创新性和价值。

模糊测试将随机排列的数据输入到程序中进行处理,然后就可以确定漏洞的薄弱点何在,以及如何被恶意攻击所利用。模糊测试不断地输入随机数据,直到一个特定的数据串使方程成立未知。

4.2 符号执行技术

符号执行是一种软件测试和静态分析技术,它使用符号值而不是真实值来执行程序,通过设立一个方程来表示程序中的所有逻辑,例如“x+5=7”,然后求解该方程。这种技术可以生成执行路径的输入,从而覆盖所有可能的执行路径,以发现程序中的错误和漏洞。符号执行的主要优点包括能够生成全面的测试用例集,以及能够分析包含复杂条件和循环的程序。

Mayhem引入了混合的符号执行规则,即在在线的和离线的符号执行间进行交替。当内存空间有压力时,混合引擎挑选一个正在执行的线程,保存当前的状态和路径约束。该线程在以后可恢复。Mayhem还引入了有效的处理符号内存的技术,当对输入相关的地址进行读写时就存在符号化内存的访问。在二进制级别上,符号指针普遍存在,生成利用时需考虑符号指针。生成的利用中有40%失效是因为约束被具体化,为解决此问题,Mayhem使用了一种基于索引的内存模型。

4.3 基于人工智能/机器学习的漏洞识别技术

生成式人工智能和机器学习(ML)是Mayhem技术堆栈中的一项关键技术。这些技术帮助Mayhem从每个测试周期中学习,识别收集数据中的模式和趋势。这种智能化方法允许优化测试场景,根据历史数据将精力集中在最容易受到漏洞影响的领域。通过利用生成式AI,Mayhem可以生成更接近真实世界使用的新测试用例,从而增加发现以前未发现的缺陷的可能性。这个持续学习的过程有助于确保Mayhem的测试策略不断发展,提供有针对性和有效的安全评估,以适应软件开发的复杂和不断变化的格局。

最新发展

2024年,ForAllSecure推出了Mayhem的在线版本Mayhem.Security,并在产品中提供了新的运行时动态软件物料清单(SBOM)功能,用于在线识别和解决软件和Web应用程序中的问题,并通过快速识别和优先处理运行时的软件漏洞来彻底改变系统的安全性。

结语

尽管即使在今天看来,Mayhem可能依然不够成熟,并不足以完全替代人类白帽黑客/分析师的工作,因为后者可以利用软件设计知识、代码阅读技能、创造力和直觉来发现漏洞。但基于人工智能技术的Mayhem系统是这数十年来首次研究如何识别关键软件缺陷而不被假阳性所拖累的成果,其好处也不仅限于安全方面,更能够降低软件开发过程中的质量保障(QA)工作量,其与美国国防部的合作也展示了自动化在代码测试中的强大优势。目前国内在二进制程序分析工具方面与美国存在较大差距,Mayhem这种利用黑客思维、结合人工智能技术对软件代码漏洞进行自动化检测的独特模式值得我们关注和学习。

声明:本文来自防务快讯,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。