|
2010年6月,一个叫Stuxnet的蠕虫病毒把伊朗纳坦兹核设施的离心机搞瘫了。它利用的是Windows系统里四个从没被公开过的漏洞。微软在事发前根本不知道这些漏洞存在,补丁是在攻击发生后才紧急推出来的。这四个漏洞,就是典型的0day。 所谓0day漏洞,说白了就是厂商还不知道、自然也没补丁的漏洞。一旦有人抢在厂商前面发现它,这个漏洞就成了一张王牌。为什么叫"0day"?因为从漏洞被发现到被利用,中间间隔的天数是零——厂商有零天时间来反应。 这个叫法最早来自盗版软件圈。某个游戏刚发售当天就被破解,叫0day破解。安全圈借用了这个词,意思差不多:防御方毫无准备,攻击已经来了。 一个0day漏洞的价值有多大?2015年,Hacking Team泄露的邮件显示,他们从意大利一家公司购买Android 0day漏洞,花了大概10万欧元。到了2018年,暗网上Windows 0day的报价已经炒到几十万甚至上百万美元。价格飙升的原因很简单——攻防双方都在抢。防守方想找到漏洞去修补,进攻方想找到漏洞去利用,谁的出价高,漏洞就流向谁。 但0day真正可怕的地方不在于价格,而在于它的隐蔽性。普通的漏洞攻击,杀毒软件可能靠特征码识别出来。0day没有特征码可匹配,防火墙和杀软基本形同虚设。你根本不知道有什么东西在打你,等你发现的时候,数据可能已经被搬空了。 2016年,苹果iOS系统被一个叫Pegasus的间谍软件攻破,用的就是三个0day漏洞组成的攻击链。攻击目标包括人权律师、记者、政治活动家。他们只是点开了一条短信里的链接,手机就被完全控制了——麦克风、摄像头、聊天记录,全部暴露。苹果在发现后紧急发布了iOS 9.3.5更新,但那些已经被监控的人,损失已经无法挽回。 0day漏洞的发现过程,其实跟挖矿差不多。安全研究员花几个月甚至几年时间,盯着某一段代码反复看,试图找到逻辑上的裂缝。有时候是缓冲区溢出,有时候是权限校验写错了,有时候是内存释放后又被引用。找到之后,写一个能稳定触发漏洞的利用代码,又是另一轮苦工。能独立发现并利用0day的人,全球范围内也就那么几百个。 这就引出一个问题:发现0day的人,该怎么做? 有人选择报给厂商,拿一笔漏洞赏金。Google的Project Zero团队就是干这个的,他们给厂商90天时间修,修不好就公开细节。有人选择卖给漏洞 broker,价高者得。还有人选择自己留着用,或者交给国家级的攻击团队。这三种选择背后,是三种完全不同的价值观。 普通用户面对0day,其实没什么好办法。你不可能靠装个杀毒软件就防住一个连厂商都不知道的漏洞。能做的无非是:及时更新系统——虽然这防不住0day,但能防住那些已经公开的漏洞;少点来路不明的链接和附件;重要数据定期备份。剩下的,只能交给运气和安全研究社区的努力。 0day漏洞不会消失。只要软件还是人写的,就一定有bug。攻防之间的这场猫鼠游戏,没有终点。 |
