使用 Nix 对 PDF 解析器进行模糊测试(第一部分)

主要观点:Fuzz 测试是自动发现软件漏洞的技术,但设置困难,Nix 可消除大部分繁琐工作,能通过单命令启动模糊测试工作流。
关键信息

  • 介绍了 Nix 配置用于模糊测试 PDF 渲染器,找到未修补漏洞,如使用nix run gitlab:mtlynch/fuzz-xpdf命令。
  • 解释了 Fuzz 测试的概念,通过随机生成输入数据测试软件是否崩溃。
  • 说明了 Nix 是类似包管理器和构建工具的复杂工具,可简化从源代码构建的过程。
  • 详细阐述了创建模糊测试工作流的步骤,包括选择模糊测试目标(xpdf)、放置 Nix 样板文件、指定源 tarball、从源代码编译 xpdf 以及使用 honggfuzz 进行编译等。
  • 还提到在开发壳中进行临时模糊测试,以及后续将展示如何自动化完整的模糊测试工作流等内容。
    重要细节
  • Nix 可下载所有工具和依赖项,编译带有适当仪器的 PDF 阅读器,生成测试输入并报告崩溃情况,只需编辑一个文件即可更改模糊测试选项。
  • xpdf 中的pdftotext是有吸引力的模糊测试目标,因其简单且能锻炼复杂的 PDF 解析代码。
  • 在 Nix 中通过flake.nix定义包和应用,解决哈希不匹配问题,指定构建依赖项等。
  • honggfuzz 是 Google 维护的模糊测试工具,通过环境变量指定编译器等。
  • 在开发壳中进行模糊测试时,创建临时目录存储结果,下载示例 PDF 并启动测试运行器等。
阅读 12
0 条评论