漏洞公布
2023年8月,漏洞公布某安全团队在GitHub上挂出一份CVE编号的漏洞公布漏洞详情,从提交到公开只用了72小时。漏洞公布不是漏洞公布厂商修得快,是漏洞公布厂商压根没回邮件。这种事在圈子里不算新闻,漏洞公布但每次发生都像在提醒一件事:漏洞公布从来不是漏洞公布技术问题,是漏洞公布人的问题。
我认识一个做渗透测试的漏洞公布老哥,他管这叫“逼宫式披露”。漏洞公布先给厂商发漏洞报告,漏洞公布附上复现步骤、漏洞公布影响范围、漏洞公布修复建议。漏洞公布等30天,漏洞公布没回复。再等30天,还是没动静。到第90天,直接把PoC挂到推特上。他说这叫“负责任披露的变种”,我问他负责任在哪,他回我:“对用户负责,不对厂商负责。”
这话听着刺耳,但逻辑站得住。一个能远程执行代码的漏洞,每多捂一天,就多一天被黑产利用的风险。厂商的沉默不是中立,是在赌没人发现。安全研究员赌不起,用户更赌不起。
2008年,某位大神发现了一个DNS协议层面的设计缺陷。他没直接公开,而是私下联系了多个厂商,协调了几个月。最后统一发布补丁那天,全球DNS系统打了个补丁。这事后来被写进教科书,叫“负责任披露”的典范。但很少有人提,那几个月里,知道漏洞的人不止他一个,暗网上的交易记录显示,有人已经在卖利用工具了。
所以“负责任”这三个字,到底对谁负责?
厂商的算盘很直白:漏洞公布等于承认自己产品有问题。股价、声誉、用户信任,哪一样都比一个CVE编号值钱。能拖就拖,能压就压。压不住就发个声明,说“已修复,用户请升级”。至于升级率多少,那不是他们关心的事。我见过一个路由器固件漏洞,公布两年后,还有40%的设备没打补丁。厂商早就不维护那款型号了。
安全研究员的处境更拧巴。不公布,漏洞可能被黑产先找到,自己白忙一场。公布了,厂商法务部可能找上门,说你违反《计算机欺诈与滥用法》。美国有个研究员,因为公开了某投票系统的漏洞,被厂商告到差点坐牢。后来虽然撤诉,但他再也没碰过投票机。
国内的情况更微妙。漏洞公布要走“国家信息安全漏洞库”的流程,厂商有60天修复期。听起来合理,但实际操作中,60天经常变成“60个工作日”,再变成“下个版本修复”。有个做工控安全的朋友,发现某PLC的认证绕过漏洞,提交后等了四个月,厂商回复说“产品已停产,不再维护”。他问能不能公开,对方回了一句:“你公开试试。”
试试就试试。他最后还是公开了,在个人博客上,没走CVE流程。文章存活了不到12小时就被删了,但截图已经传遍了安全圈。三天后,厂商发了个补丁,说是“例行更新”。没人提漏洞的事,好像什么都没发生过。
漏洞公布的本质,是一场信息不对称的博弈。厂商掌握产品,研究员掌握漏洞,用户掌握钱包。三方各怀心思,谁都不信任谁。CVE、CNVD这些机构想当裁判,但裁判的哨子经常吹不响。最后能推动事情的,往往是舆论压力,或者更直接的——黑产先动手了。
我见过最讽刺的一幕:某厂商的安全响应中心在漏洞公布后发声明,说“感谢白帽子的贡献”。同一时间,他们的公关团队在群里问:“能不能联系那个研究员,让他把推特删了?”
漏洞不会消失,只会转移。从研究员手里转移到黑产手里,或者从厂商的服务器转移到用户的设备上。公布不公布,只是决定它先经过谁的手。那些嚷嚷着“负责任披露”的人,最好先搞清楚,自己到底在对谁负责。