Honggfuzz
सुरक्षा-केंद्रित, फीडबैक-संचालित, विकासवादी फ़ज़र।
Honggfuzz एक सामान्य-उद्देश्य वाला फ़ज़र है जो बग खोजने के लिए कोड कवरेज (सॉफ़्टवेयर और हार्डवेयर-आधारित) का उपयोग करता है। यह मल्टी-प्रोसेस, मल्टी-थ्रेडेड है, और अत्यधिक गति के लिए पर्सिस्टेंट फ़ज़िंग का समर्थन करता है।
मुख्य विशेषताएँ
- तेज़: मल्टी-प्रोसेस और मल्टी-थ्रेडेड इंजन, पूर्ण CPU क्षमता को अनलॉक करता है।
- पर्सिस्टेंट फ़ज़िंग: 1M/सेकंड तक की पुनरावृत्ति गति के साथ API का सीधे इन-प्रोसेस परीक्षण करें।
- फीडबैक-संचालित: इनपुट विकसित करने के लिए हार्डवेयर (Intel BTS/PT) और सॉफ़्टवेयर कोड कवरेज का उपयोग करता है।
- आसान: खाली कॉर्पस के साथ शुरू करके स्वचालित रूप से एक मान्य इनपुट सेट बना सकता है।
- गहन निगरानी: अपहृत सिग्नल और छिपे क्रैश का पता लगाने के लिए निम्न-स्तरीय API (
ptrace) का उपयोग करता है।
- व्यापक समर्थन: Linux, macOS, Android, NetBSD, FreeBSD, और Windows (Cygwin)।
इंस्टॉलेशन
निर्भरताएँ
Linux (Ubuntu/Debian)
sudo apt-get install binutils-dev libunwind-dev libblocksruntime-dev clang
macOS
Xcode (10.8+) और libblocksruntime की आवश्यकता है।
बिल्ड
make
# Compilation wrappers are created in hfuzz_cc/
उपयोग
1. टारगेट कंपाइल करें
स्वचालित रूप से इंस्ट्रूमेंटेशन जोड़ने के लिए दिए गए कंपाइलर रैपर का उपयोग करें:
# C code
./hfuzz_cc/hfuzz-clang -o my_target my_target.c
# C++ code
./hfuzz_cc/hfuzz-clang++ -o my_target my_target.cpp
2. फ़ज़र चलाएँ
इसे एक इनपुट कॉर्पस डायरेक्टरी (खाली हो सकती है) और अपनी बाइनरी की ओर इंगित करें:
# Basic run
./honggfuzz -i input_dir/ -- ./my_target ___FILE___
# Persistent mode (faster)
./honggfuzz -P -i input_dir/ -- ./my_target
नोट: ___FILE___ honggfuzz द्वारा उत्पन्न इनपुट फ़ाइलनाम के लिए एक प्लेसहोल्डर है।
उन्नत उदाहरणों (Apache, OpenSSL, BIND, आदि) के लिए, examples/ डायरेक्टरी देखें।
विस्तृत विकल्पों के लिए USAGE.md देखें।
ट्रॉफियाँ
Honggfuzz ने महत्वपूर्ण सॉफ़्टवेयर में प्रमुख सुरक्षा कमज़ोरियाँ खोजी हैं।
HTTP और सर्वर
- Apache HTTPD:
- CVE-2017-7659 (mod_http2 रिमोट क्रैश)
- CVE-2017-9789 (यूज़-आफ्टर-फ्री)
- CVE-2018-1301, CVE-2018-1302, CVE-2018-1303
- OpenSSH: प्री-ऑथ रिमोट क्रैश (commit 28652bca)
- BIND: कई बग
- NGINX Unit: इनफ़िनिट लूप
- ProFTPD: CVE-2019-18217 (DoS)
- Samba: CVE-2019-14907, CVE-2020-10745, CVE-2021-20277
क्रिप्टोग्राफ़ी और SSL
- OpenSSL:
- CVE-2016-6309 (क्रिटिकल, संभावित RCE)
- CVE-2015-1789, CVE-2016-7054, CVE-2017-3731
- LibreSSL: कई क्रैश और अमान्य फ्री
- BoringSSL: अनइनिशियलाइज़्ड मेमोरी का उपयोग
- Crypto++: CVE-2016-9939 (रिमोट DoS)
भाषाएँ और इंटरप्रेटर
- PHP: WDDX बग, सामान्य इंटरप्रेटर क्रैश
- Python/Ruby: इंटरप्रेटर बग
- Rust:
regex, h2, sleep-parser, lewton में पैनिक/सुरक्षा समस्याएँ
- Perl: कई इंटरप्रेटर क्रैश
मीडिया और फ़ॉर्मेट
- FreeType 2: CVE-2010-2497 से CVE-2010-2527 (7+ CVE)
- LibTIFF: कई बग
- LibJPEG/Turbo: कई बग
- VLC: डबल-फ्री RCE
- Adobe Flash: CVE-2015-0316
- ImageIO (iOS/macOS): कई सुरक्षा समस्याएँ (Project Zero)
- LibreOffice: मेमोरी करप्शन
सिस्टम और उपयोगिताएँ
- Systemd: honggfuzz द्वारा परीक्षित
- fwupd: 17+ बग मिले
- TCPDump: कई बग
- Rsyslog: कई बग
(सैकड़ों और के लिए OSS-Fuzz देखें)
Honggfuzz का उपयोग करने वाले प्रोजेक्ट
- Google OSS-Fuzz: ओपन सोर्स सॉफ़्टवेयर के लिए निरंतर फ़ज़िंग।
- Android: Android सुरक्षा टीम द्वारा उपयोग किया जाता है।
- Rust: Rust कोड की फ़ज़िंग के लिए
honggfuzz-rs क्रेट।
- Bitcoin Core: फ़ज़िंग इंफ्रास्ट्रक्चर।
- Apache HTTP Server: CI फ़ज़िंग।
- Systemd: CI फ़ज़िंग।
- Cifasis QuickFuzz
- Mozilla FuzzOS
लाइसेंस
Apache License 2.0।
यह Google का आधिकारिक उत्पाद नहीं है