自动化代码审计的首位客户 - Trail of Bits博客
Dan Guido
2016年10月4日
cyber-grand-challenge, press-release, static-analysis
上个月,我们为DARPA网络大挑战开发的网络推理系统(CRS)在更短的时间内,以更低的成本,审计了比人工审计更大量的代码,且审计细节更加详尽。
我们的CRS为Mozilla安全开源(SOS)基金审计了zlib。据我们所知,这是CRS进行的首次付费自动化安全审计实例。
这代表了软件安全审计执行方式的转变。这是确保互联网核心基础设施安全的重要一步。
从无到有的选择
每年,公共、私人和非营利组织在代码审计上花费数万美元。
在典型的两周合作中,安全专业人员收取可观费用进行审计。他们的效率会受到代码量、代码文档和组织方式以及人类固有局限性的限制——会疲劳、会想着休假等。
人类每天只能有效分析复杂C代码有限的小时数。
此外,人类评估员可能在某些可能的缺陷或C语言子集方面有丰富经验,但很难获得完整或近乎完整的知识。我们谈论的是需要15年或更长时间才能获得的专业知识。这种知识水平对非营利组织来说负担不起,在1-2周的评估中也不常见。
让软件来进行审计更有意义。软件不会疲劳。它可以像审计现代、注释良好的代码一样轻松地审计老旧、混淆的代码。软件还可以在每次更新后自动重新审计代码,确保修复正确且不会引入新错误。
Mozilla的SOS计划
8月,作为其安全开源(SOS)基金的一部分,Mozilla委托我们对zlib(一个开源压缩库)进行安全评估。Zlib实际上用于几乎所有需要压缩或解压缩的软件包。您正在阅读本文的多个软件都捆绑了zlib。
它的代码库相对较小,但在这种小规模中隐藏着很多复杂性。首先,由于编译器优化,在机器上运行的代码可能与源代码不完全匹配。一些错误可能由于未定义行为的使用而偶尔发生。其他错误可能只在极其特殊的条件下触发。在像zlib这样经过充分检查的代码库中,剩下的错误可能太微妙,人类在典型的合作中无法发现。
要从人工审计中识别任何特别微妙的错误,Mozilla将不得不花费数万美元。但他们是一个非营利组织,他们还有一系列其他项目需要审计和改进。
优质覆盖,合理价格
自动化使这次合作对Mozilla来说负担得起,对我们来说也可行。他们支付了我们通常对此类工作收费的20%。
我们的自动化评估将Trail of Bits CRS与TrustInSoft的验证软件配对,以识别内存损坏漏洞,创建强调不同程序路径的输入,并识别未来可能导致错误的代码。
阅读我们提交给Mozilla的报告。(它详细介绍了我们的CRS与TrustinSoft的验证程序配合如何以人工审计成本的一小部分发现更多漏洞。)
对于致力于保护互联网核心基础设施的非营利组织来说,这是一个以传统成本的一小部分获得详细评估和优质覆盖的绝佳机会。
如果您喜欢这篇文章,请分享: Twitter LinkedIn GitHub Mastodon Hacker News