0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

白帽黑客机Mayhem如何赢得DARPA“网络超级挑战赛”的故事

IEEE电气电子工程师 来源:lq 2019-04-30 10:12 次阅读

2011年,风险投资家马克•安德森(Marc Andreessen)曾说:“软件正在吞噬世界。”在当时这还是一个新奇的想法。现在,很明显,软件渗透了我们的生活。从医疗设备和自动驾驶车辆等复杂的电子设备到联网灯泡和温度计等简单的物体,我们被软件包围着。

这意味着我们比以往任何时候都更容易受到软件攻击的影响。

每年,现有的软件代码数量会新增1110亿行,每行都代表着一个潜在的新攻击目标。研究公司Cybersecurity Ventures的创始人兼总编史蒂夫•摩根(Steve Morgan)预测,到2021年,美国将平均每天发生一次利用此前未知的漏洞入侵系统的事件,行业中称之为“零日漏洞”(zero day exploits),而2015年时还只是每周发生一次。

为了解决这个问题,我和我在卡耐基梅隆大学(CMU,位于匹兹堡)的同事们花了近10年时间来开发能够自动保护软件安全的技术。2012年,我们成立了ForAllSecure公司,将我们的产品推向世界。我们要做的就是证明我们可以做到我们宣称能做到的事情。通过一场大奖赛,我们证明了这一点。

━━━━

2016年,我的团队挤在拉斯维加斯的一家酒店宴会厅里,咬着指甲,十分确定我们刚刚输掉了一场花了数千小时准备的比赛。这场比赛是由美国国防部高级研究计划局(DARPA)举办的“网络超级挑战赛”(CGC)。美国国防部高级研究计划局为推动国家安全技术实现突破而举办了多项比赛,21世纪早期的自动驾驶汽车大赛也是其中一项。举办“网络超级挑战赛”是因为,美国国防部高级研究计划局期待有一天,美国可实现无需人力或工具便能自动抵御网络威胁。

网络安全战场上尽是技术娴熟的黑客,最高水平的黑客还能创造性地利用软件漏洞进入某个组织的防御系统。为了自己的利益而这样做的罪犯通常被称为“黑帽”,他们经常创建大批业余的“脚本小子”,作为进行破坏的工具,比如,2016年物联网僵尸网络在控制了人们家中的微型摄像机和录像机后,在互联网上发动了大规模攻击。与之相反,“白帽”则利用他们的技能来阻止这种攻击。但是,我们没有足够的白帽黑客来保护商业世界数量激增的所有软件,更不用说对国家和全球安全至关重要的公共基础设施和军事平台了。

2014年,美国国防部高级研究计划局宣布了一个为期两年的项目——“网络超级挑战赛”,举办这次竞赛的目的是,测试是否有可能开发出能够发现、验证和修补软件漏洞的人工智能系统。2015年,总共有大约100个团队进入资格预审阶段。2016年,预审阶段的前7名晋级总决赛,在决赛中,他们需要进入一个完整的网络推理系统,这个系统不仅能够发现问题,还能推断出问题的性质。冠军将赢得200万美元奖金,亚军和季军将分别获得100万和75万美元奖金。

在美国国防部高级研究计划局公布了比赛细则之后,我和同事们意识到这是一个绝佳机会,可以证明我们开发的自动化网络安全不仅仅是理论游戏。在运营ForAllSecure公司之来,我们一直面临着对解决方案可行性的质疑。我们认为我们最好能在美国国防部高级研究计划局的比赛中获胜,因为我们已经为此努力了10年。

我们在卡耐基梅隆大学的研究始于一个简单的前提:人们需要一种可以检查他们所购买软件并确保其安全的方法。当然,编码人员将尽力排除安全漏洞,但他们主要关注更为基本的方面:必须按时交付产品,并确保它能够发挥预期功能。但问题就在于,黑客会找到方法让软件做它不该做的事情。

