libfuzzer-workshop
"सी/सी++ परियोजनाओं के आधुनिक फ़ज़िंग" कार्यशाला की सामग्री।
कार्यशाला का पहला संस्करण ZeroNights'16 सुरक्षा सम्मेलन में प्रस्तुत किया गया था।
अस्वीकरण
यह कार्यशाला मूल रूप से 2016 में विकसित की गई थी। आज (2021 और उसके बाद) के अनुसार, कार्यशाला का व्यावहारिक पक्ष तुरंत काम नहीं कर सकता है, क्योंकि libFuzzer वर्षों में काफी विकसित हुआ है। कार्यशाला का सैद्धांतिक भाग अभी भी अच्छी शिक्षण सामग्री है, लेकिन व्यावहारिक पाठों के लिए [libFuzzer ट्यूटोरियल] के सबसे हालिया संस्करण का पालन करने की अनुशंसा की जाती है।
आवश्यकताएँ
- आपके समय के 2-3 घंटे
- लिनक्स-आधारित ओएस
- सी/सी++ अनुभव (कुछ खास नहीं, लेकिन आपको सी/सी++ कोड पढ़ने, लिखने और संकलित करने में सक्षम होना चाहिए)
- clang कंपाइलर का एक हालिया संस्करण। पैकेज मैनेजरों से वितरण बहुत पुराने हैं और सबसे अधिक काम नहीं करेंगे (कार्यशाला को "आधुनिक" कहा जाता है, है ना?), आपके पास दो विकल्प हैं:
- llvm रिपॉजिटरी को चेकआउट करें और इसे स्वयं बनाएं। इसे आसान बनाने के लिए, checkout_build_install_llvm.sh स्क्रिप्ट का उपयोग करने में संकोच न करें, इसका परीक्षण साफ Ubuntu 16.04 पर किया गया है
- एक VirtualBox VM कार्यशील वातावरण के साथ उपलब्ध है, क्रेडेंशियल्स:
fuzzer:zeronights
sudo apt-get install -y make autoconf automake libtool pkg-config zlib1g-dev
फ़ज़िंग अनुभव आवश्यक नहीं है।
विषय-सूची
- फ़ज़ परीक्षण का परिचय
- पारंपरिक फ़ज़िंग का एक उदाहरण
- कवरेज-निर्देशित फ़ज़िंग
- फ़ज़र लिखना (सरल उदाहरण)
- हार्टब्लीड (CVE-2014-0160) ढूँढना
- c-ares $100,000 बग (CVE-2016-5180) ढूँढना
- अपने फ़ज़र को कैसे सुधारें
- libxml2 को फ़ज़ करना, फ़ज़र को सुधारने और प्रदर्शन का विश्लेषण करने का तरीका सीखना
- libpng को फ़ज़ करना, सीड कॉर्पस और अन्य चीजों का महत्व सीखना
- re2 को फ़ज़ करना
- pcre2 को फ़ज़ करना
- क्रोमियम एकीकरण और गृहकार्य असाइनमेंट
अधिकांश उदाहरण [libFuzzer ट्यूटोरियल] और Fuzzer Test Suite से लिए गए हैं।
पूर्वापेक्षाएँ
libFuzzer
libFuzzer बनाना बहुत आसान है:
cd libFuzzer
Fuzzer/build.sh
libFuzzer रिपॉजिटरी LLVM के compiler-rt प्रोजेक्ट के अंदर पाई जा सकती है।
लिंक्स