Fuzzing入门笔记(一)

💡 原文中文,约10200字,阅读约需25分钟。
📝

内容提要

本文介绍了Fuzzing中的code coverage统计方法,包括Python中的coverage统计和外部程序的coverage统计。同时介绍了基础Fuzzing的coverage统计和branch coverage的概念。

🎯

关键要点

  • Fuzzing通过自动生成随机输入来测试程序的稳定性,发现bug和安全漏洞。
  • Fuzzing可以分为三种类型:Whitebox、Greybox和Blackbox,分别对应不同的程序知识和测试方式。
  • 根据测试数据的产生方式,Fuzzing可以分为Generation-based和Mutation-based。
  • 动态符号执行(concolic execution)和基于覆盖率的Fuzzing(如AFL)是现代Fuzzing的重要技术。
  • TFB提供了assert断言、Timer模块和timeout机制来辅助Fuzzing测试。
  • Fuzzing的基础架构包括Runner类和Fuzzer类,分别负责运行程序和生成测试数据。
  • Python中的coverage统计对于Fuzzing至关重要,可以通过插桩技术实现。
  • 基础Fuzzing的coverage可以通过记录执行过程中的覆盖情况来分析。
  • 对于C语言程序,可以通过编译时插桩和gcov工具进行coverage统计。
  • Branch coverage通过记录连续执行的语句来分析程序的执行流程,帮助识别哪些分支被执行。
➡️

继续阅读