
CVE-2026-0073 — Android ADB डेमॉन (adbd) में EVP_PKEY_cmp टाइप कन्फ्यूज़न के माध्यम से TLS प्रमाणीकरण बायपास। EC/Ed25519 कुंजी बेमेल का उपयोग करके WiFi पर अनधिकृत शेल एक्सेस प्राप्त करें। Android 14+ के लिए PoC एक्सप्लॉइट।
Android के ADB डेमॉन (adbd) में एक गंभीर प्रमाणीकरण बाईपास किसी भी हमलावर को स्थानीय नेटवर्क पर उपयोगकर्ता प्राधिकरण के बिना लक्षित डिवाइस पर पूर्ण शेल प्राप्त करने की अनुमति देता है।
यह कमजोरी daemon/auth.cpp में adbd_tls_verify_cert() में मौजूद है, जहाँ EVP_PKEY_cmp() को बूलियन के रूप में उपयोग किया जाता है। जब संग्रहीत कुंजी RSA होती है और प्रस्तुत TLS क्लाइंट प्रमाणपत्र में गैर-RSA कुंजी (EC P-256 या Ed25519) होती है, तो EVP_PKEY_cmp() -1 (टाइप मिसमैच) लौटाता है, जो C/C++ में सत्य (truthy) है, इसलिए authorized = true हो जाता है।
// daemon/auth.cpp में कमजोर कोड पैटर्न
if (EVP_PKEY_cmp(peer_key, stored_key)) { // ← बग: -1 सत्य है!
authorized = true;
}
pip install cryptography
# इंटरैक्टिव शेल
python adb_tls_auth_bypass.py <TARGET_IP> <PORT>
# एकल कमांड निष्पादन
python adb_tls_auth_bypass.py 192.168.1.42 37521 --cmd "id"
# वर्बोज़ मोड (पूर्ण प्रोटोकॉल ट्रेस देखें)
python adb_tls_auth_bypass.py 192.168.1.42 37521 -v --cmd "id"
python adb_tls_auth_bypass.py 192.168.1.42 5555 --key-type ec
python adb_tls_auth_bypass.py 192.168.1.42 5555 --key-type ed25519
डिफ़ॉल्ट रूप से, स्क्रिप्ट स्वचालित रूप से EC P-256 → Ed25519 → EC/TLS 1.2 आज़माती है जब तक कि एक सफल न हो जाए।
हमलावर लक्ष्य (adbd)
│ │
│──── TCP कनेक्ट ──────────────────►│
│──── CNXN (क्लियरटेक्स्ट) ────────────►│
│◄─── STLS (TLS अपग्रेड अनुरोध) ──│
│──── STLS उत्तर ──────────────────►│
│ │
│════ TLS 1.3 हैंडशेक ════════════│
│ (EC P-256 क्लाइंट प्रमाणपत्र प्रस्तुत) │
│ EVP_PKEY_cmp(EC, RSA) → -1 │
│ -1 सत्य है → authorized=true │
│════════════════════════════════════│
│ │
│◄─── CNXN (डिवाइस जानकारी) ──────────│
│──── OPEN "shell:" ───────────────►│
│◄─── OKAY ────────────────────────│
│◄──► WRTE/OKAY (शेल I/O) ──────►│
│ │
[पूर्ण शेल एक्सेस] │
| आवश्यकता | विवरण |
|---|
⚠️ महत्वपूर्ण: RSA कुंजी
/data/misc/adb/adb_keysमें होनी चाहिए, जो USB डिबगिंग पेयरिंग ("Allow USB debugging?" डायलॉग स्वीकार करके) के माध्यम से भरी जाती है। वायरलेस डिबगिंग पेयरिंग (adb pair) कुंजियों को अलग स्थान (adb_known_hosts.pb) में संग्रहीत करती है और यह आवश्यकता को पूरा नहीं करती है।
adb shell getprop ro.build.version.security_patch
निम्नलिखित पर परीक्षण और पुष्टि की गई:
Kernel: 6.1.23-android14-4-00257-g7e35917775b8-ab9964412
Platform: Android 14 (Android Studio Emulator)
इस फोर्क में कई संवर्द्धन शामिल हैं:
select() के बजाय थ्रेडेड I/O का उपयोग करता है-v फ्लैग के साथ विस्तृत प्रोटोकॉल ट्रेसCVE-2026-0073-Android-ADBD-bypass-POC/
├── adb_tls_auth_bypass.py # मुख्य एक्सप्लॉइट स्क्रिप्ट
└── README.md # यह फ़ाइल
यह टूल केवल अधिकृत सुरक्षा परीक्षण और शैक्षिक उद्देश्यों के लिए प्रदान किया गया है। कंप्यूटर सिस्टम तक अनधिकृत पहुँच अवैध है। परीक्षण से पहले हमेशा उचित प्राधिकरण प्राप्त करें। लेखक इस सॉफ़्टवेयर के दुरुपयोग के लिए कोई दायित्व नहीं मानता है।
EVP_PKEY_cmp दस्तावेज़ीकरणयदि इससे आपके शोध में मदद मिली, तो एक ⭐ दें
EVP_PKEY_cmp() रिटर्न | अर्थ | C में सत्य? | परिणाम |
|---|
1 | कुंजियाँ मेल खाती हैं | ✅ | अधिकृत (सही) |
0 | कुंजियाँ भिन्न हैं | ❌ | अस्वीकृत (सही) |
-1 | टाइप मिसमैच | ✅ | अधिकृत (बग) |
| डेवलपर विकल्प | लक्षित डिवाइस पर सक्षम |
| वायरलेस डिबगिंग | सक्षम (या पोर्ट 5555 पर TCP पर ADB) |
| संग्रहीत RSA कुंजी | डिवाइस को कम से कम एक बार USB-पेयर किया गया हो (/data/misc/adb/adb_keys) |
| नेटवर्क एक्सेस | हमलावर को adbd TCP पोर्ट तक पहुँच होनी चाहिए |