2021年冬天,漏洞治理Log4j2那个漏洞爆出来的漏洞治理时候,我正蹲在客户机房调一台旧服务器。漏洞治理手机震个不停,漏洞治理群里有人甩了条链接,漏洞治理说“核弹级漏洞”。漏洞治理点开一看,漏洞治理Apache Log4j2的漏洞治理JNDI注入,攻击者能直接远程执行代码。漏洞治理当时心里就咯噔一下——这玩意儿太常见了,漏洞治理Java生态里几乎无处不在。漏洞治理
漏洞治理这事,漏洞治理说白了就是漏洞治理跟时间赛跑。但跑法有讲究。漏洞治理很多人以为打补丁就完了,漏洞治理其实补丁只是最后一步。真正要命的是你根本不知道自己用了多少带漏洞的组件。那次Log4j事件,我见过一家公司排查了三天,最后发现一个五年前离职员工写的内部工具还在用Log4j 2.0-beta9。那工具没人维护,但每天定时跑,连着生产数据库。
资产清点是漏洞治理的底裤。没有它,后面全是瞎忙。我习惯用SBOM(软件物料清单)来管,但别指望工具能自动搞定一切。手工核对依然逃不掉。有个客户用商业扫描器扫出两百多个漏洞,我拿开源工具交叉验证,发现其中六十多个是误报,还有十几个扫描器根本没报出来。工具会骗人,版本号也会骗人——有人把jar包改了名,扫描器就认不出来。
优先级排序是门手艺。CVSS评分高不等于你就要连夜修。一个只在本地调用的接口,CVSS 9.8也没那么急;一个暴露在公网、每天被爬虫扫八百遍的服务,CVSS 5.0也得先处理。我自己的土办法是看三个东西:能不能从外网摸到、需不需要认证、有没有现成的exp。三个都占,放下手头所有事去修。一个不占,排期到下周。
修复本身也有坑。有些漏洞补丁会引入新问题。去年有个Spring框架的漏洞,客户打完补丁后定时任务全挂了。查了半天,是补丁改变了某个默认行为。所以修复前得想好回滚方案,别把自己修进更深的坑里。灰度发布在这里同样管用,先拿一台机器试,观察两天再推全量。
还有一类漏洞没法修——供应商不更新了,或者更新要花钱。这时候只能靠缓解措施。WAF规则、网络隔离、权限收紧,都是办法。但别把这些当长期方案。我见过一个系统用WAF挡了三年,结果WAF规则一改,漏洞立刻暴露。缓解措施是创可贴,不是愈合。
最后说个容易被忽略的点:漏洞治理不是安全团队一个人的事。开发嫌麻烦,运维怕背锅,业务方觉得你在耽误进度。Log4j那会儿,我让一个团队升级依赖,对方负责人说“我们排期到三个月后”。我说行,那这三个月你们系统别连外网。他第二天就安排人升级了。有时候得用业务语言说话,别光讲技术风险。
漏洞永远修不完。今天修完,明天又出新的。但至少得知道自己有什么、什么最急、修不了怎么办。这三件事搞清楚了,半夜被叫起来处理漏洞的概率会小很多。