1 पॉइंट द्वारा GN⁺ 2024-10-07 | 1 टिप्पणियां | WhatsApp पर शेयर करें

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 टिप्पणियां

 
GN⁺ 2024-10-07
Hacker News की राय
  • लिंक किया गया लेख लगभग 11 मिनट में पढ़ा जा सकता है, और golang के approach से इसका अंतर दिलचस्प है

    • golang में fuzzing को test चलाने जितनी आसानी से चलाया जा सकता है, इसलिए किसी खास application या library के हिस्सों को आसानी से target किया जा सकता है
    • यह तरीका कई मौजूदा तकनीकों को अनावश्यक बना देता है
  • fuzzing को और प्रभावी ढंग से guide करने वाली तकनीकों को लेकर जिज्ञासा है

    • सबसे अच्छा तरीका seed corpus देना और बेहतरीन नतीजों की उम्मीद करना लगता है
  • यह हैरानी की बात है कि सूची में Heartbleed नहीं है

    • Heartbleed को reproduce करना बहुत आसान है
  • साझा करने के लिए धन्यवाद वाली राय

    • यह बहुत उपयोगी लगता है