定义辨析:0-day 与相关概念
"零日"这一术语在不同上下文中具有微妙但关键的区别:
- 零日漏洞(Zero-day Vulnerability):厂商未知或未修复的安全缺陷本身。这是最纯粹的定义——漏洞存在于代码中但无补丁可用。
- 零日利用(Zero-day Exploit):针对零日漏洞编写的攻击代码或技术。漏洞是「可能性」,利用是「现实化」。
- 零日攻击(Zero-day Attack):使用零日利用发起的实际攻击活动。此时漏洞在未来某一时刻才会被公开披露。
- N-day 漏洞:漏洞已公开并获得 CVE 编号,厂商已发布补丁。攻击者利用的是受害者未及时打补丁的时间窗口。
- 永恒漏洞(Forever-day):漏洞已在野利用多年,但由于厂商停止支持(EOL 产品)、缺乏修复动力或技术原因,官方补丁永远不会发布。
区分这些概念对于威胁建模至关重要:防御 0-day(未知未知)和防御 n-day(已知未修复)需要完全不同的安全能力。
生命周期
零日漏洞的完整生命周期通常经历六个阶段,这一过程可能持续数周到数年:
阶段 1:发现(Discovery)
安全研究者、攻击者、内部人员通过 代码审计(人工逐行审查)、模糊测试(自动化变异输入探测崩溃)、逆向工程(反编译二进制分析逻辑)或补丁差异分析(对比补丁前后的二进制差异反推漏洞细节)等方法发现未知漏洞。发现渠道决定了漏洞的后续走向——白帽研究者倾向于披露,黑帽/灰帽倾向于利用或出售。
阶段 2:武器化(Weaponization)
将漏洞转化为一套可靠的攻击利用链。对浏览器或操作系统漏洞而言,这通常需要结合多个漏洞(如 RCE + 沙箱逃逸 + 提权)组成完整利用链——单点漏洞的利用价值远低于完整链。武器化过程通常需要高度专业的技能和数月的开发周期。
阶段 3:利用(Exploitation)
攻击者部署武器化后的利用工具,在真实环境中发起攻击。在野利用(in-the-wild exploitation)的检测极为困难——攻击者通常针对高价值目标(政府、关键基础设施、企业高管、活动家/记者)进行小规模定向攻击,以延长漏洞的隐秘寿命。