Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
d-os-descriptor — CVE-2022-25258 - प्रदर्शन शोषण जो usb gadget's os descriptor handler को लक्षित करता है | Kitploit
उपकरण/GitHubGitHub/szymonh/d-os-descriptor
एम्बेडेड सिस्टम सुरक्षाभेद्यता विश्लेषणशोषणफज़िंगहार्डवेयर सुरक्षाबाइनरी शोषण
GitHubszymonh/d-os-descriptor

d-os-descriptor

CVE-2022-25258 - प्रदर्शन शोषण जो usb gadget's os descriptor handler को लक्षित करता है

रिपॉजिटरी देखें
14 साल पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

d-os-descriptor

सारांश

USB गैजेट उपतंत्र में composite_setup फ़ंक्शन (composite.c) के OS डिस्क्रिप्टर हैंडलिंग अनुभाग में सुरक्षा समस्याएं शामिल हैं। उचित रूप से तैयार किए गए नियंत्रण स्थानांतरण अनुरोध संदेशों के प्रसंस्करण के परिणामस्वरूप नल पॉइंटर डीरेफरेंस या मेमोरी करप्शन के कारण डिवाइस क्रैश हो जाता है।

विवरण

इंटरफ़ेस प्राप्तकर्ता के लिए composite_setup का OS डिस्क्रिप्टर हैंडलिंग अनुभाग निम्नानुसार कार्यान्वित किया गया है।

root@kitploit:~
case USB_RECIP_INTERFACE:
    if (w_index != 0x5 || (w_value >> 8))
        break;
    interface = w_value & 0xFF;
    buf[6] = w_index;
    count = count_ext_prop(os_desc_cfg,
        interface);
    put_unaligned_le16(count, buf + 8);
    count = len_ext_prop(os_desc_cfg,
        interface);
    put_unaligned_le32(count, buf);
    value = w_length;
    if (w_length > 0x0A) {
        value = fill_ext_prop(os_desc_cfg,
                        interface, buf);
        if (value >= 0)
            value = min_t(u16, w_length, value);
}
break;

इंटरफ़ेस चर w_value से प्राप्त होता है और बाद में count_ext_prop, len_ext_prop और fill_ext_prop फ़ंक्शन में usb_configuration->interface सरणी को अनुक्रमित करने के लिए उपयोग किया जाता है। चूँकि c->interface सरणी में MAX_CONFIG_INTERFACES (16) तत्वों का आकार है और इंटरफ़ेस चर को composite_setup के OS डिस्क्रिप्टर हैंडलिंग अनुभाग या कॉल किए गए फ़ंक्शन में मान्य नहीं किया गया है, यह एक हमलावर को c->interface सरणी को वास्तविक सीमाओं से परे अनुक्रमित करने की अनुमति देता है। यदि इंटरफ़ेस चर का मान MAX_CONFIG_INTERFACES से अधिक या उसके बराबर है, तो एंडपॉइंट को स्टॉल किया जाना चाहिए।

कुछ मामलों में, वास्तविक मेमोरी सामग्री के आधार पर, c->interface सरणी से परे अनुक्रमण करने से wLength 0x0A से अधिक होने पर fill_ext_prop के माध्यम से req->buf का बफर ओवरफ्लो हो सकता है। यदि ext_prop->name_len, ext_prop->data_len, 14 और 10 का योग int में ओवरफ्लो हो जाता है, तो count + n >= USB_COMP_EP0_OS_DESC_BUFSIZ शर्त पूरी नहीं होगी, जिससे usb_ext_prop_put_binary में memcpy के माध्यम से ओवरफ्लो की अनुमति मिलती है। फिर भी ऐसी स्थिति की संभावना काफी कम लगती है।

इसके अलावा, फ़ंक्शन count_ext_prop, len_ext_prop और fill_ext_prop में यह सत्यापन गायब है कि c->interface सरणी से प्राप्त *usb_function वास्तव में मान्य है या नहीं, जिसके परिणामस्वरूप नल पॉइंटर डीरेफरेंस होता है। जब प्राप्त usb_function पॉइंटर नल होता है, तो एंडपॉइंट को स्टॉल किया जाना चाहिए।

root@kitploit:~
static int count_ext_prop(struct usb_configuration *c, int interface)
{
	struct usb_function *f;
	int j;

	f = c->interface[interface];
	for (j = 0; j < f->os_desc_n; ++j) {
		struct usb_os_desc *d;

	    if (interface != f->os_desc_table[j].if_id)
	    	continue;
	    d = f->os_desc_table[j].os_desc;
	    if (d && d->ext_compat_id)
	    	return d->ext_prop_count;
    }
return 0;
}

प्रभाव

लिनक्स (और एंड्रॉइड) डिवाइस जो OS डिस्क्रिप्टर समर्थन के साथ USB गैजेट को उजागर करते हैं, एक दुर्भावनापूर्ण होस्ट द्वारा एकल नियंत्रण स्थानांतरण संदेश के माध्यम से मनमाने ढंग से क्रैश किए जा सकते हैं।

CVE

CVE-2022-25258

पैच

वर्णित समस्या को संबोधित करने वाला एक पैच स्वीकार कर लिया गया है और अब समर्थित कर्नेल संस्करणों में उपलब्ध है। अधिक जानकारी के लिए नीचे दिए गए लिंक देखें।

USB: gadget: validate interface OS descriptor requests

टूल डाउनलोड करें