掌握模糊测试:Trail of Bits发布全新测试手册章节

本文详细介绍如何将模糊测试技术应用于C/C++和Rust项目,涵盖libFuzzer、AFL++和cargo-fuzz三大工具的安装使用、内存检测技巧(AddressSanitizer)、测试用例编写方法,以及应对不同构建系统的实战案例解析。

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

Trail of Bits最新为测试手册增加的章节是一份全面的模糊测试指南:这是一种通过重复运行带有随机输入的程序来发现软件漏洞的高效低耗方法。

在Trail of Bits,我们不仅依赖标准静态分析。我们会针对每个项目调整方法,精心调校技术以严格测试关键代码段。我们深知开始模糊测试的挑战性——这个领域方法论多样且没有通用解决方案。我们相信将这些知识提炼到手册中将帮助开发者快速轻松地将模糊测试整合到工作流程中,并获得更好结果。

本章专为渴望将模糊测试整合到工作流程中的开发者设计,揭开了模糊测试过程的神秘面纱。面对众多分支和变体的模糊测试工具丛林,很容易迷失方向。我们的指南聚焦于最成熟且广泛使用的模糊测试工具,为您提供获得结果的坚实基础。

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

对于每种语言和技术栈,本章将展示如何使用每种讨论的模糊测试工具发现以下典型漏洞:

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与每种模糊测试工具结合使用。我们详细介绍了如何高效使用模糊测试字典,以及如何编写良好的模糊测试工具。

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

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