当今最先进的软件安全技术会利用特殊工具来检查源代码并标记潜在的安全漏洞。由于这一过程会产生很多误报——标记的实际上并不是漏洞,所以必须再安排一个人来仔细核查每个标记。为了提高故障发现率,一些公司依靠白帽黑客进行一次性分析,或者参与“故障奖励”计划,根据发现的故障数量和严重程度向他们支付奖励。但只有盈利最多的公司才有钱对其软件开展最大程度的测试。随着完成的软件产品中包含越来越多来自开源项目和其他第三方的组件,这个问题也变得越来越复杂。

我们的参赛系统Mayhem能够自动完成白帽黑客的工作。它不仅能够指出可能的漏洞,还能利用它们,从而最终证明它们实际上就是漏洞。这也是“网络超级挑战赛”的一个关键部分,因为利用可操纵漏洞来证明漏洞是机器得分的规则。Mayhem 是一台可以扩展到数百或数千个节点的机器,可以实现人类无法匹敌的分析速度。

━━━━

为了打造Mayhem,我们从我们在卡耐基梅隆大学开发的第一个软件分析系统着手,该系统以程序形式化分析为基础。这种方法好比创建一个数学方程式,用于表示软件程序可能采取的每一条路径,从而生成一棵不断分支的分析树。很快,这棵树就会变得太大而无法管理,但我们已经找到了巧妙的方法来重叠一些路径,将大树修剪成几根树枝。接下来,我们便可以更深入地探索剩下的树枝。

符号执行是设立一个方程来表示程序中的所有逻辑,例如“x+5=7”,然后求解该方程。还有另一种与这种策略不同的软件分析方法,被称为“模糊测试”。模糊测试将随机排列的数据输入到程序中进行处理,然后就可以确定漏洞的薄弱点何在,以及如何被恶意攻击所利用。模糊测试不断地输入随机数据,直到一个特定的数据串使方程成立,最后确定x=2。

这两种方法各有各的优点,但多年来,模糊测试更具优势,因为它更容易操作,而且在尝试新的输入时速度更快。与此同时,符号执行也向学会并驯服它的人展示了尚未开发的巨大潜力。我们于2010年开始开发Mayhem,并在这个系统中完美地结合了这两种方法。

模糊测试就像是快速智力猜测——看哪些输入可能会触发程序的新行为,然后跟踪那些实际引发行为的输入数据。符号执行则好比让一位数学家努力正规地计算出哪些输入数据会利用程序。我们发现,对有些故障来说,快速猜测是最好的发现办法,其他的则最好通过数学方法发现。所以我们决定同时运行这两种方法。符号执行会对程序的一部分进行深入推算,算出哪一个输入数据会触发该区域代码。然后,系统可以将该输入数据传递给模糊测试程序,快速敲打同一区域代码,找到漏洞。

Mayhem的另一个特点是它可以直接处理二进制代码,而不是人工编码的文本文件——源代码。这意味着系统可以在没有开发人员帮助的情况下分析程序,这对于包含第三方程序的组件来说非常重要,因为它们可能没有源代码。但是二进制代码的推算比较困难,因为与源代码不同,它没有函数,没有局部变量,也没有数据抽象。二进制代码有一个大的存储区域和固定长度的位向量——一种高效存储位的数据结构。你要变成一台机器才能处理这些代码,而且实际上,建造一台可以在这些约束条件下工作的机器需要的工程量很大。

Mayhem 识别出一个漏洞后,会产生并运行一段利用漏洞的代码,也就是黑帽黑客可能用来入侵程序的代码,证明可以利用漏洞获得对操作系统的特权访问或根访问。结果是,Mayhem可以十分确定地标识出漏洞,而不是像大多数代码分析工具那样仅仅标记出可能会有问题。

