百科

有没有漏洞

时间:2010-12-5 17:23:32  作者:百科   来源:知识  查看:  评论:0
内容摘要:2017年,WannaCry勒索病毒横扫全球,英国国家医疗服务体系被迫取消数千台手术,雷诺汽车在斯洛文尼亚的工厂直接停产。事后复盘,攻击者利用的是Windows系统里一个叫"永恒之蓝"的漏洞——微软其

2017年,有没有漏WannaCry勒索病毒横扫全球,有没有漏英国国家医疗服务体系被迫取消数千台手术,有没有漏雷诺汽车在斯洛文尼亚的有没有漏工厂直接停产。事后复盘,有没有漏攻击者利用的有没有漏是Windows系统里一个叫"永恒之蓝"的漏洞——微软其实早在两个月前就发布了补丁。问题出在那些没打补丁的有没有漏机器上。漏,有没有漏是有没有漏系统本身的缺陷;洞,是有没有漏没人去填。

这两个字拆开看,有没有漏恰好对应了漏洞这件事的有没有漏两面。

代码是有没有漏人写的,人就会犯错

任何一行代码都是有没有漏人敲出来的。人不是有没有漏机器,人会走神、会偷懒、会在凌晨三点困得睁不开眼时把">="写成">"。一个符号的差别,在特定条件下就能让整个验证逻辑形同虚设。

2014年,苹果iOS系统爆出"goto fail"漏洞。一段SSL证书验证代码里,多了一行"goto fail",导致验证函数直接跳过密钥检查。就这么一行,让攻击者可以轻松实施中间人攻击,截获用户的加密通信。代码审查时没人注意到——因为它看起来太正常了。

这不是孤例。OpenSSL心脏出血漏洞(Heartbleed)也是类似情况:一个边界检查没做,攻击者就能从服务器内存里读出最多64KB的数据。密码、私钥、用户会话,全在里面。这个漏洞存在了两年多才被发现。

我的判断是:只要软件还由人类编写,漏洞就不会消失。这不是悲观,是常识。

补丁发了,为什么还有人中招

更让人头疼的不是漏洞本身,而是补丁明明有了,却没人装。

我认识一个做企业IT运维的朋友,他管着三百多台服务器。每次微软发安全更新,他都要挨个确认。但总有几个业务部门说"这台机器跑着关键系统,不能随便重启"。一拖就是几个月。他跟我吐槽:"我感觉自己像个催债的。"

WannaCry事件里,大量中招的机器运行的是Windows 7甚至Windows XP。微软对XP的官方支持2014年就结束了,但直到2017年,全球仍有约7%的电脑跑着XP。这些机器不是没有漏洞——是漏洞多得数不过来,而厂商已经不管了。

换个角度看,漏洞不只是技术问题。它是管理问题、流程问题、甚至是人性问题。人天生倾向于维持现状,打补丁意味着停机、测试、承担风险。不打补丁,短期内什么都不会发生。直到它发生。

零日漏洞:暗处的交易

有一类漏洞比普通漏洞危险得多——零日漏洞。意思是厂商还不知道,没有补丁可打。攻击者利用它时,防守方几乎无从防御。

零日漏洞在地下市场是硬通货。一个能远程攻破iPhone的零日,报价可以到数百万美元。买家可能是政府机构、情报部门,也可能是犯罪集团。防御方连对手用的是什么武器都不知道。

2010年,Stuxnet蠕虫用四个零日漏洞攻击了伊朗核设施。它精准破坏了离心机,同时伪装成正常故障。直到今天,这仍被认为是网络武器化的分水岭事件。

零日漏洞的存在说明一件事:漏洞的价值不只在于技术,还在于信息差。谁先知道,谁就占据主动。

没有终极答案

有人提出用形式化验证来证明代码没有漏洞。数学上可行,工程上几乎做不到。一个操作系统的代码量动辄几千万行,逐一证明其正确性,成本高到不现实。即使证明了,也只证明它符合规范——规范本身可能就有问题。

还有人寄希望于AI自动发现漏洞。这确实在进步,Google的OSS-Fuzz项目已经用模糊测试发现了数万个开源项目的漏洞。但AI发现漏洞的速度,和AI写出新代码的速度,是同一枚硬币的两面。代码越多,攻击面越大。

漏洞不会消失。能做的是缩短从"漏洞被发现"到"补丁被安装"之间的时间窗口。这个窗口越小,攻击者的机会就越少。技术手段是一部分,但更关键的往往是那些不起眼的事:定期更新、最小权限原则、别把密码写在便签上贴在显示器边框。

听起来很无聊。但安全这件事,无聊的部分才是真正管用的部分。

最近更新
热门排行
copyright © 2026 powered by 力不从心网   sitemap