
Projet de recherche en sécurité sur le fuzzing de libpng avec OSS-Fuzz. Il comprend l'analyse du corpus initial, des fuzzers personnalisés de lecture/écriture et une preuve de concept pour CVE-2014-9495.
Projet de recherche en sécurité du groupe
À propos du fuzzing : Le fuzzing est une technique de test logiciel automatisé qui fournit des données invalides, inattendues ou aléatoires en entrée d'un programme afin de découvrir des bogues et des vulnérabilités. Le fuzzing guidé par couverture utilise le retour de couverture de code pour explorer intelligemment différents chemins d'exécution.
À propos d'OSS-Fuzz : OSS-Fuzz est le service de fuzzing continu de Google pour les logiciels open-source. Il utilise LibFuzzer et d'autres moteurs de fuzzing pour tester automatiquement des projets open-source critiques et signaler les vulnérabilités.
Ce projet démontre le fuzzing guidé par couverture, l'analyse de couverture de code et l'exploitation de vulnérabilités en utilisant le framework OSS-Fuzz de Google sur la bibliothèque libpng.
Cible : libpng v1.6.48 (fuzzing), v1.5.20 (exploitation)
Pour la méthodologie détaillée et le rapport complet : voir report.pdf
Pour les instructions complètes : voir Instructions.md

Amélioration 1 - Fuzzer de lecture amélioré (submit_improve1)
pngread.c, +73 lignes dans pngtrans.cAmélioration 2 - Fuzzer d'écriture (submit_improve2)

Exploitation réussie d'un dépassement de tampon de tas (heap buffer overflow) dans 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
Consulter les rapports de couverture :
firefox part1/report/w_corpus/linux/index.html
Ce projet de recherche en sécurité a été réalisé en collaboration par :
| Métrique | Avec corpus | Sans corpus | Amélioration |
|---|
| Couverture de lignes | 41.83% | 24.76% | +17.07% |
| Couverture de branches | 35.49% | 21.03% | +14.46% |
| Couverture de fonctions | 50.75% | 34.75% | +16.00% |