2010年6月,一个叫Sergey Glazunov的俄罗斯研究员在Chromium的代码里翻出了一个沙箱逃逸漏洞。Google为此付了他3133.7美元——这个数字不是随便定的,31337在黑客文化里是"elite"的谐音。这笔钱买的不只是一个漏洞,而是让Google在攻击者动手之前,先把门堵上。
这就是0day的日常。不是电影里那种黑进五角大楼的戏剧化场面,更多时候是一行不起眼的整数溢出,或者一个忘记检查的指针。
0day漏洞,说白了就是厂商还不知道、或者知道了还没来得及修的安全缺陷。注意,不是"没有补丁"这么简单——很多漏洞有补丁但用户没打,那叫Nday,不叫0day。0day的核心在于信息差:攻击者知道,防守方不知道。
这个信息差值多少钱?2021年,一家叫Zerodium的漏洞收购公司公开报价:iOS远程越狱漏洞,250万美元。Chrome沙箱逃逸加远程代码执行,50万起。价格高得离谱,因为需求方不是安全公司,是政府机构和情报承包商。
漏洞本身不稀缺,稀缺的是"能用"的漏洞。一个崩溃型的0day可能只值几千美元,但一个能稳定提权、绕过所有缓解措施、适配最新系统版本的完整利用链,价格能翻几百倍。买家要的是武器,不是bug报告。
2019年曝光的iOS漏洞链"Checkm8"是个好例子。攻击者先通过iMessage发送一条恶意消息,触发WebKit渲染引擎的内存破坏漏洞——这是入口。然后利用另一个内核漏洞完成提权,最终完全控制设备。整个过程用户毫无感知,不需要点击任何链接。
这条链上每个环节都是独立的0day。一个漏洞负责突破边界,另一个负责在内部横向移动。单独看每个漏洞可能都不算致命,串起来就是完整攻击。这也是为什么完整利用链的价格远高于单个漏洞——它需要多个研究方向的深度知识,从浏览器引擎到操作系统内核,跨度极大。
找到0day的人面临一个选择:卖给厂商拿赏金,还是卖给漏洞经纪人拿更多钱?
厂商赏金通常几万到几十万美元,而且要求独家。漏洞经纪人出价更高,但不告诉你买家是谁。有些研究员坚持只报厂商,有些则明码标价卖给出价最高的人。这里没有统一道德标准,每个人按自己的线走。
更麻烦的是法律风险。美国《计算机欺诈和滥用法》的措辞模糊,安全研究员在测试漏洞时可能踩线。Aaron Swartz的案子让很多人心有余悸——他批量下载学术论文被起诉,最终自杀。虽然和0day不完全相同,但传递的信号很清楚:法律不总是站在研究者这边。
0day没法防。这句话听起来丧气,但基本是事实。你不可能给未知的漏洞打补丁。
能做的只有缩短攻击窗口。Google的Project Zero有个激进策略:发现漏洞后给厂商90天修复,到期不管修没修都公开细节。这个做法得罪了不少公司,但确实逼着厂商加快节奏。微软曾经抱怨90天太短,Project Zero的回应很直接:攻击者不需要90天。
另一条路是增加攻击成本。ASLR、DEP、CFI、沙箱——这些缓解措施不能阻止0day被利用,但能让利用变得更难、更不稳定。一个需要精确堆喷射、绕过三层防护才能成功的漏洞,开发成本可能高到让大部分攻击者放弃。
现实是,0day市场不会消失。只要信息差存在,就有人愿意为它付钱。防守方能做的,是让这个信息差的价值尽可能低——缩短修复时间、增加利用难度、提高攻击者被发现的概率。这不是一场能赢的战争,但可以是一场让对手觉得不划算的战争。