TP-Link Kasa Spot EC71 安全漏洞与固件 2.4.1 修复方案
TP-Link Kasa Spot EC71 安全漏洞与固件 2.4.1 修复方案
TP-Link 已修复 Kasa Spot EC71 室内摄像机中的多个关键安全漏洞,这些漏洞曾导致精确的家庭 GPS 坐标泄露、使用全量设备通用的加密密钥以及不安全地存储用户凭据。这些问题被追踪为 CVE-2026-9770 和 CVE-2026-13230,已在固件版本 2.4.1 中得到解决。
未经身份验证的 GPS 泄露 (CVE-2026-13230)
向端口 9999 发送单个未经身份验证的 UDP 数据包即可泄露设备所有者的精确家庭 GPS 坐标和硬件指纹。 该漏洞允许本地网络上的任何攻击者检索亚米级的经纬度数据,以及唯一的硬件标识符 (oemId, hwId, deviceId, mac)、用户分配的设备别名和固件版本。
技术细节
- 触发方式:向 UDP 端口 9999 发送负载
{"system":{"get_sysinfo":{}}}。 - 加密方式:响应内容受一个简单的 XOR 密码保护,Wireshark 可以将其原生解码为明文。
- 数据来源:GPS 坐标是在账户创建期间从移动设备获取并永久存储在设备的固件中 (
config/location)。 - 协议历史:该协议的未经身份验证特性自 2016 年以来就有记录,且早在 2020 年 8 月,其他 TP-Link 摄像机型号(例如 KC100)也报告过相同的 GPS 泄露问题。
隐私与合规性影响
无论用户是否启用了“Geofencing”功能,精确位置数据的收集和广播都会发生。这与 TP-Link 自身的 Kasa 隐私政策相抵触,该政策规定只有在启用 Geofencing 时才会收集精确位置(经纬度)。
加密失败与凭据窃取 (CVE-2026-9770)
Kasa Spot EC71 使用了全量设备通用的 RSA 私钥,并使用未加盐的 MD5 哈希值存储全局 TP-Link ID 凭据。 这些失败为整个 TP-Link 生态系统的完整账户接管提供了路径。
全量设备通用的 RSA 密钥
固件 v2.3.26 包含两组全量设备通用的 RSA 密钥/证书对。所有运行该固件版本的设备使用的 2048 位 RSA 私钥是完全相同的。攻击者如果从单个设备的 SPI flash 中提取该密钥,则有可能拦截或伪造整个已部署设备群的流量。
不安全的凭据存储
用户云端账户凭据 (TP-Link ID) 被存储在 config/account 中,形式为未加盐的 MD5 哈希值,且电子邮件地址以明文形式存储。由于 TP-Link ID 在所有产品(包括 Tapo smart locks 和 Deco mesh 系统)中都是全局通用的,因此通过彩虹表破解这些简单的哈希值可以实现跨域账户接管。
二级市场攻击路径
在固件 2.3.26 上恢复出厂设置的设备无法清除敏感的用户数据,使得新用户可以恢复前任所有者的身份和位置。
购买二手 EC71 的攻击者可以执行以下攻击链:
- 位置恢复:在设置过程中连接到设备的 soft AP,并向端口 9999 发送 UDP 数据包以检索前任所有者的精确家庭 GPS 坐标。
- 凭据提取:使用 SPI flash 编程器从 flash 存储中提取 TP-Link ID 电子邮件(明文)和 MD5 密码哈希值。
- 账户接管:破解 MD5 哈希以获取密码,并登录任何 TP-Link 平台(Kasa, Tapo, Deco, VIGI)。
- 关联分析:使用恢复的 GPS 坐标将受损账户与物理居住地址进行关联。
修复方案与固件验证
所有主要漏洞均已在固件版本 2.4.1 中得到修复。
- GPS 泄露:端口 9999 不再响应未经身份验证的
get_sysinfo请求。Kasa app 现在使用通过 UDP 广播的公共 RSA 密钥进行身份验证发现。 - RSA 密钥:移除了全量设备通用的证书。设备现在使用通过 NOC 证书基础设施配置的单设备专用 EC 密钥。
- 凭据存储:通过
check_default_config例程实现了凭据存储的静态加密。 - 安全更新:mbedTLS 从版本 2.6.0 升级至 2.28.1。
披露与分级处理分析
自 2026 年 1 月 5 日开始的协调披露过程揭示了显著的分级处理缺陷。研究人员指出,厂商的回复(日期为 2026 年 5 月 29 日)引用了一个在报告的负载中并不存在的 MD5 哈hash值字段,这表明该项发现并未得到审查。此外,一个 beta 版固件版本 (v2.4.00) 导致测试设备永久性损坏(bricked),需要通过硬件层面的 SPI reflashing 才能恢复。
"在 TP-Link Kasa 摄像机上进行的为期六个月的协调披露过程,最终导致了两个 CVE,一次分级处理失败(厂商描述了一个在报告的负载中并不存在的漏洞,描述不准确),一个导致测试设备永久损坏的 beta 版补丁,以及一个无法清除前任所有者数据的出厂设置。" — Christopher Childress (BadChemical)