devtint/CVE-2026-0073
GitHub: devtint/CVE-2026-0073
针对 Android adbd 无线调试 TLS 认证中 C++ 布尔逻辑缺陷的 PoC 与利用框架,可实现同网段零点击远程 root 权限获取。
Stars: 2 | Forks: 0
# 🔓 CVE-2026-0073:Android adbd 身份验证绕过
[](https://nvd.nist.gov/)
[](#)
[](#)
## 📋 概述
CVE-2026-0073 是 Android Debug Bridge 守护进程 (`adbd`) 中的一个严重的加密逻辑缺陷,允许同一本地网络上的未经身份验证的攻击者获得**零点击远程 root 权限**。
本仓库包含:
- **`adb_tls_auth_bypass.py`** — 简洁、独立的 STLS/TLS 身份验证绕过 PoC。
- **`main.py`** — 最大化利用框架,具备自动化分析、工件提取和持久化注入功能。
### 加密缺陷
该漏洞存在于 `daemon/auth.cpp` 的 `adbd_tls_verify_cert()` 函数中。当客户端通过 **Wireless ADB (STLS 路径)** 连接时,会进行双向 TLS 1.3 握手。设备使用 OpenSSL 的 `EVP_PKEY_cmp()` 将客户端的公钥与已存储的授权密钥进行比对。
```
// daemon/auth.cpp — The Vulnerable Logic
if (EVP_PKEY_cmp(stored_key, client_key)) {
// EVP_PKEY_cmp returns:
// 1 = keys match
// 0 = keys differ
// -1 = type mismatch (RSA vs EC) ← BUG: truthy in C++
authorized = true;
}
```
- 如果存储的密钥是 **RSA**,而客户端提供的是 **EC P-256** 密钥,`EVP_PKEY_cmp()` 将返回 `-1`(类型不匹配)。
- 在 C/C++ 中,`-1` 会被判定为 `true`。
- `adbd` 的逻辑将此 `-1` 视为**完全匹配**。
- 设备会在不唤醒屏幕或提示受害者的情况下,静默授予 root shell 权限。
## ⚠️ 关键点:STLS 与 AUTH — 端口要求
此漏洞利用**仅适用于 Wireless Debugging 的 STLS 路径**,不适用于传统的 `adb tcpip` 路径。
| 连接模式 | 端口 | 协议 | 是否受影响? |
|---|---|---|---|
| `adb tcpip 5555` (传统) | 5555 (固定) | **AUTH** (RSA 挑战) | ❌ 否 |
| **Wireless Debugging** (Android 11+) | 随机 (30000–50000) | **STLS → TLS 1.3** | ✅ 是 |
### 如何识别正确的端口
1. 在目标设备上:**设置 → 开发者选项 → 无线调试 → 开启**
2. 该屏幕上会显示 IP 地址和**随机端口**(例如 `192.168.1.34:38741`)
3. 每次切换 Wireless Debugging 或设备重新连接 Wi-Fi 时,此端口都会发生变化
### 错提示:“Device responded with AUTH instead of STLS”
这表示您连接到了**传统 ADB TCP 端口**(通常是 5555)。传统路径使用旧的 RSA AUTH 握手——这是 `adbd` 中一段完全不同的代码路径,**不受此 CVE 影响**。您必须改为连接到 Wireless Debugging 端口。
## ⚡ 最大化功能
该框架 (`main.py`) 将核心的 TLS 绕过扩展为一个模块化的后渗透工具包:
- 💻 **交互式 Shell:** 直接落入一个稳定的、持久的 `uid=0(root)` 伪终端。
- 🔍 **自动化分析 (`--profile`):** 立即指纹识别目标操作系统、安全补丁级别、SELinux 强制状态以及用于内部网络横向移动的活动路由表。
- 📂 **工件提取 (`--extract`):** 通过绕过套接字自动渗出高度敏感的系统文件(例如 `/data/misc/adb/adb_keys`、`/system/build.prop`)。
- 🔑 **隐蔽持久化 (`--persist`):** 将伪造的 RSA 公钥注入到目标的授权密钥文件中。一旦注入,即使 CVE 日后被修复,攻击者也能保留永久的、完全通过身份验证的访问权限。
## 🏃 使用说明
1. **安装依赖项:**
pip install cryptography
2. **定位目标:**
在本地子网中找到启用了 **Wireless Debugging** 的 Android 设备。从设备的开发者选项界面中记下**动态端口**。
3. **执行漏洞利用框架:**
# 交互式 Shell (默认)
python main.py
# 单条命令执行
python main.py --cmd "id"
# 自动化系统分析
python main.py --profile
# 隐蔽工件提取
python main.py --extract
# 注入永久后门密钥
python main.py --persist
4. **独立 PoC (最小化):**
python adb_tls_auth_bypass.py --cmd "id; whoami"
## 🔧 故障排除
| 错误 | 原因 | 解决方法 |
|---|---|---|
| `Connection refused` | 端口已关闭 / Wireless Debugging 已关闭 | 开启 Wireless Debugging,使用正确的动态端口 |
| `AUTH instead of STLS` | 连接到了传统 ADB TCP (端口 5555) | 使用 Wireless Debugging 端口,而不是 5555 |
| `SSLV3_ALERT_CERTIFICATE_UNKNOWN` | 设备已**打补丁** (2026 年 5 月及以上) | 目标不易受攻击——修复措施正在生效 |
| `timed out` | 端口已打开但响应不正确 | 验证端口,在设备上重启 Wireless Debugging |
## 🛡️ 缓解措施
- **补丁:** 更新至 **2026 年 5 月**的 Android 安全公告(2026-05-01 或更高版本)。
- **禁用服务:** 在未主动对应用程序进行性能分析时,请保持 **Wireless Debugging** 处于关闭状态。
- **密钥轮换:** 定期在开发者选项中点击“撤销 USB 调试授权”,以从设备密钥库中清除旧的 RSA 密钥。
## ⚖️ 法律免责声明
本仓库严格**仅用于教育、红蓝对抗和授权安全测试目的**。未经授权访问计算机系统是违法行为。作者对滥用此信息的行为不承担任何责任。
标签:adb, adbd, Android安全, CVE-2026-0073, C++安全缺陷, EVP_PKEY_cmp, Nuclei模板, PoC(概念验证), Root权限, TLS握手缺陷, Web报告查看器, Wi-Fi ADB, 安全测试工具, 实时处理, 密码学逻辑错误, 提权漏洞, 无线调试, 漏洞分析, 目录枚举, 移动安全, 网络安全, 路径探测, 身份验证绕过, 远程代码执行(RCE), 逆向工具, 隐私保护, 零点击漏洞(0-click)