
यादृच्छिक eBPF प्रोग्राम उत्पन्न करने और कर्नेल वेरिफायर/रनटाइम व्यवहार को मान्य करने के लिए eBPF फ़ज़र टूलचेन। कवरेज-निर्देशित फ़ज़िंग का समर्थन करता है और खोजे गए CVE को ट्रैक करता है।
Buzzer एक फ़ज़र टूलचेन है जो eBPF फ़ज़िंग रणनीतियाँ लिखने की अनुमति देता है।
एक फ़ज़िंग रणनीति यादृच्छिक eBPF प्रोग्राम उत्पन्न करने और फिर यह सत्यापित करने का एक तरीका है कि उनका कोई अप्रत्याशित व्यवहार न हो।
फ़ज़र चलाने के लिए निम्नलिखित चरणों का पालन करें
bazel स्थापित करें।
clang स्थापित करें।
सही CC और CXX env वेरिएबल सेट करें
export CC=clang
export CXX=clang++
चलाएँ
bazel build :buzzer
Buzzer को रूट के रूप में चलाएँ:
sudo ./bazel-bin/buzzer_/buzzer
या CAP_BPF के साथ:
sudo setcap CAP_BPF=eip bazel-bin/buzzer_/buzzer
./bazel-bin/buzzer_/buzzer
क्या आपको Buzzer का उपयोग करके कोई बढ़िया बग मिला? हमें पुल रिक्वेस्ट के माध्यम से बताएँ! हम इस अनुभाग के अंतर्गत इस फ्रेमवर्क के साथ खोजी गई सभी समस्याओं को एकत्र करना चाहते हैं।
CVE-2023-2163: eBPF वेरिफायर की ब्रांच प्रूनिंग लॉजिक में एक त्रुटि के कारण असुरक्षित पथों का अन्वेषण नहीं किया जा सकता है। असुरक्षित प्रून किए गए पथ वास्तविक पथ होते हैं जो रनटाइम पर लिए जाते हैं, जिससे वेरिफायर को कुछ रजिस्टरों के मानों के बारे में जो लगता है और वास्तव में वे क्या हैं, के बीच बेमेल उत्पन्न होता है। इस बेमेल का दुरुपयोग कर्नेल में मनमानी मेमोरी को पढ़ने/लिखने के लिए किया जा सकता है, भ्रमित रजिस्टरों को मेमोरी ऑपरेशनों के लिए बेस रजिस्टर के रूप में उपयोग करके।
CVE-2024-41003: वेरिफायर की रजिस्टर सीमा ट्रैकिंग में एक बग एक हमलावर को वेरिफायर को यह सोचने में धोखा देने की अनुमति देता है कि एक रजिस्टर का मान 0 है, जबकि रनटाइम पर यह रजिस्टर मान 1 ले सकता है। इसका उपयोग तब कर्नेल की मनमानी मेमोरी रीड/राइट प्राप्त करने और स्थानीय विशेषाधिकार वृद्धि या कंटेनर एस्केप तक ले जाने के लिए किया जा सकता है।