Repository for materials of "Modern fuzzing of C/C++ Projects" workshop.
当前项目代码仓暂无内容
以下内容由 AI 翻译,如有问题请 点此提交 issue 反馈
libfuzzer-workshop
"现代C/C++项目模糊测试"研讨会材料。
该研讨会的初始版本曾在ZeroNights'16安全会议上展示。
免责声明
本研讨会最初开发于2016年。截至今日(2021年及以后),由于libFuzzer多年来的发展,实践部分可能无法立即正常工作。理论部分仍然是很好的学习资料,但为了实际操作,建议按照最新版的libFuzzer教程进行。
要求
- 2-3小时时间
- 基于Linux的操作系统
- C/C++基础(无需精通,但需要能够阅读、编写和编译C/C++代码)
- 最新版的clang编译器。通过包管理器获取的发行版可能过于老旧,可能无法正常工作(毕竟这是一个“现代”研讨会)。你可以:
- 检出llvm仓库并自己构建。为了方便起见,可以使用checkout_build_install_llvm.sh脚本,已在干净的Ubuntu 16.04上测试过。
- 或者使用预配置的VirtualBox虚拟机,凭据:
fuzzer:zeronights
sudo apt-get install -y make autoconf automake libtool pkg-config zlib1g-dev
模糊测试经验不是必需的。
内容
- 模糊测试简介
- 传统模糊测试示例
- 覆盖指导的模糊测试
- 编写模糊器(简单示例)
- 发现Heartbleed漏洞(CVE-2014-0160)
- 发现c-ares $100,000漏洞(CVE-2016-5180)
- 如何改进你的模糊器
- 对libxml2模糊测试,了解如何优化模糊器和分析性能
- 对libpng模糊测试,学习种子库的重要性和其他知识点
- 对re2模糊测试
- 对pcre2模糊测试
- 铠甲集成与作业任务
大部分示例取自libFuzzer教程和Fuzzer Test Suite。
预备知识
libFuzzer
构建libFuzzer极其简单:
cd libFuzzer
./build.sh
libFuzzer代码位于LLVM的compiler-rt项目内部。
链接
- 单个演示文稿中的所有幻灯片:Modern Fuzzing of C/C++ Projects
- libFuzzer文档:[http://libfuzzer.info][http://libfuzzer.info]
- libFuzzer教程:[http://tutorial.libfuzzer.info][http://tutorial.libfuzzer.info]
- Google Online Security Blog:Chrome组件的进程内引导模糊测试