2014年,我们对Debian发行的每一个程序都进行了一次Mayhem技术测试(Debian是世界各地台式机和服务器上普遍使用的一个Linux版本)。Mayhem 发现了近1.4万个独特漏洞,然后将漏洞列表缩小到250个值得优先考虑的新漏洞。通过在亚马逊云的大量服务器上部署Mayhem,整个测试不到一周就完成了,几乎没有人为干预。我们向Debian网络社区提交了更重要的发现。我们将我们的研究剥离出来成立一家公司,就是为了当我们分析成千上万程序并发现存在大量漏洞时,能够与开发人员一起有规模地开展工作。

2015年6月3日,100多位参赛者进入资格赛,接到131项有特殊设置的挑战,每项挑战都包含软件安全漏洞。安全得分(以发现并修补漏洞为评判基础)最高的7支队伍进入了网络超级挑战赛决赛,FoAllSecure队的得分是半决赛亚军的两倍多。短暂的喜悦很快过去,我们意识到压力现在才真正来了!

采用Mayhem核心技术,建立一个完全自动化的网络推理系统是一项艰巨的任务。我们之所以能够完成,部分原因是美国国防部高级研究计划局为所有7支入围队伍提供了充足的资金,供我们开展为期一年的开发工作。我们的核心组件包括将可执行程序转换为相对容易理解和分析的语言的工具集,还包括用于查找和利用漏洞的攻击工具、自动修补有缺陷的二进制代码的防御工具,以及有效协调各项工作的程序。

在准备最后一轮比赛时,我们面临两大挑战。首先,虽然我们对Mayhem发现漏洞的能力感到满意,但我们觉得打补丁还不够有效。在比赛中,就像在现实生活中一样,你不愿意多耗费处理能力去为一个不值得解决的问题安装补丁。因此,我们花了大量时间开发自动漏洞补丁,一般情况下其执行时间比例介于0到5%之间。

其次,我们需要一个战略来打赢这场比赛。比如说发现漏洞和打补丁。如果打补丁需要增加太多的执行时间,从而使程序速度变慢,你可能不希望立即启用补丁。相反,有时最好等待,只在绝对必要的时候才打补丁。我们开发了一个专家系统来决定何时打补丁。

2016年8月5日,当我们的团队走进拉斯维加斯的宴会厅参加最后一场比赛时,我们看到在一个大舞台上有7个灯光闪烁的庞大机架,下面是180吨水,用于保持各队的计算机处于冷却状态。在比赛开始的前一天晚上,参赛者安装好这些机器,然后美国国防部高级研究计划局切断了对它们的所有访问。这些机器是被气隙隔离的——它们与外界没有联系。我们唯一能做的就是看着Mayhem不停地工作,观察各个系统机架报告的电源使用情况和系统温度统计数据。Mayhem一直是7台参赛计算机中最努力的——这是一个好迹象,至少我们希望如此。

在近100轮的比赛中,新程序被分到各参赛系统,机器只有几分钟的时间来分析代码寻找漏洞,并迅速发布防护补丁。每一轮都根据机器发现和证实漏洞的能力以及补丁的性能来打分。

为了使“网络超级挑战赛”最后一场比赛令观众觉得更加刺激,比赛组织方决定,只有在比赛结束时才逐场报告得分。这意味着我们不知道我们是领先还是落后,只能看着Mayhem 提交它发现的漏洞。然而,在比赛进行了几个小时,在第40轮比赛之后,我们发现Mayhem停止了提交漏洞。程序崩溃了。

━━━━

我们的肚子好像挨了一记重拳,噩梦成真。我们请求组织方重新启动,但他们不允许。比赛还剩一半,我们开始考虑失败的耻辱。

最后一轮结束时,逐场解说开始了,绚丽的可视化效果展示了每个团队的机器是如何在几秒内发现和修复安全缺陷的,相比之下,人工团队可能需要花费数月或数年的时间。观众超过5000人,由一位天体物理学家和多位黑客明星担任嘉宾评论员,搅得观众群情激动。我们鼓足勇气看屏幕,准备听人宣布并确认我们的失败。

