用户友好的模糊测试工具:Sienna Locomotive

本文介绍了Sienna Locomotive,一款专为Windows开发者设计的开源模糊测试工具。它通过简化配置、智能函数定位和实用的崩溃分类功能,降低了模糊测试的使用门槛,帮助开发者更高效地发现软件漏洞。

用户友好的模糊测试工具:Sienna Locomotive

模糊测试是发现软件漏洞的有效方法,但许多开发者并未使用它。今天我们希望通过发布Sienna Locomotive来改变这一现状,这是一款面向Windows的开源模糊测试工具,强调可用性。Sienna Locomotive旨在让安全专业知识有限的开发者也能轻松进行模糊测试。其用户导向的特性使得配置、运行和结果解读都变得简单。

模糊测试未被充分利用

在Trail of Bits,我们每天使用最先进的程序分析工具,但即使这些工具也无法替代随机模糊测试的漏洞发现潜力。

显式测试软件漏洞至关重要。许多开源开发者曾相信“众目睽睽”假说——开源项目不易受安全问题影响,因为任何人都可以搜索代码中的漏洞。过去几年表明,这仅适用于高价值目标,且能力有限。例如,2014年OpenSSL运行在至少三分之二的Web服务器上,但研究人员仍花了两年多时间才发现Heartbleed漏洞。开源软件构成了互联网的绝大部分,我们不能再次依赖这种运气。正如谷歌在宣布OSS-Fuzz时尖锐指出的:“开源基础必须稳定、安全、可靠,因为裂缝和弱点会影响所有基于它构建的人。”

我们自问:为什么开发者不模糊测试自己的软件?我们能做些什么来改变这一现状?

进入门槛

模糊测试工具未被使用的一个可能原因是它们相对难以使用,尤其是在Windows上。WinAFL(事实上的标准)尤其对目标函数有相当严格的要求。如果您的代码不符合这些约束,WinAFL将无法正常工作。尽管Windows拥有75%以上的市场份额,但大多数模糊测试工具是为Unix平台设计的,这无助于解决问题。很容易理解为什么开发者通常不愿设置模糊测试工具来测试他们的Windows软件。

该怎么办?

我们相信,安全工具只有在实际使用时才能成功。提高代码覆盖率或增加每秒执行次数的模糊测试技术几乎是每个安全会议的新研究主题,但如果代码在架子上积灰,这些改进就毫无意义。我们将此视为改善安全状况的机会:与其构建更智能或更快的模糊测试工具,不如构建一个进入门槛更低的模糊测试工具。

介绍Sienna Locomotive

为了解决这些问题,我们设计了Sienna Locomotive,具备三个特性,使模糊测试尽可能无痛。

简单配置

我们希望Sienna Locomotive可用于测试各种软件,因此我们让开发者能够轻松地将模糊测试工具定制到他们的特定应用程序。新目标只需配置可执行文件路径和命令行字符串即可。除了为不自行退出的应用程序设置超时外,用户需要配置的设置非常少。

演示视频中配置Fuzzgoat应用程序的示例。

强大的函数定位

开发者不必挑剔可以定位哪些函数,也不必修改二进制文件以定位函数进行模糊测试。Sienna Locomotive运行目标应用程序一次,扫描接受用户输入的函数(如ReadFile或fread),并允许开发者选择单个函数调用来定位。这在模糊测试进行增量读取的程序时特别有用,因为它允许用户仅模糊测试文件的特定部分。

内置Windows实用程序的示例函数定位窗口。

有用的崩溃分类

模糊测试工具会产生大量严重程度不同的崩溃。您希望首先调试最关键的崩溃,但如何知道从哪里开始?Breakpad和!exploitable等工具分析崩溃程序以估计崩溃的严重程度,这有助于开发者决定首先调试哪些崩溃。9月,我们开源了Winchecksec,这是Sienna Locomotive的一个组件,为我们的分类系统提供支持。Sienna Locomotive结合了Breakpad和!exploitable使用的启发式方法的重新实现,并增强了来自Winchecksec的信息和自定义污点跟踪器,以估计每个崩溃的严重程度。这有助于开发者优先调试和修复哪些崩溃。

包含分类崩溃信息的导出目录。

Sienna Locomotive适合您吗?

如果您认为自己更像Windows开发者而非安全专家,Sienna Locomotive可能是适合您的工具。通过相对最小的努力,它可以帮助您测试代码对抗比您编写单元测试所能覆盖的更大范围的变异输入。根据您程序的结构,您还可以通过仅模糊测试新实现的功能来提高开发期间的测试效率。

Sienna Locomotive为了可用性做出了一些性能权衡。如果您更关心测试用例吞吐量而非可用性,或者您正在Chrome中寻找漏洞并需要每秒执行数千次迭代,Sienna Locomotive不适合您。

尝试一下!

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

页面内容 模糊测试未被充分利用 进入门槛 该怎么办? 介绍Sienna Locomotive 简单配置 强大的函数定位 有用的崩溃分类 Sienna Locomotive适合您吗? 尝试一下! 近期文章 我们构建了MCP一直需要的安全层 利用废弃硬件中的零日漏洞 Inside EthCC[8]:成为智能合约审计员 使用Vendetect大规模检测代码复制 构建安全消息传递很难:对Bitchat安全辩论的 nuanced 看法 © 2025 Trail of Bits。 使用Hugo和Mainroad主题生成。

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