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

随着第二届DistrictCon Junkyard竞赛宣布将于2026年初举行,我们希望分享第一次竞赛的经验和研究。完整的技术分析可在Trail of Bits漏洞利用仓库中获取。
设备分析和固件提取
Netgear设备
我们拆解了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)守护进程:该服务旨在简化网络上的设备发现和配置。UPnP接受SOAP消息(XML格式命令)来控制路由器功能,由于其复杂的解析要求和特权系统访问,成为主要目标。
完成分析后,我们的利用链利用了四个漏洞:
- SOAP消息处理程序中的身份验证绕过,允许密码重置
- BSS和堆栈内存区域中的三个缓冲区溢出漏洞
在我们的第一个利用bashsledding中,展示了经典nopsled技术的有趣变体。发现两个可以调用"system"的ROP小工具后,我们通过路由器的域名阻止功能将shell命令有效负载喷洒到NVRAM中(该内存映射到所有进程)。通过在命令前添加空格序列(我们的"nops"),无论确切着陆位置如何,bash解释器都会无害地处理空格,直到到达我们的命令,创建有效shell语法的"雪橇"而非CPU指令。该技术提供了可靠的代码执行。
我们演示的最后一个利用bigfish_littlepond,巧妙地将有限的内存损坏漏洞转换为更强的命令注入。BSS溢出用于修改表示shell命令的相邻字符串指针。鉴于upnpd中存在"bpa_monitor"字符串且该二进制文件中存在可利用的命令注入,我们将其更改为启动bpa_monitor二进制文件。包含我们注入有效负载的额外请求允许完全代码执行。
您可以在GitHub上找到完整的利用代码和报告,以及bashsledding、break_block_bof(我们的第二个利用,此处未提及)和bigfish_littlepond的视频。
用过时固件攻破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.12.869),我们恢复了具有有效签名的固件版本1.3.11.490。
将此旧固件与较新版本进行差异比较,揭示了md5参数中的基本命令注入漏洞:这是没有适当过滤的字符串插值的经典案例。较新的固件实现了一个过滤字符(如分号、引号、管道和括号)的验证函数,但此保护在旧版本中缺失。
通过降级到易受攻击的固件并利用命令注入,我们将SSH公钥添加到设备的authorized_keys文件中,获得对整个系统的持久访问。
仅仅校验和和签名固件更新是不够的。没有强大的版本验证和经过身份验证的更新过程,单独验证加密签名无法防止降级攻击。
您可以在GitHub上找到完整的利用代码和报告,以及在YouTube上的视频。
竞赛之外的安全影响
我们已经期待明年的Junkyard竞赛!同时,请将此视为提醒:检查您的智能设备是否EOL,如果是请谨慎行事;购买新设备前研究制造商的支持时间表;并寻求开源替代方案。
我们发现的漏洞代表了IoT安全中更广泛的模式。UPnP实现缺陷并非Netgear路由器独有,可能困扰其他制造商和设备。像BitDefender Box中的固件降级漏洞突显了 supposedly安全的更新机制通常缺乏关键保护,如降级预防。
如果您有EOL设备,可能不需要扔掉它,但应考虑继续使用它的风险。对消费者而言,这不仅需要仔细考虑设备的功能,还需要考虑其整个安全生命周期,包括制造商支持承诺和社区固件选项。
对研究人员和安全从业者而言,EOL设备既代表了宝贵的学习机会,也代表了网络中潜在的安全盲点。Junkyard竞赛非常适合将这些设备带入聚光灯下,在那里可以了解制造商如何淘汰其技术。它比Pwn2Own等高风险竞赛更易于接近,使其成为研究人员参与和提高技能的绝佳场所。
选择目标
选择正确的生命周期结束设备有助于为Junkyard等竞赛进行研究。要求很简单:设备必须不再受制造商支持,且设备应足够便宜以购买多个。拥有备用设备总是有帮助的,特别是在针对硬件时:设备可能带有不同的固件版本或购买二手时的不同条件,或者您可能需要备份,因为您破坏性地拆解了它或意外地变砖了(至少其中一件事发生在我们身上)。
我们针对那些似乎可能有有趣漏洞而无需数月逆向工程的设备。调试接口不是必需的,但它们使分析更容易。更重要的是拥有获取固件的某种方式:一些制造商在其网站上公开固件下载,而其他制造商需要从设备中提取。SPI芯片更容易处理,但从eMMC提取固件需要专用工具。
在购买设备之前,在线进行一些研究很重要。检查制造商的网站以获取固件下载,查找现有的安全研究,并查阅FCC文件以窥视设备内部。
分享本文: Twitter | LinkedIn | GitHub | Mastodon | Hacker News
关于我们 自2012年以来,Trail of Bits帮助保护了世界上一些最受针对的组织和产品。我们将高端安全研究与真实世界攻击者心态相结合,以降低风险并加固代码。
阅读更多:www.trailofbits.com
社交 Twitter | LinkedIn | GitHub | Mastodon | Hacker News
© 2025 Trail of Bits. 使用Hugo和Mainroad主题生成。