然而,当我们看到每一轮比赛的比分不断出现时,我们突然发现,虽然Mayhem在第40轮之后就停止了比赛,但领先优势足以让它保持在第一位。当最后一轮比赛结果宣布时,我们肩上的重担卸下了。我们赢了。

美国国防部高级研究计划局的项目主管迈克•沃克(Mike Walker)表示,比赛展示的网络自动防御“只是软件安全革命的开端”。他将比赛的成果比作莱特兄弟的首次飞行,他们虽然没有飞很远,但指明了洲际航行的路线。

目前,ForAllSecure正在向早期采用者(包括美国政府和高技术公司及航空航天行业的公司)销售其新服务的首个版本。在这个阶段,我们的服务主要是指出问题,然后由人工专家参与解决。在未来的一段时间里,像Mayhem 这样的系统将与人工安全专家合作,让世界上的软件更加安全。在更远的将来,我们相信机器智能将独自处理这项工作。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 物联网
    +关注

    关注

    2909

    文章

    44632

    浏览量

    373259
  • 医疗设备
    +关注

    关注

    12

    文章

    951

    浏览量

    66844
  • 自动驾驶
    +关注

    关注

    784

    文章

    13809

    浏览量

    166441

原文标题:白帽黑客机Mayhem如何赢得DARPA“网络超级挑战赛”的故事

