挑战二进制文件:DARPA CGC如何革新程序分析工具评测标准

本文探讨DARPA网络大挑战赛提供的挑战二进制文件数据集如何成为程序分析工具评测的行业标准,涵盖漏洞发现、补丁策略和性能评估等多维度测试基准。

您的工具比我的更好?证明它 - The Trail of Bits博客

毫无疑问,DARPA的网络大挑战赛(CGC)将因推动多个领域的技术进步而载入史册:符号执行、二进制翻译和动态插桩等。但我们认为有一个贡献至今被忽视,且可能被证明是最有用的:挑战二进制文件数据集。

所有工具的通用指标

网络大挑战赛的参赛者识别为DECREE编写的挑战二进制文件(CBs)中的漏洞,这些文件基于32位Intel x86架构。自2014年以来,DARPA已发布了100多个这些易受攻击程序的源代码。这些程序专门设计有代表各种软件缺陷的漏洞。它们不仅仅是简单的测试用例,而是近似真实软件,具有足够的复杂性来考验手动和自动漏洞发现。

如果CBs被广泛采用作为基准测试,它们可能会改变我们解决安全问题的方式。这反映了SAT和ML社区在建立标准化基准和定期竞赛后的快速发展。挑战二进制文件、有效测试输入和样本漏洞创建了一个行业标准基准测试套件,用于评估:

  • 漏洞发现工具
  • 程序分析工具(例如自动测试覆盖率生成、值范围分析)
  • 补丁策略
  • 漏洞利用缓解措施

CBs比之前衡量软件分析工具质量的方法(例如SAMATE测试、NSA Juliet测试或STONESOUP测试用例)更健壮。首先,CBs是复杂的程序,如游戏、内容管理系统、图像处理器等,而不仅仅是易受攻击的代码片段。毕竟,要有效,分析工具必须处理具有相当低漏洞密度的真实软件,而不是直接的易受攻击代码片段。其次,与添加了漏洞的开源项目不同,我们非常有信心CBs中的所有漏洞都已被发现,因此分析工具可以与客观标准进行比较。最后,CBs还附带广泛的功能测试、引入漏洞的触发器、补丁和性能监控工具,从而能够对补丁工具和漏洞缓解策略进行基准测试。

创建行业标准基准测试集将解决阻碍未来程序分析工具开发的几个问题:

首先,缺乏标准化基准测试阻止了客观确定哪些工具是“最好的”。真实应用程序没有复杂漏洞的触发器,也没有这些漏洞的详尽列表。CBs提供了比较指标,例如:

  • 发现的漏洞数量
  • 每单位时间或内存发现的漏洞数量
  • 发现和遗漏的漏洞类别
  • 配置选项导致的性能差异

其次,哪些缓解措施最有效?CBs附带强调原始程序功能的输入、检查已知漏洞存在的输入和性能测量工具。这些使我们能够探索以下问题:

  • 各种漏洞缓解策略(例如控制流完整性、代码指针完整性、堆栈Cookie等)的潜在有效性和性能影响是什么?
  • 结果程序运行速度慢多少?
  • 缓解措施与真实补丁相比如何?

在家参与

参加CGC的团队已经花了数年时间磨练和调整他们的漏洞发现工具以适应DECREE的特殊性。但现实世界并不在DECREE上运行;它在Windows、Mac OS X和Linux上运行。我们认为研究应由现实世界的挑战和参数指导。因此,我们决定移植*挑战二进制文件以在这些环境中运行。

我们尝试了几次才找到最佳的移植方法,以最小化代码更改量,同时在平台之间保留尽可能多的原始代码。最终的解决方案相当简单:在没有标准包含文件的情况下构建每个编译单元(因为所有CBs都是静态链接的),使用其本地等效实现CGC系统调用,并进行各种小修复以使代码与更多编译器和标准库兼容。

我们对多平台CBs在多个方面的潜力感到兴奋:

  • 由于无需仅为DECREE设置虚拟机,您可以在已有的机器上运行CBs。
  • 随着这一障碍的消除,我们现在都有一个行业基准来评估程序分析工具。我们可以进行比较,例如:
    • CGC工具与现有程序分析和漏洞发现工具相比如何?
    • 当新工具发布时,它与当前最佳工具相比如何?
    • 使用源代码的静态分析工具是否比使用二进制文件的动态分析工具发现更多漏洞?
    • 为Mac OS X编写的工具是否比为Linux编写的工具更好,它们是否比为Windows编写的工具更好?
    • 当研究人员开源他们的代码时,我们可以评估他们的发现在特定操作系统或编译器上的效果如何。

在您观看参赛者的CRS对决之前,探索机器人将在您熟悉的环境中尝试解决的挑战。

获取CGC的挑战二进制文件,适用于最常见的操作系统。

*特别感谢我们的实习生Kareem El-Faramawi和Loren Maggiore进行移植工作,以及Artem、Peter和Ryan的支持。

如果您喜欢这篇文章,请分享: Twitter LinkedIn GitHub Mastodon Hacker News

页面内容 所有工具的通用指标 在家参与 最近的帖子 我们构建了MCP一直需要的安全层 利用废弃硬件中的零日漏洞 Inside EthCC[8]:成为智能合约审计员 使用Vendetect大规模检测代码复制 构建安全消息传递很难:对Bitchat安全辩论的细致看法 © 2025 Trail of Bits。 使用Hugo和Mainroad主题生成。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计