
CVE-2021-3625 - Sample exploits for Zephyr
इस रिपॉजिटरी में CVE-2021-3625 के लिए कुछ उदाहरण एक्सप्लॉइट हैं।
संस्करण 2.5.0 तक (और सहित) सभी Zephyr-आधारित USB उपकरण 65kB तक के पठन की अनुमति देने वाले बफर ओवरफ्लो से ग्रस्त हैं। वास्तविक उपकरण के आधार पर, इसके परिणामस्वरूप एन्क्रिप्शन कुंजियाँ या क्रेडेंशियल्स जैसे संवेदनशील डेटा का रिसाव हो सकता है।
यह समस्या IN दिशा (रीड, होस्ट को) और एक लिखने-विशिष्ट अनुरोध - उदाहरण के लिए set address (0x05) के साथ तैयार किए गए USB नियंत्रण स्थानांतरण अनुरोधों को जारी करके ट्रिगर की जा सकती है। ऐसे मामलों में होस्ट को लिखने की अपेक्षा नहीं की जाती है, इस प्रकार प्रतिक्रिया की लंबाई अपडेट नहीं होती है, जिसके परिणामस्वरूप request->wLength का प्रारंभिक सेट मान होता है। चूँकि wLength उपयोगकर्ता द्वारा नियंत्रित है, इसे 0xffff जैसे मनमाने दो-बाइट मान पर सेट किया जा सकता है, जिसके परिणामस्वरूप 65 किलोबाइट माइक्रोकंट्रोलर मेमोरी का पठन होता है। चूँकि बफर का आकार काफी छोटा है, एक ओवरफ्लो होता है जो हमलावर को बफर सीमा से परे मेमोरी सामग्री निकालने की अनुमति देता है।
एप्लिकेशन लेयर के अलावा, Zephyr USB डिवाइस स्टैक सक्षम के साथ MCUBoot बिल्ड भी प्रभावित होते हैं। इसके अलावा, बफर सीमा से परे मेमोरी पठन के साथ, DFU क्लास का उपयोग बफर ओवरफ्लो लिखना प्राप्त करने के लिए भी शोषण किया जा सकता है।
सर्वोत्तम परिणामों के लिए, डिफ़ॉल्ट 4096 बाइट्स से 0xFFFF (libusb/os/linux_usbfs.h) तक बढ़ाए गए MAX_CTRL_BUFFER_LENGTH आकार के साथ libusb बिल्ड का उपयोग करने की अनुशंसा की जाती है।
सुरक्षा सलाह: https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-c3gr-hgvr-f363