Fuzzing-101
Struktur
- Latihan 1: Xpdf, CVE-2019-13288, 120 menit, Afl-clang-fast, Afl-fuzz, GDB
- Latihan 2: libexif, CVE-2009-3895, CVE-2012-2836, 6 jam, Afl-clang-lto, pustaka fuzz, Eclipse IDE
- Latihan 3: TCPdump, CVE-2017-13028, 4 jam, ASan, Sanitizers
- Latihan 4: LibTIFF, CVE-2016-9297, 3 jam, code coverage, LCOV
- Latihan 5: Libxml2, CVE-2017-9048, 3 jam, kamus, paralelisasi dasar, fuzzing argumen command line
- Latihan 6: GIMP, CVE-2016-4994, bug bonus, 7 jam, fuzzing persisten, fuzzing aplikasi interaktif
- Latihan 7: VLC media player, CVE-2019-14776, 6 jam, instrumentasi parsial, harness fuzzing
- Latihan 8: Adobe Reader, 8 jam, fuzzing aplikasi closed-source, instrumentasi QEMU
- Latihan 9: 7-Zip, CVE-2016-2334, 8 jam, WinAFL, fuzzing aplikasi Windows
- Latihan 10 (Tantangan akhir): Google Chrome / V8, CVE-2019-5847, 8 jam, Fuzzilli, fuzzing JavaScript engine
Log perubahan
- 14 Februari 2022: memperbaiki typo 'wget' di Latihan 5
- 25 November 2021: pembaruan dan perbaikan pada Latihan 3
Untuk siapa kursus ini?
- Orang yang ingin mempelajari dasar-dasar fuzzing
- Orang yang ingin menemukan kerentanan dalam proyek perangkat lunak nyata
Persyaratan
- Memerlukan sistem Linux dan koneksi internet
- Disarankan memiliki keterampilan Linux dasar
- Semua latihan diuji pada Ubuntu 20.04.2 LTS
- Kursus ini menggunakan AFL++, fork baru dari AFL buatan Michał "lcamtuf" Zalewski
Apa itu fuzzing?
- Fuzz testing (atau fuzzing): teknik pengujian perangkat lunak otomatis yang memberikan input acak/termutasi ke program dan memantau exception/crash
- AFL, libFuzzer, HonggFuzz adalah contoh fuzzer yang berhasil pada aplikasi nyata
- Coverage-guided evolutionary fuzzer: memilih input yang menemukan jalur eksekusi baru dengan mengumpulkan dan membandingkan data code coverage
Coverage-guided evolutionary fuzzer
- Evolusioner: pendekatan metaheuristik yang terinspirasi dari algoritme evolusi, yang menemukan crash baru melalui evolusi dan mutasi subset awal (seed)
- Berbasis coverage: memilih input yang menemukan jalur eksekusi baru dengan mengumpulkan dan membandingkan data code coverage
Ucapan terima kasih
- Orang-orang yang membantu: Xavier RENE-CORAIL, Alan Vivona, Jason White, Octavio Gianatiempo, van Hauser, Marc Poulhiès, Xu Hanyu, tclan126, epi052, Jeremias Gomes
Kontak
- Jika memerlukan bantuan atau memiliki saran, bergabunglah ke channel
#fuzzing di GitHub Security Lab Slack
Ringkasan GN⁺
- Kursus ini berguna untuk mempelajari konsep dasar fuzzing dan menemukan kerentanan pada perangkat lunak nyata
- Dengan menggunakan alat seperti AFL++, Anda dapat mempelajari teknik fuzzing melalui berbagai kasus nyata
- Fuzzing berperan penting dalam memperkuat stabilitas dan keamanan perangkat lunak, dan kursus ini menawarkan pendekatan praktis untuk itu
- Alat dengan fungsi serupa mencakup libFuzzer dan HonggFuzz
1 komentar
Opini Hacker News
Tulisan yang ditautkan adalah bacaan sekitar 11 menit, dan perbedaan dengan pendekatan golang terasa menarik
Ada rasa penasaran tentang teknik untuk memandu fuzzing agar lebih efektif
Mengejutkan bahwa Heartbleed tidak ada dalam daftar
Ada pendapat yang berterima kasih karena telah membagikannya