devtint/CVE-2026-0073

GitHub: devtint/CVE-2026-0073

针对 Android adbd 无线调试 TLS 认证中 C++ 布尔逻辑缺陷的 PoC 与利用框架,可实现同网段零点击远程 root 权限获取。

Stars: 2 | Forks: 0

# 🔓 CVE-2026-0073:Android adbd 身份验证绕过 [![CVSS 评分](https://img.shields.io/badge/CVSS-8.8-red.svg)](https://nvd.nist.gov/) [![Android 版本](https://img.shields.io/badge/Android-11--15-success.svg)](#) [![交互](https://img.shields.io/badge/Interaction-Zero--Click-blue.svg)](#) ## 📋 概述 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)