使用 LibAFL 扩展 Ruzzy 笔记

使用 LibAFL 扩展 Ruzzy

本文详细介绍了将 LibAFL 集成到 Ruzzy(一种 Ruby 模糊测试工具)的过程。作者首先强调了 LibAFL 的优势,并表达了用其替换 libFuzzer 的意图。随后,作者在 Dockerfile 中构建了 LibAFL 的 libFuzzer 库,并对 Ruzzy 的构建流程进行了小幅修改,以便通过环境变量使用 LibAFL。在链接阶段出现了一个问题:".preinit_array 段不允许在 DSO 中使用”,为此需要改用 LLVM 链接器(lld)而非 GNU ld 来解决该错误。作者相应地修改了 Dockerfile 和 extconf.rb 以指定链接器。在解决构建问题后,作者尝试运行模糊测试器,但出现了"No maps available; cannot fuzz!"的错误,这表明 SanitizerCoverage 初始化存在问题。作者计划进一步探索并解决此问题。最终,作者打算通过引入 Cargo 特性来阻止 .preinit_array 段,从而在上游提出一个恰当的修复方案。文章最后聚焦于运行模糊测试器,并展望了下一步解决 sanitization 问题的计划。