2017年5月12日,漏洞定WannaCry勒索病毒横扫全球,漏洞定英国国家医疗服务体系(NHS)超过三分之一的漏洞定医院信托机构被迫停诊,手术取消,漏洞定救护车改道。漏洞定事后调查发现,漏洞定罪魁祸首是漏洞定一个微软早在两个月前就发布补丁的漏洞——MS17-010。补丁在那里,漏洞定没人装。漏洞定病毒跑得比运维人员快。漏洞定
这事让我一直记着一句话:漏洞不一定要多高明,漏洞定它只需要存在,漏洞定并且被忽略。漏洞定
很多人对“漏洞”这个词有误解,漏洞定觉得它是漏洞定技术天才才能发现的精密缺陷。实际上,大量被利用的漏洞,技术含量低得令人尴尬。弱口令、未打补丁的旧版本、配置文件中硬编码的密钥、数据库端口直接暴露在公网——这些东西听起来像是入门级错误,但每年攻防演练里,它们依然是撕开防线最顺手的那把刀。
我跟踪过某次企业内部的红蓝对抗。蓝队花了三个月部署了态势感知平台、EDR、蜜罐,结果红队根本没碰这些。他们从一个离职员工未注销的VPN账号进去,那个账号的密码是Company@2022。三个小时,拿到了域控。安全预算的大头花在了“高级威胁检测”上,而真正的入口是一个HR忘记提交的注销工单。
这就是漏洞的第一个特性:它往往不在你盯着的地方。
再说一个案例。某开源组件被爆出反序列化漏洞,CVSS评分9.8。安全圈炸了锅,公众号文章铺天盖地。但同一周,另一个漏洞的讨论量不到它的百分之一——某主流Web框架的默认配置允许目录遍历。前者的利用条件苛刻,需要特定协议和特定调用链;后者只需要在URL后面加两个点斜杠。哪个更危险?取决于你的系统实际暴露面。热度不等于风险,但决策者常常被热度牵着走。
我对漏洞管理有个不太主流的看法:与其追求“零漏洞”,不如接受“漏洞一定要有,但一定要知道”。
这话听起来像摆烂,其实是现实。任何足够复杂的系统,漏洞是必然存在的。代码是人写的,配置是人做的,架构是人设计的。人能犯错,漏洞就会有。问题不在于消灭所有漏洞——这做不到——而在于你对自己系统里有什么漏洞、哪些被利用过、哪些有现成利用工具,心里有没有数。
我见过太多团队,资产清单都不全。问他们“你们有多少个对外暴露的API端点”,答不上来。问“上次扫描是什么时候”,说“半年前吧”。这种状态下谈漏洞管理,等于闭着眼睛开车。
还有个细节值得说。很多团队修漏洞的优先级是“按扫描器报告的严重等级排序”。高危先修,中危排队,低危不管。但攻击者不按你的扫描器报告出牌。一个低危的信息泄露,可能泄露了内网拓扑;一个中危的SSRF,可能直通云元数据服务。漏洞的价值不在单点,在链条。单个看都是小问题,串起来就是一条完整的攻击路径。
所以我现在看漏洞,不太看单个评分,更看它能不能和已有的其他信息拼在一起。能拼上的,优先级立刻拉满。
WannaCry过去七年了。补丁管理依然是老大难。不是技术难,是流程难。是“这台机器不能重启因为跑着关键业务”难,是“这个系统是外包做的我们改不了”难,是“预算批不下来”难。漏洞从来不只是技术问题,它是管理问题、流程问题、人的问题。技术漏洞好修,组织漏洞难补。
但不管难不难,有一件事是确定的:你不去找漏洞,漏洞也会来找你。它不挑时间,不挑心情,不挑你今年安全预算够不够。它就在那里,等着被利用,或者等着被发现。
漏洞一定要有。但发现它的,最好是你自己。