文章出处:【微信号:IEEE_China,微信公众号:IEEE电气电子工程师】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    芯华章持续助力EDA精英挑战赛

    日前,2024中国研究生创“芯”大赛·EDA精英挑战赛(以下简称EDA竞赛)决赛在南京江北新区举办。今年EDA竞赛首次升级为国,在全国超过500个参赛队伍中,来自华南理工大学的"EDA240931参赛队"从芯华章赛道脱颖而出,斩获仅有2支队伍能获得的菁英杯大奖,祝贺!
    的头像 发表于 12-17 15:47 228次阅读

    EDA精英挑战赛果公布!思尔芯“战队”薪火相承斩获“麒麟杯”

    2024中国研究生创芯大赛·EDA精英挑战赛12月7-8日,2024中国研究生创芯大赛·EDA精英挑战赛(原“集成威廉希尔官方网站 EDA设计精英挑战赛”)总决赛及颁奖典礼在南京成功举办。此次大赛,思尔芯作为核心
    的头像 发表于 12-11 01:03 327次阅读
    EDA精英<b class='flag-5'>挑战赛</b><b class='flag-5'>赛</b>果公布!思尔芯“战队”薪火相承斩获“麒麟杯”

    e络盟社区携手恩智浦发起智能空间楼宇自动化挑战赛

    安富利旗下全球电子元器件产品与解决方案分销商e络盟社区与恩智浦联合发起围绕智能空间楼宇自动化设计的全新挑战赛。本次挑战赛邀请工程师和技术爱好者利用恩智浦FRDM MCX A 系列(A15X)开发套件,开发创新的解决方案。
    的头像 发表于 11-14 10:44 226次阅读
    e络盟社区携手恩智浦发起智能空间楼宇自动化<b class='flag-5'>挑战赛</b>

    2024年ICPC与华为挑战赛冠军杯圆满落幕

    近日,2024年ICPC&华为挑战赛冠军杯在深圳圆满落幕。该活动由华为和ICPC联合举办,汇聚全球顶尖的编程人才,共同探讨和解决具有挑战性的工业界真实问题,并对未来技术发展趋势及关键挑战展开讨论。今年的
    的头像 发表于 10-27 16:00 765次阅读

    PI助力aCentauri车队在太阳能车挑战赛中大放异彩

    在2023年10月,Power Integrations (PI) 为当时举行的普利司通世界太阳能车挑战赛提供了先进的技术和支持。
    的头像 发表于 10-27 14:08 283次阅读
    PI助力aCentauri车队在太阳能车<b class='flag-5'>挑战赛</b>中大放异彩

    50万奖金池!开放原子大赛——第二届OpenHarmony创新应用挑战赛正式启动

    第二届OpenHarmony创新应用挑战赛作为开放原子大赛旗下的重要项,聚焦 OpenHarmony应用开发,致力提升开发者的动手实践能力与开发创新应用的能力。 项要求开发者
    发表于 10-24 15:40

    NVIDIA为AI城市挑战赛构建合成数据集

    在一年一度的 AI 城市挑战赛中,来自世界各地的数百支参赛队伍在 NVIDIA Omniverse 生成的基于物理学的数据集上测试了他们的 AI 模型。
    的头像 发表于 09-09 10:04 483次阅读

    燧原科技联合主办“智绘艺术家之诗画点军”文生图挑战赛圆满结束

    燧原科技携手OpenI启智社区联合主办的"智绘艺术家之诗画点军"文生图挑战赛日前圆满落幕。
    的头像 发表于 09-02 10:15 540次阅读

    AI4Science黑客松光子计算挑战赛成功举办

    经过数月角逐,第二届AI4Science黑客松竞赛日前落下帷幕。在曦智科技主持的光子计算挑战赛中,参赛选手何自强和来自东北大学的参赛队伍The Power of Light获得完优胜奖。
    的头像 发表于 08-07 09:58 520次阅读

    思尔芯题正式发布,邀你共战EDA精英挑战赛

    题发布COMPETITIONRELEASE2024中国研究生创芯大赛·EDA精英挑战赛(原“集成威廉希尔官方网站 EDA设计精英挑战赛”)现已正式拉开帷幕。作为核心出题企业之一思尔芯(S2C),已经为你们准备了
    的头像 发表于 08-03 08:24 665次阅读
    思尔芯<b class='flag-5'>赛</b>题正式发布,邀你共战EDA精英<b class='flag-5'>挑战赛</b>!

    第三届CCF“司南杯”量子计算编程挑战赛获奖名单公布!

    的第三届CCF“司南杯”量子计算编程挑战赛正式落下帷幕,本次大赛的申诉与复审工作现已全部完成,经赛事组委会审议,确认获奖名单真实有效。恭喜以下获奖选手,让我们一起欣赏各
    的头像 发表于 07-16 08:22 389次阅读
    第三届CCF“司南杯”量子计算编程<b class='flag-5'>挑战赛</b>获奖名单公布!

    开放原子开源大赛OpenHarmony智能化应用生态挑战赛决赛路成功举办

    软件定义世界,开源共筑未来。在江苏省工信厅、市工信局、开放原子开源基金会及相关单位的指导和支持下,4月19-20日,由中软国际教育科技集团联合举办的开放原子开源大赛-OpenHarmony智能化应用生态挑战赛决赛路演在盐城市大数据产业园成功举办。
    的头像 发表于 04-24 09:48 416次阅读

    软通动力子公司鸿湖万联成功举办基于x86架构的OpenHarmony应用生态挑战赛

    应用生态挑战赛”决赛路演在无锡圆满落幕。本次挑战赛历时近3个月,受到了来自企业、院校以及个人开发者等多个领域的广泛关注和积极响应,超过120个团队/个人踊跃报名参赛
    的头像 发表于 04-23 09:34 397次阅读
    软通动力子公司鸿湖万联成功举办基于x86架构的OpenHarmony应用生态<b class='flag-5'>挑战赛</b>

    特斯拉修补黑客竞赛发现的漏洞,Pwn2Own助其领先安全领域

    作为领先电动车品牌,特斯拉始终重视网络安全,并且与黑客建立伙伴关系。为此,特斯拉依托Pwn2Own等黑客赛事平台,以重金奖励挖掘漏洞以弥
    的头像 发表于 03-22 11:35 499次阅读

    OpenHarmony人形机器人创新挑战赛来啦

    12月28日,第二十六届中国机器人及人工智能大赛人形机器人创新挑战赛在苏州正式发布,首次结合
    的头像 发表于 12-30 08:32 1105次阅读
    OpenHarmony人形机器人创新<b class='flag-5'>挑战赛</b>来啦