Fuzzing-101
संरचना
- अभ्यास 1: Xpdf, CVE-2019-13288, 120 मिनट, Afl-clang-fast, Afl-fuzz, GDB
- अभ्यास 2: libexif, CVE-2009-3895, CVE-2012-2836, 6 घंटे, Afl-clang-lto, Fuzz लाइब्रेरी, Eclipse IDE
- अभ्यास 3: TCPdump, CVE-2017-13028, 4 घंटे, ASan, Sanitizers
- अभ्यास 4: LibTIFF, CVE-2016-9297, 3 घंटे, कोड कवरेज, LCOV
- अभ्यास 5: Libxml2, CVE-2017-9048, 3 घंटे, डिक्शनरी, बुनियादी पैरेललाइज़ेशन, कमांडलाइन आर्ग्युमेंट फज़िंग
- अभ्यास 6: GIMP, CVE-2016-4994, बोनस बग, 7 घंटे, persistent fuzzing, इंटरैक्टिव एप्लिकेशन फज़िंग
- अभ्यास 7: VLC मीडिया प्लेयर, CVE-2019-14776, 6 घंटे, partial instrumentation, fuzzing harness
- अभ्यास 8: Adobe Reader, 8 घंटे, closed-source एप्लिकेशन फज़िंग, QEMU instrumentation
- अभ्यास 9: 7-Zip, CVE-2016-2334, 8 घंटे, WinAFL, Windows एप्लिकेशन फज़िंग
- अभ्यास 10 (अंतिम चुनौती): Google Chrome / V8, CVE-2019-5847, 8 घंटे, Fuzzilli, JavaScript इंजन फज़िंग
परिवर्तन लॉग
- 14 फ़रवरी 2022: अभ्यास 5 में 'wget' टाइपो ठीक किया गया
- 25 नवंबर 2021: अभ्यास 3 अपडेट और संशोधित
यह कोर्स किनके लिए है?
- जो फज़िंग की बुनियादी बातें सीखना चाहते हैं
- जो वास्तविक सॉफ़्टवेयर प्रोजेक्ट्स में कमजोरियाँ ढूँढना चाहते हैं
आवश्यकताएँ
- Linux सिस्टम और इंटरनेट कनेक्शन आवश्यक
- बुनियादी Linux कौशल की सिफारिश की जाती है
- सभी अभ्यास Ubuntu 20.04.2 LTS पर टेस्ट किए गए हैं
- इस कोर्स में Michał "lcamtuf" Zalewski के AFL के नए फोर्क AFL++ का उपयोग किया गया है
फज़िंग क्या है?
- fuzz testing (या fuzzing): एक स्वचालित सॉफ़्टवेयर टेस्टिंग तकनीक जिसमें प्रोग्राम को रैंडम/बदले हुए इनपुट दिए जाते हैं और exceptions/crashes की मॉनिटरिंग की जाती है
- AFL, libFuzzer, HonggFuzz वास्तविक एप्लिकेशनों में सफल fuzzers के उदाहरण हैं
- coverage-based evolutionary fuzzer: कोड कवरेज डेटा इकट्ठा और तुलना करके नए execution paths खोजने वाले इनपुट चुनता है
coverage-based evolutionary fuzzer
- evolutionary: evolutionary algorithm से प्रेरित metaheuristic approach, जो शुरुआती subset (seed) के evolution और mutation के माध्यम से नए crashes खोजता है
- coverage-based: कोड कवरेज डेटा इकट्ठा और तुलना करके नए execution paths खोजने वाले इनपुट चुनता है
आभार
- मदद करने वाले लोग: Xavier RENE-CORAIL, Alan Vivona, Jason White, Octavio Gianatiempo, van Hauser, Marc Poulhiès, Xu Hanyu, tclan126, epi052, Jeremias Gomes
संपर्क
- अगर आपको मदद चाहिए या कोई सुझाव है, तो GitHub Security Lab Slack के
#fuzzing चैनल से जुड़ें
GN⁺ का सार
- यह कोर्स फज़िंग की बुनियादी अवधारणाएँ सीखने और वास्तविक सॉफ़्टवेयर में कमजोरियाँ खोजने में उपयोगी है
- AFL++ जैसे टूल्स का उपयोग करके विभिन्न वास्तविक उदाहरणों के माध्यम से फज़िंग तकनीक सीखी जा सकती है
- फज़िंग सॉफ़्टवेयर की स्थिरता और सुरक्षा मजबूत करने में महत्वपूर्ण भूमिका निभाती है, और यह कोर्स इसके लिए एक व्यावहारिक दृष्टिकोण प्रदान करता है
- समान कार्यक्षमता वाले टूल्स में libFuzzer और HonggFuzz शामिल हैं
1 टिप्पणियां
Hacker News की राय
लिंक किया गया लेख लगभग 11 मिनट में पढ़ा जा सकता है, और golang के approach से इसका अंतर दिलचस्प है
fuzzing को और प्रभावी ढंग से guide करने वाली तकनीकों को लेकर जिज्ञासा है
यह हैरानी की बात है कि सूची में Heartbleed नहीं है
साझा करने के लिए धन्यवाद वाली राय