当前位置:首页 > 知识

还没有修复的漏洞叫什么漏洞

安全圈有个老梗:一个漏洞如果公开了半年还没修,还没那它就不叫漏洞了,有修叫“预期功能”。漏洞漏洞这话听着像玩笑,还没但你去翻任何一份CVE(公共漏洞披露)列表,有修总能找到那些挂了两三年还亮着红灯的漏洞漏洞条目。它们有个更正式的还没分类名——N-day漏洞,也就是有修已知漏洞。但我要说的漏洞漏洞不是这个术语,我想聊的还没是那些更尴尬的:厂商已经知道、甚至承认了,有修但就是漏洞漏洞拖着不修的漏洞。

去年我帮一家小公司做渗透测试,还没发现他们用的有修某款国产OA系统有个SQL注入点,能直接拖出整个员工数据库。漏洞漏洞我按流程报了漏洞,厂商回复很快,说“已确认,将在下个版本修复”。然后呢?下个版本等了八个月,期间这个漏洞被挂在网上,连利用工具都被人写好开源了。我打电话去问,客服支支吾吾,最后技术负责人私下跟我说实话:“修这个要改底层架构,成本太高,领导觉得反正也没几个客户真被攻击,先排着吧。”

你看,这就是问题所在。漏洞不是不能修,是修不起。对厂商来说,修复一个老漏洞往往意味着要动十年前的代码,要重新测试兼容性,要花掉几个程序员半个月的工时。而如果不修,风险是“可能”被攻击——这个“可能”在商业决策里,权重远低于看得见的成本。于是漏洞就变成了技术债,而且是那种没人愿意还的债。

还有个更隐蔽的情况。有些漏洞是设计层面的,比如某个协议天生不加密,或者某个接口默认信任内网请求。你没法打个补丁就解决,得推翻重来。像早期的物联网设备,很多连改密码的选项都没有,因为硬件存储空间就那么大,塞不进安全模块。厂商心里清楚,但产品已经卖出去了几十万台,召回?不现实。他们能做的就是在官网角落发个公告,建议用户“尽量别暴露在公网”。这叫什么?这叫把风险转嫁给用户,还美其名曰“使用建议”。

行业内给这类东西起了个外号,叫“僵尸漏洞”——看着死了,其实还活着,只是没人愿意给它办葬礼。安全研究员报上去,厂商说“已知悉”,然后就没下文了。你催,他就说在评估。评估个三五年,产品都停维了,漏洞自然随之下线——不是修好了,是彻底没人管了。

说实话,我挺理解厂商的难处,谁不想把产品做得完美呢?但理解归理解,现实中受害的往往是用户。去年爆出的某路由器远程执行漏洞,厂商其实两年前就在内部测试中发现了,但觉得“影响面不大”就没修。结果漏洞被恶意利用,几十万台设备变成僵尸网络节点,用来发起DDoS攻击。最后厂商被迫紧急发布补丁,但造成的损失已经收不回来了。

所以回到标题的问题:还没有修复的漏洞叫什么?我给你的答案是——叫“已知风险”。它不再是技术问题,而是一个商业决策问题。厂商在赌你不会被攻击,赌你被攻击了也不会告他,赌你就算告了也赔不了多少钱。而作为用户,你唯一能做的,就是把所有“已知风险”当成“必然发生”来对待——该打补丁打补丁,该换设备换设备,别指望厂商的良心发现。毕竟,漏洞躺在那里不会自己消失,它只是在等一个合适的时机,变成别人眼里的“机会”。

分享到: