
Sicherheitsforschungsprojekt zum Fuzzing von libpng mit OSS-Fuzz. Beinhaltet Seed-Corpus-Analyse, benutzerdefinierte Lese-/Schreib-Fuzzer und einen Proof-of-Concept-Exploit für CVE-2014-9495.
Gruppen-Sicherheitsforschungsprojekt
Über Fuzzing: Fuzzing ist eine automatisierte Softwaretesttechnik, die ungültige, unerwartete oder zufällige Daten als Eingaben für ein Programm bereitstellt, um Fehler und Schwachstellen zu entdecken. Abdeckungsgesteuertes Fuzzing nutzt Codeabdeckungsfeedback, um intelligent verschiedene Ausführungspfade zu erkunden.
Über OSS-Fuzz: OSS-Fuzz ist Googles kontinuierlicher Fuzzing-Dienst für Open-Source-Software. Er verwendet LibFuzzer und andere Fuzzing-Engines, um automatisch kritische Open-Source-Projekte zu testen und Schwachstellen zu melden.
Dieses Projekt demonstriert abdeckungsgesteuertes Fuzzing, Codeabdeckungsanalyse und Schwachstellenausnutzung unter Verwendung von Googles OSS-Fuzz-Framework auf der libpng-Bibliothek.
Ziel: libpng v1.6.48 (Fuzzing), v1.5.20 (Ausnutzung)
Für detaillierte Methodik und vollständigen Bericht: Siehe report.pdf
Für vollständige Anweisungen: Siehe Instructions.md

Verbesserung 1 - Erweiterter Read-Fuzzer (submit_improve1)
pngread.c, +73 Zeilen in pngtrans.cVerbesserung 2 - Write-Fuzzer (submit_improve2)

Erfolgreiche Ausnutzung eines Heap-Pufferüberlaufs in libpng v1.5.20:
part4/run.poc.sh├── part1/ # Seed corpus impact analysis
│ ├── run.w_corpus.sh # Run with seed corpus
│ ├── run.w_o_corpus.sh # Run without seed corpus
│ └── report/ # Coverage reports
├── part3/ # Custom fuzzer improvements
│ ├── improve1/ # Enhanced read fuzzer
│ └── improve2/ # New write fuzzer
└── part4/ # CVE-2014-9495 exploitation
├── run.poc.sh # Run exploit
└── write_exploit.c # PoC code
# Part 1: Fuzzing experiments (4 hours each)
cd part1
./run.w_corpus.sh # or ./run.w_o_corpus.sh
# Part 3: Test improvements (4 hours each)
cd part3/improve1 && ./run.improve1.sh
cd part3/improve2 && ./run.improve2.sh
# Part 4: Exploit CVE
cd part4 && ./run.poc.sh
Abdeckungsberichte anzeigen:
firefox part1/report/w_corpus/linux/index.html
Dieses Sicherheitsforschungsprojekt wurde gemeinsam abgeschlossen von:
| Metrik | MIT Korpus | OHNE Korpus | Verbesserung |
|---|
| Zeilenabdeckung | 41.83% | 24.76% | +17.07% |
| Zweigabdeckung | 35.49% | 21.03% | +14.46% |
| Funktionsabdeckung | 50.75% | 34.75% | +16.00% |