该程序在DARPA网络大挑战赛中获得第一名,该竞赛致力于道德黑客自动化

2011年,当投资者马克·安德里森(Mark Andrissen)
说 “程序吞噬世界”时,这个想法很新鲜。 现在很明显,软件渗透到我们生活的方方面面。 从复杂的电子设备(如医疗设备和机器人移动设备)到最简单的设备(如连接到互联网的灯泡和温度计),软件围绕着我们。
这意味着我们很容易受到前所未有的对该软件的攻击。
每年,将
1,110亿行代码添加到现有程序中,每个行都可作为新的潜在目标。 研究公司
Cybersecurity Ventures的创始人兼首席编辑史蒂夫·摩根(Steve Morgan)预测,到2021年,美国将每天通过以前未知的漏洞(行业称为“零日漏洞”)实施系统黑客攻击,尽管这些漏洞在2015年
每周发生。
为了解决这个问题,我和卡内基梅隆大学的同事们花了将近10年的时间来开发一种可以自动使软件安全的技术。 然后在2012年,我们成立了
ForAllSecure ,将我们的产品推向世界。 我们只需要证明我们可以做到我们所说的话,并且以参加比赛的形式做到了。
七大壮丽:竞争的计算机在2016年于拉斯维加斯举行的网络大挑战赛决赛的观众面前闪耀。快进到2016年:我们团队已经在拉斯维加斯一家酒店的洗手间里积累了很多东西,正在确保自己输掉了比赛,这花了数千个小时来准备。 这是DARPA网络大挑战赛(CGC),是美国国防部高级研究项目组织的许多活动之一(例如2000年代初的机器人汽车比赛),目的是刺激技术突破以确保国家安全。 之所以成立CGC,是因为DARPA认识到美国可能没有足够的人员或工具来抵抗网络攻击,因此这一天可能会来临。
在网络安全战场上有精通技术的黑客,其中最好的是可以创造性地利用软件弱点来渗透组织防御的黑客。 出于个人目的这样做的罪犯被称为黑帽黑客,他们通常会创建工具来使脚本小子(使用现成程序的人)造成混乱,例如,2016年互联网僵尸网络发生时物联网引发了大规模的互联网攻击,使普通人在家中可以使用监控摄像头。 相反,道德或白帽黑客使用其技能来防止此类攻击。 但是有道德的黑客还不足以保护所有软件,在商业世界中,其数量正迅速增长,更不用说对国家和全球安全至关重要的通用基础设施和军事平台。
2014年,DARPA宣布了一项为期两年的网络大挑战赛,以测试开发可发现,验证和修补软件漏洞的AI系统的可行性。 2015年,一百支队伍进入了资格预审阶段。 2016年,他们中的七个进入了决赛,他们需要展示一个能够推理的系统-一个系统不仅可以注意到问题,而且可以对问题的起源做出假设。 冠军获得200万美元,第二和第三名-100万美元和750,000美元。
在DARPA发布这些细节之后,我和我的同事立即意识到这将是一个很好的机会,以证明我们的自动网络安全系统并不是一个简单的理论玩具。 当我们谈论ForAllSecure时,我们总是对我们解决方案的实用性持怀疑态度。 考虑到我们已经从事了十年的比赛,我们决定赢得比赛。
我们在大学的研究始于一个简单的假设:人们需要一种方法来测试他们购买的软件,以确保其安全性。 程序员当然会尽一切努力消除安全问题,但是他们的主要任务更加简单:他们需要按时发布产品并确保产品能够完成所需的工作。 问题在于,黑客将找到使软件执行不应做的事情的方法。
如今,软件安全领域的最佳实践涉及使用特殊工具来检查源代码并找出潜在的弱点。 这个过程会产生很多假阳性结果-标记不是很弱的地方-因此,一个人必须仔细检查所有这些地方。 为了提高错误检测的速度,一些公司依靠道德的黑客进行一次性分析或参加bug搜索程序,并收取一定费用,并向其支付检测到的bug的数量和严重性。 但是,只有最成功的公司才能负担得起测试最高质量程序的费用。 只有在最终产品中包含各种开源组件和第三方的其他工作时,问题才会变得更加复杂。
我们在比赛中展示了Mayhem系统,该系统可自动执行道德黑客的工作。 她不仅指出了可能的弱点,还利用了这些漏洞,证明了它们的弱点。 这也是CGC的关键点-演示漏洞证明并创建有效的利用方法是获得胜利点的一些方法。 由于Mayhem是一台可以缩放的机器,因此这种分析可以以人类无法达到的速度进行。
就像它的六个竞争对手一样,Mayhem需要水冷却。 但是有关消耗量和温度的统计数据表明,Mayhem比其他方法更活跃。我们着手建立Mayhem,并拥有由我们在大学开发的现成的软件分析系统,并基于对程序文本的正式分析。 可以将该方法与描述程序可以采用的每条路径的数学公式进行比较,即发布一个不断分支的分析树。 这样的树很快就会变得太大而无法使用,但是我们提出了一些巧妙的方法来消除将整个树缩减为多个分支的某些路径。 之后,我们已经可以更详细地研究其余分支。
符号执行会创建一个表示程序整个逻辑的方程式-例如,x + 5 = 7-然后求解该方程式。 将这种策略与另一种软件分析方法
fuzzing进行比较 ,当您尝试向程序提供随机值以尝试将其删除时,您已经可以识别出导致暂停的漏洞以及如何将其用于蓄意的攻击中。 模糊处理将输入随机数据,直到它使方程的值变为真为止,确定x = 2。
两种方法都有其优势,但是多年来,模糊测试一直具有易于实现和处理输入数据的速度的优点。 对于任何能够驯服它的人来说,象征性的表演充满着巨大而尚未开发的潜力。 在我们于2010年开始创建的Mayhem系统中,我们能够通过结合两种方法来实现这一目标。
模糊测试是一种尝试,以极快的速度做出明智的假设,以了解哪种输入数据会导致程序以新方式运行,然后跟踪哪种数据真正导致了这种结果。 符号执行是一种尝试,要求数学家正式推断哪些输入数据可以帮助创建漏洞利用程序。 我们发现,某些错误最好通过快速猜测找到,而其他错误则使用数学方法。 因此,我们决定同时使用这两种方法。 符号执行深入研究了程序的一部分的顺序研究,并提供了运行该部分代码的输入。 然后,系统将此数据传递给模糊测试程序,该程序开始非常迅速地敲击该部分代码,从而消除了该漏洞。
Mayhem的另一个功能是直接使用二进制代码,这与研究文本文件(即源代码)的人不同。 这意味着系统可以在无需开发人员帮助的情况下分析程序,这对于包含由第三方开发人员编写的组件(其源代码无法找到)的组件的程序而言非常重要。 但是很难判断二进制代码,因为与源代码不同,它既没有函数,也没有逻辑变量,也没有数据抽象。 二进制代码只有一个存储器和固定长度的位向量-一种有效的数据存储结构。 要使用这样的代码,您必须是一台机器,并且要创建可以在这种限制下工作的机器,工程师确实必须付出很多努力。
确定漏洞后,Mayhem会生成可利用的漏洞-黑帽黑客可以使用其破解的代码。 目的是证明可以利用漏洞利用来获得对操作系统的特权访问。 结果,Mayhem可以绝对确定地识别漏洞,而不是像大多数代码分析工具一样,仅指出可能的问题。
2014年,我们在Debian发行版中的所有程序上对Mayhem进行了测试,Debian发行版是一种流行的Linux版本,在全球范围内用于工作计算机和服务器。 Mayhem发现了将近14,000个独特漏洞,然后将列表缩小为250个新漏洞,这些漏洞应得到最高优先级。 整个测试耗时一周,因为我们将Mayhem扩展到了Amazon云中的许多服务器,并且实际上不需要人工干预。 我们将最重要的发现发送给Debian社区进行审查。 我们决定将研究项目转变为商业公司的原因之一是,我们希望与开发人员进行如此规模的合作,分析成千上万个程序以寻找大量漏洞。
Mayhem项目团队:ForAllSecure工程师在闭幕式上以他们的创意为背景摆姿势。 文章的作者David Bramley位于第一行,左起第三位。2015年6月3日,一百多名参与者被接纳参加资格回合,他们被赋予131个独特的任务,每个任务都有已知的漏洞。 得分最高的七个团队(为他们找到漏洞和补丁而发行)进入了网络大挑战赛决赛。 ForAllSecure将获得第二名的参与者的成就提高了一倍以上。 短暂的喜悦瞬间让位于真正的压力才开始的认识!
结果发现,基于Mayhem技术创建完全自主的控制论决策系统的任务非常艰巨。 特别是,由于DARPA分配了7名决赛入围者足够的资金来支持整个一年的开发,因此我们得以做到这一点。 该技术的主要组成部分包括一套将可执行程序转换为相对易于理解和分析的语言的工具,以及用于发现和利用漏洞的主动工具,为缺陷二进制代码自动创建补丁的保护性工具以及用于有效协调工作的程序。
在准备决赛时,我们面临两个严重的困难。 首先,尽管我们对Mayhem处理漏洞搜索的方式感到满意,但在我们看来,补丁程序不够有效。 在竞争中,实际上,添加补丁将浪费更多的处理器时间,而不是解决该问题所花费的时间,这是没有意义的。 因此,我们在用于添加自动补丁程序的系统上工作了很长时间,该补丁程序的使用量增加了不超过5%。
其次,我们需要一个制胜战略。 假设我们发现了一个漏洞并为其制作了补丁。 如果它减慢了程序速度,也许您不应该马上滚动它。 有时值得等待,仅在万不得已时才应用补丁。 我们已经开发了一个专家系统,可以决定何时修补程序。
当我们的团队进入2016年8月5日举行决赛的拉斯维加斯宴会厅时,我们看到一个巨大的舞台上有七个巨大的架子,上面闪烁着闪光灯,下面有一个装有180吨水的水箱,用于冷却参与者的计算机。 参赛者需要在比赛开始前一晚准备汽车,然后DARPA取消了所有进入汽车的通道。 汽车被切断与互联网的连接,通常与外界隔绝。 我们只能监视Mayhem的工作方式,观察系统的功耗和温度,并在每个机架旁边显示其统计信息。 Mayhem始终比竞争对手更积极地工作-我们希望这是一个好兆头。
在将近100轮后,竞争系统接收了新程序,并且不得不分析代码中的漏洞并在短短几分钟内发布了必要的补丁以进行保护。 在每一轮中给出的分数是为了使机器能够发现并证明漏洞的存在以及补丁的有效性。
大获全胜:混乱(Mayhem)设法创造了很大的优势,但在第40轮之后跌倒了。 但是直到比赛结束,车队对这个差距一无所知。为了使演示更加有趣,组织者决定仅在比赛结束时告知最终分数。 这意味着在此过程中,我们不知道我们是输是赢,只看到Mayhem发送有关发现的漏洞的消息。 但是,在比赛开始几小时后,即第40轮之后,我们很清楚Mayhem停止发送消息了。 程序崩溃了。
我们内心的一切都在收缩,因为在我们看来,我们最糟糕的噩梦正在变成现实。 我们要求组织者重新启动该程序的机会,但他们不允许我们这样做。 由于仅完成了一半比赛,我们就开始为可耻的失败做准备。
比赛结束时,组织者开始对情况进行评论,漂亮的可视化图像向我们展示了每个团队的机器如何在几秒钟内发现并修复程序中的安全性问题,而不是人们花费数月或数年的时间。 大厅有5,000多人参加,来宾评论员-天体物理学家和著名的黑客-引起了他们的兴趣。 我们准备让他们宣布失败,并在屏幕上通过信息确认。
然而,看着每一轮比赛之后增加的积分,我们突然意识到Mayhem的最初差距足以保持第一名,尽管他在第40轮比赛之后就完成了工作。 在宣布上一轮的结果之后,仿佛这座山从我们肩上掉了下来。 我们赢了。
DARPA计划的负责人Mike Walker说,这种自主的网络防御演示只是软件安全领域“一场革命的开始”。 他将结果与怀特兄弟的首飞进行了比较,后者虽然没有飞远,但是为跨洲飞行指明了方向。
到目前为止,ForAllSecure正在将其新服务的第一版出售给包括美国政府以及高科技和航空航天公司在内的早期客户。 在此阶段,服务基本上确定是否存在人类专家解决的问题。 在相当长的一段时间内,诸如Mayhem之类的系统将与人员,安全专家一起工作,从而使软件世界变得更加安全。 但是我们相信,在不久的将来,机器智能将能够独自完成这项任务。