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

Sienna Locomotive是一款专为Windows开发者设计的开源模糊测试工具,通过简化配置流程、智能函数定位和崩溃分类功能,让缺乏安全专业知识的开发者也能轻松进行软件漏洞检测。

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

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

模糊测试的使用不足

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

显式测试软件漏洞极其重要。许多开源开发者曾相信"众目睽睽"假说——开源项目因为任何人都可以检查代码而更少受到安全问题影响。但过去几年证明这仅适用于高价值目标,且效果有限。例如,2014年OpenSSL运行在至少三分之二的Web服务器上,但研究人员仍花了两年多时间才发现Heartbleed漏洞。开源软件构成了互联网的如此大部分,我们不能再次依赖这种运气。

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

进入门槛

模糊测试工具使用不足的一个可能原因是它们相对难以使用,特别是在Windows上。WinAFL(事实上的标准)对其能目标的功能有相当严格的要求。如果代码不符合这些约束,WinAFL就无法正常工作。尽管Windows占据75%以上的市场份额,大多数模糊测试工具仍为Unix平台设计,这也无助于情况改善。很容易理解为什么开发者通常不愿设置模糊测试工具来测试他们的Windows软件。

解决方案

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

Sienna Locomotive介绍

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

简单配置

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

强大的函数定位

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

有用的崩溃分类

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

Sienna Locomotive适合您吗?

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

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

立即尝试!

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