Apache License 2.0

项目介绍

antonio-morales/Fuzzing101 是一个托管在 GitHub 上的开源项目,采用 Apache License 2.0 许可证,目前获得 3.9k 个 Star、432 次 Fork。

仓库全名
antonio-morales/Fuzzing101
开源许可证
Apache License 2.0
Star 数
3.9k
Fork 数
432
未关闭 Issue
28

README 摘要

Fuzzing-101 Do you want to learn how to fuzz like a real expert, but don't know how to start? If so, this is the course for you! 10 real targets, 10 exercises. Are you able to solve all 10? Structure Exercise No. | Target | CVEs to find | Time estimated | Main topics | Exercise 1 | Xpdf | CVE-2019-13288 | 120 mins | Afl-clang-fast, Afl-fuzz, GDB | Exercise 2 | libexif | CVE-2009-3895, CVE-2012-2836 | 6 hours |…

完整内容见 GitHub 原始 README 或本页 。

常见问题

Fuzzing101 可以免费商用吗?

仓库采用 Apache License 2.0 许可证,可免费使用与修改,商业使用请遵守许可证条款(例如保留版权声明与许可声明)。

如何获取 Fuzzing101 的源码?

可以直接克隆仓库:git clone https://github.com/antonio-morales/Fuzzing101.git;安装与运行步骤见仓库 README。

Fuzzing101 最近还在维护吗?

仓库最近一次更新为 6月16日,当前有 28 个未关闭 Issue;Star 数为 3.9k,可作为社区活跃度的参考。

关于

GitHub 原始描述(英文)

An step by step fuzzing tutorial. A GitHub Security Lab initiative

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

简要分析

热度分
4850
价值分
2491
活跃状态
活跃

README

Fuzzing-101

Do you want to learn how to fuzz like a real expert, but don’t know how to start?

If so, this is the course for you!

10 real targets, 10 exercises. Are you able to solve all 10?

Structure

Exercise No. Target CVEs to find Time estimated Main topics
Exercise 1 Xpdf CVE-2019-13288 120 mins Afl-clang-fast, Afl-fuzz, GDB
Exercise 2 libexif CVE-2009-3895, CVE-2012-2836 6 hours Afl-clang-lto, Fuzz libraries, Eclipse IDE
Exercise 3 TCPdump CVE-2017-13028 4 hours ASan, Sanitizers
Exercise 4 LibTIFF CVE-2016-9297 3 hours Code coverage, LCOV
Exercise 5 Libxml2 CVE-2017-9048 3 hours Dictionaries, Basic parallelization, Fuzzing command-line arguments
Exercise 6 GIMP CVE-2016-4994, Bonus bugs 7 hours Persistent fuzzing, Fuzzing interactive applications
Exercise 7 VLC media player CVE-2019-14776 6 hours Partial instrumentation, Fuzzing harness
Exercise 8 Adobe Reader 8 hours Fuzzing closed-source applications, QEMU instrumentation
Exercise 9 7-Zip CVE-2016-2334 8 hours WinAFL, Fuzzing Windows Applications
Exercise 10 (Final Challenge) Google Chrome / V8 CVE-2019-5847 8 hours Fuzzilli, Fuzzing Javascript engines

Changelog

  • 02/14/2022: Fixed some ‘wget’ typos in Exercise 5
  • 11/25/2021: Exercise 3 updated with some fixes.

Who is the course intended for?

  • Anyone wishing to learn fuzzing basics
  • Anyone who wants to learn how to find vulnerabilities in real software projects.

Requirements

  • All you need for this course is a running Linux system with an internet connection. You will find a suitable VMware image in the exercises.
  • At least basic Linux skills are highly recommended.
  • All the exercises have been tested on Ubuntu 20.04.2 LTS. You can download it from here
  • In this course we’re going to use AFL++, a newer and superior fork of Michał “lcamtuf” Zalewski’s AFL, for solving the fuzzing exercises.

What is fuzzing?

Fuzz testing (or fuzzing) is an automated software testing technique that is based on feeding the program with random/mutated input values and monitoring it for exceptions/crashes.

AFL, libFuzzer and HonggFuzz are three of the most successful fuzzers when it comes to real world applications. All three are examples of Coverage-guided evolutionary fuzzers.

Coverage-guided evolutionary fuzzer

  • Evolutionary: is a metaheuristic approach inspired by evolutionary algorithms, which basically consists in the evolution and mutation of the initial subset (seeds) over time, by using a selection criteria (ex. coverage).

  • Coverage-guided: To increase the chance of finding new crashes, coverage-guided fuzzers gather and compare code coverage data between different inputs (usually through instrumentation) and pick those inputs which lead to new execution paths.

Simplification of the coverage gathering process of a coverage-guided evolutionary fuzzer

Thanks

Thanks for their help:

评论

暂无评论