利用废弃硬件中的零日漏洞
我们成功在DistrictCon首届Junkyard竞赛中利用了两款已停产的网络设备,获得了"最具创新性利用技术"亚军。我们的漏洞利用链展示了生命周期结束硬件为何会带来持续安全风险:当制造商停止发布更新时,未修补的漏洞就像化石一样被冻结在时间中,成为攻击者的完美目标。
我们利用的两款设备——Netgear WGR614v9路由器和BitDefender Box V1——都是设计用于保护家庭网络的相当流行的设备。但由于两者都已多年没有更新,我们能够从本地网络完全远程利用它们。

随着第二届DistrictCon Junkyard竞赛宣布将于2026年初举行,我们想分享第一次竞赛的经验和研究。完整分析可在Trail of Bits漏洞利用仓库中获取,供对完整技术细节感兴趣的读者查阅。
设备分析与固件提取
Netgear设备:我们拆卸了设备并识别了调试接口、数据存储芯片和SOC。由于Netgear在线提供固件,我们直接下载而不是自行提取。我们使用binwalk和unblob递归解包固件,运行端口扫描以识别有趣的网络服务,并登录串行控制台检查运行进程、面向LAN的服务、CPU规格、内核版本和启用的缓解措施。我们最初查看了httpd,但随后转向了upnpd。
Bitdefender Box V1:我们找到了串口,但shell被锁定。我们通过SPI闪存芯片成功提取固件,并尝试通过逆向工程更新机制获取最新版本,但更新服务器已离线。由于固件包含在APK中,我们通过抓取APK镜像网站找到了我们认为的最新版本。在没有设备shell的情况下,我们使用QEMU用户模式在本地模拟httpd二进制文件进行动态测试。
利用Netgear路由器的UPnP
Netgear WGR614v9路由器运行基于MIPS32的系统,具有多个网络服务。连接到其UART接口(板上暴露为"JP1"的串行调试端口)后,我们在启动过程中获得了低级系统访问权限。

我们专注于通用即插即用服务:这是一个旨在简化网络上设备发现和配置的服务。UPnP接受SOAP消息来控由器功能,由于其复杂的解析要求和特权系统访问,成为主要目标。
完成分析后,我们的利用链利用了四个漏洞:
- SOAP消息处理程序中的身份验证绕过,允许密码重置
- BSS和堆栈内存区域中的三个缓冲区溢出漏洞
在我们的第一个漏洞利用bashsledding中,我们展示了经典nopsled技术的一个有趣变体。发现两个可以调用"system"的ROP小工具后,我们通过路由器的域名阻止功能将shell命令payload喷洒到NVRAM中。通过在命令前添加空格序列,无论确切着陆位置如何,bash解释器都会无害地处理空格直到到达我们的命令,创建了有效shell语法的"雪橇"而不是CPU指令。这种技术提供了可靠的代码执行。
我们演示的最后一个漏洞利用bigfish_littlepond巧妙地将有限的内存破坏漏洞转换为更强的命令注入。BSS溢出用于修改代表shell命令的相邻字符串指针。鉴于upnpd中存在"bpa_monitor"字符串且该二进制文件中存在可利用的命令注入,我们将其更改为启动bpa_monitor二进制文件。包含我们注入payload的额外请求允许完全代码执行。
利用过时固件破解Bitdefender Box
Bitdefender Box v1代表了一个讽刺的目标:这个旨在保护家庭网络免受威胁的安全设备于2021年7月停产。创建于2017年左右,它是AV供应商扩展到具有订阅模式的硬件安全设备趋势的一部分。

该设备通过将自己插入网络路径、覆盖DHCP设置并通过其代理重定向流量来扫描威胁来运作。尽管其专注于安全,但我们发现了一个完全未经身份验证的固件更新机制。
我们的硬件分析揭示了Winbond W25Q128FV SPI NOR闪存芯片,我们使用SOP8夹子和XGecu T48编程器访问它以提取固件。固件分析揭示了一个基于Lua的Web服务器,具有配套移动应用使用的多个HTTP端点。
我们开发的利用链使用了以下端点:
/update_auth_token端点,其副作用是清除会阻止固件更新的配置文件/upload_backup_firmware端点上传Base64编码的固件映像/decode_image端点解码和验证固件的基本结构- 具有易受攻击的md5参数的
/check_image_and_trigger_recovery端点
虽然设备使用RSA公钥实现了固件更新的签名验证,但我们发现Bitdefender在其移动应用APK中分发了旧的固件映像。通过在VirusTotal上定位一个古老的APK,我们恢复了具有有效签名的固件版本1.3.11.490。
将此旧固件与较新版本进行比较,揭示了md5参数中的基本命令注入漏洞:这是没有适当过滤的字符串插值的经典案例。较新的固件实现了一个过滤字符如分号、引号、管道和括号的验证函数,但此保护在旧版本中缺失。
通过降级到易受攻击的固件并利用命令注入,我们将SSH公钥添加到设备的authorized_keys文件中,获得对整个系统的持久访问。
仅仅校验和和签名固件更新是不够的。没有强大的版本验证和经过身份验证的更新过程,单独验证加密签名无法防止降级攻击。
竞赛之外的安全影响
我们已经在期待明年的Junkyard竞赛!同时,请将其视为提醒:检查您的智能设备是否已生命周期结束,如果是请谨慎行事;在购买新设备前研究制造商的支持时间表;并寻找开源替代方案。
我们发现的漏洞代表了IoT安全中更广泛的模式。UPnP实现缺陷并非Netgear路由器独有,可能困扰其他制造商和设备。像Bitdefender Box中的固件降级漏洞突显了 supposedly 安全的更新机制通常缺乏关键保护,如降级预防。
如果您有生命周期结束的设备,可能不需要扔掉它,但应考虑继续使用它的风险。对消费者来说,这不仅需要仔细考虑设备的功能,还需要考虑其整个安全生命周期,包括制造商支持承诺和社区固件选项。
对研究人员和安全从业者来说,生命周期结束设备既代表了宝贵的学习机会,也代表了网络中潜在的安全盲点。Junkyard竞赛非常适合将这些设备带入聚光灯下,在那里有很多关于制造商如何淘汰其技术的内容需要学习。它比Pwn2Own等高风险竞赛更容易接近,这使其成为研究人员参与和提高技能的好场所。
选择目标
选择正确的生命周期结束设备有助于您为Junkyard等竞赛进行研究。要求很简单:设备必须不再受制造商支持,且设备应足够便宜以购买多个。拥有备用设备总是有帮助的,特别是在针对硬件时:设备可能带有不同的固件版本或购买二手时的不同条件,或者您可能需要备份,因为您破坏性地拆卸了它或意外地砖化了设备。
我们针对那些似乎可能具有有趣漏洞而无需数月逆向工程的设备。调试接口不是必需的,但它们使分析更容易。更重要的是有某种获取固件的方法:一些制造商在其网站上公开固件下载,而其他制造商需要从设备中提取固件。SPI芯片更容易使用,但从eMMC提取固件需要专门工具。
在购买设备之前,在线进行一些研究很重要。检查制造商的网站以获取固件下载,查找现有的安全研究,并查找FCC备案以窥视设备内部。