定义
零日漏洞(Zero-day / 0day):软件中存在、但厂商和公众都不知道(或厂商尚未发布补丁)的安全漏洞。
"零日"的含义:防御者拥有"零天"的时间来准备防御——因为漏洞在被发现时已经被利用了。
生命周期
漏洞被引入代码
↓
(潜伏期,可能数月到数年)
↓
被某人发现
↓
┌────┴────┐
↓ ↓
厂商通报 被用于攻击
(负责任披露)(或被交易、囤积)
↓ ↓
补丁发布 在野利用
↓ ↓
用户修补 (直到补丁应用前都有效)关键点:从"漏洞存在"到"有补丁可用"之间,存在一个窗口期。零日攻击就发生在这个窗口内。
谁在寻找零日
一、安全研究者
发现了漏洞后,通常会走负责任披露流程:
- 私下通知厂商;
- 给予修复期限(通常 90 天,有时会延长);
- 期限过后公开细节。
二、厂商内部团队和第三方审计
三、漏洞赏金平台
如 HackerOne、Bugcrowd,以及各厂商自己的赏金计划——用金钱奖励研究者按规则报告漏洞。
四、恶意攻击者
用于实际攻击,或在黑市/灰市交易。
五、某些国家的情报和军事机构
漏洞可以被当作"网络武器"储备——这引发了关于"漏洞 equitable(漏洞公平裁决程序)"的讨论:应该在发现漏洞时优先公开(保护公众)还是保密(用于情报行动)。
攻击链
一个完整的攻击通常不只用一个漏洞:
- 初始入口:可能是一个零日(如浏览器、邮件客户端、VPN 设备);
- 权限提升:利用操作系统漏洞获取更高权限;
- 横向移动:在内网传播;
- 持久化:保持访问。
APT(高级持续性威胁)组织常常使用零日——因为成本虽高,但能绕过常规防御。
防御的思路
既然无法防御"未知的漏洞",怎么办?
一、纵深防御(Defense in Depth)
不依赖单一防线:
- 网络分段(限制横向移动);
- 最小权限(限制单个漏洞的破坏范围);
- 应用沙箱(如浏览器沙箱、容器隔离);
- 行为检测和异常检测(不依赖特征库)。
二、快速响应能力
- 监控补丁公告;
- 建立资产清单(知道要打哪些补丁);
- 能快速测试和部署紧急补丁。
三、缓解措施
很多时候,即使没有补丁,也可以:
- 禁用有问题的功能;
- 应用配置变更;
- 部署 WAF/IPS 规则(拦截已知的利用模式)。
四、减少攻击面
- 关闭不必要的服务和端口;
- 卸载不用的软件;
- 限制软件的安装权限。
五、威胁情报
关注本行业、本技术栈的漏洞动态。
一个经济视角
零日漏洞有黑市价格——不同目标(如主流操作系统、移动平台、特定应用)的漏洞价格差异很大。
这形成了一个灰色市场,包括漏洞经纪人(broker)。
争议:当安全公司或政府机构购买零日漏洞用于攻击(而非推动修复)时,公众实际上处于风险之中。这是安全社区长期争论的议题。
常见误区
"零日漏洞很常见。"
实际上,真正的零日(在被利用时厂商完全不知情)相对罕见——因为发现并利用一个零日需要相当高的技术能力和资源。
日常遇到的大多数攻击,使用的是已知漏洞(N-day)——即已经有补丁、但用户尚未安装的漏洞。
这恰恰说明:及时打补丁,能防御绝大多数攻击。
说明:本文为安全领域的知识整理。