|
2019年,漏洞少微软安全响应中心发布过一份数据:Windows 10的漏洞少漏洞数量比Windows 7少了将近一半。这个数字放在当时没多少人当真,漏洞少毕竟那几年勒索病毒照样把全球电脑搅得鸡飞狗跳。漏洞少但换个角度看,漏洞少漏洞数量下降这件事本身,漏洞少比任何安全发布会上的漏洞少承诺都更有说服力。 我有个做渗透测试的漏洞少朋友,干了快十年。漏洞少他跟我说过一个变化:以前接项目,漏洞少随便扫一扫就能找到一堆SQL注入和XSS,漏洞少客户系统里到处都是漏洞少没打补丁的老组件。现在呢,漏洞少同样的漏洞少活儿花的时间翻倍,报告里能写的漏洞少东西却变薄了。不是他技术退步了,是那些最容易被利用的漏洞,确实在变少。 这背后不是什么魔法。编译器默认开启栈保护,操作系统强制ASLR,浏览器沙箱越做越严,这些底层机制把大量低级漏洞直接堵死了。以前一个缓冲区溢出就能拿shell,现在同样的代码可能连崩溃都触发不了。攻击面被压缩了,攻击者的路自然就窄了。 但漏洞少不等于安全。2021年Log4j那个事,一个日志库的JNDI注入,把全球一半的Java服务都拖下水。漏洞数量是少了,可一旦出现,影响范围反而更大——因为现在的系统耦合度太高了。一个组件出问题,整条供应链跟着遭殃。SolarWinds那次也是,攻击者没找什么零日漏洞,就是靠一个弱密码进了内网,然后慢慢横向移动。漏洞少,但人的疏忽没少。 还有个现象挺有意思。以前挖漏洞的人少,找到就交,厂商也认。现在漏洞成了生意,零日漏洞在黑市上能卖几十万美金,有些公司专门囤着不报。漏洞总量降了,可地下流通的那些,质量反而更高了。你看到的少了,不代表没有,只是它们藏得更深了。 我自己的电脑上,Chrome已经好几年没中过招了。以前逛个论坛都可能被挂马,现在浏览器更新勤快,沙箱隔离到位,恶意网页想突破太难了。但手机呢?安卓生态碎片化严重,很多厂商半年才推一次安全补丁。漏洞少这个结论,放到不同平台上,结论完全不一样。 说到底,漏洞少是个相对概念。代码写得越规范,工具链越现代,自动化测试越普及,低级错误就越少。可软件规模在膨胀,逻辑越来越复杂,业务之间的依赖像蜘蛛网一样。你堵住了已知的坑,未知的坑还在暗处等着。这不是悲观,是现实。 安全这行干久了会明白一个道理:漏洞的数量从来不是关键,关键是攻击成本和防御成本的比值。以前攻破一个系统可能只要几分钟,现在得花几周甚至几个月。这个变化,比漏洞数量的增减更有意义。漏洞少是好事,但别把它当成安全的保证。毕竟,真正出问题的时候,往往不是因为漏洞多,而是因为那个唯一的漏洞,刚好被用上了。 |