掌握模糊测试:Trail of Bits测试手册新章节全面解析

本文详细介绍了Trail of Bits测试手册中新增的模糊测试章节,涵盖C/C++和Rust项目的模糊测试实践,包括libFuzzer、AFL++和cargo-fuzz等成熟工具的使用方法,以及高级技巧如AddressSanitizer和模糊测试字典的应用。

掌握模糊测试:我们的测试手册新章节

Trail of Bits博客最新发布的测试手册新增章节提供了关于模糊测试的全面指南。模糊测试是一种通过重复运行程序并输入随机数据来发现软件bug的高效、低投入方法。

在Trail of Bits,我们不仅依赖标准静态分析。我们针对每个项目定制方法,精细调整策略来严格模糊测试关键代码段。我们深知开始使用模糊测试的挑战性;这是一个方法论多样且没有通用解决方案的领域。我们相信将我们的知识提炼到这本手册中,将帮助那些希望将模糊测试集成到其方法论中的人快速轻松地实现,并获得更好的结果。

本章节专为渴望将模糊测试集成到工作流程中的开发人员设计,旨在揭开模糊测试过程的神秘面纱。在众多模糊测试工具分支中,每个都有多种变体,很容易迷失方向。我们的指南专注于最经过验证和广泛使用的模糊测试工具,为您提供坚实的基础以获得成果。

本章重点介绍如何对C/C++和Rust项目进行模糊测试。我们描述了如何安装和开始使用三种最成熟的模糊测试工具:libFuzzer、AFL++和cargo-fuzz。我们通过一个C/C++项目示例讨论了模糊测试中的常见挑战。开始模糊测试的一个挑战是没有统一的设置方式;一些开发者使用CMake,而其他使用Autotools或纯Makefiles。我们还将通过几个使用不同构建系统的真实示例来演示如何对实际项目进行模糊测试。

对于每种语言和技术栈,以及整个章节,我们将向您展示如何使用每个讨论的模糊测试工具发现以下示例性bug:

1
2
3
4
5
6
7
8
9
void check_buf(char *buf, size_t buf_len) {
    if(buf_len > 0 && buf[0] == 'a') {
        if(buf_len > 1 && buf[1] == 'b') {
            if(buf_len > 2 && buf[2] == 'c') {
                abort();
            }
        }
    }
}

我们还描述了更高级的技术,比如将AddressSanitizer(一种检测内存损坏bug的内存消毒剂)与每个模糊测试工具结合使用。我们还详细介绍了如何高效使用模糊测试字典,以及如何编写良好的模糊测试harness。

我们的目标是持续更新手册——包括本章节——使其始终成为安全从业者和开发人员在配置、部署和自动化我们在Trail of Bits使用的工具时的关键资源。我们计划保持本章节的更新,以反映模糊测试生态系统的未来变化,并包含最先进的模糊测试技术。

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

页面内容 近期文章 使用Deptective调查您的依赖项 系好安全带,Buttercup,AIxCC的评分回合正在进行中! 让您的智能合约超越私钥风险成熟 Go解析器中意想不到的安全隐患 我们从审查首批DKLs23库中学到了什么 来自Silence Laboratories的23个库 © 2025 Trail of Bits. 使用Hugo和Mainroad主题生成。

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