芯片厂商发出去的代码带bug,这事本身不算新闻。WPSplinter之所以值得单独拎出来说,是因为博通(Broadcom)据称八年前就发过修复,但那个修复始终没送到摆在用户家里的路由器上。更关键的是,没有CVE编号,路由器厂商和运营商依赖的安全公告与补丁流程,根本看不见这个问题。

打开网易新闻 查看精彩图片

安全研究员Quentin Kaiser在10月16日巴黎的Hexacon大会上披露了这个漏洞,并给它取名WPSplinter。他说,之所以自己起名字,是因为博通拒绝发一个官方标识。

漏洞藏在博通处理WPS的旧代码里。WPS是那个让你按一下路由器按钮、不用输密码就能连上设备的功能。这段代码在处理特定消息交换时出了错,只要按对的顺序发消息,攻击者就能读取路由器的内存,或者在设备上执行外部代码。

攻击者不需要Wi-Fi密码,也不需要完成WPS配对。待在无线电覆盖范围内就够了。这也不是2010年代初上过头条的那个WPS PIN弱点——问题出在博通的代码,不在WPS本身。

Kaiser的演示把风险摆到了台面上。在一台由Orange比利时提供的Askey TCG3000网关上,他的利用程序从设备NVRAM里取出了Wi-Fi密钥,通过空中传回,然后用它加入了网络。在另一台设备上——Sagemcom制造的Proximus BBOX3V+——他完全通过Wi-Fi拿到了一个远程shell,自己这端连互联网都不需要。他说这种攻击在远距离下同样有效。

Kaiser在比利时四大运营商中三家的网关上确认了漏洞:Proximus、Orange和VOO。按他的统计,仅比利时就有约150万台设备受影响。但基于同款博通芯片的路由器在全球销售,他给出的受影响型号清单(他自称并不完整)包括思科、TP-Link、Netgear、Sagemcom、诺基亚、中兴和合勤的产品,部署方涉及Movistar、Optus、KPN、Türk Telekom等运营商。按这个口径,全球估算接近数亿台。

Kaiser在7月报告漏洞时,博通表示自己2018年就知道了,此后已在软件中替换了旧的WPS代码,并让他去找设备厂商。Kaiser说,2018年对旧代码的那次修补本身就不完整。博通还拒绝申请CVE,理由是这段代码已经过时、超出支持窗口。

在Hacker News上,有人认为责任在路由器厂商和运营商,是他们从不更新。Kaiser的反驳是:没有CVE,警告很可能压根没传下去,卡在了供应链中间。

改Wi-Fi密码没用,因为攻击发生在登录之前。关掉WPS值得做,但Kaiser提醒,这未必能完全停用那段有问题的代码。如果对自己运营商的路由器固件没底,比较稳妥的做法是关掉网关的Wi-Fi、把它设成桥接模式,换用自己的、保持更新的路由器。Kaiser还在GitHub上放了一个检测脚本,想查自己硬件的人可以直接用。

还有一个细节:Kaiser说AI工具帮他在不到一周内找到了这个漏洞,手工做这件事要花几个月。路由器固件过去多少靠“晦涩”和“翻起来太枯燥”挡着一部分人,现在这道门槛对研究者和攻击者都不存在了。