漏洞优先级排序原理:CVSS、EPSS与可利用性分析
各位同学,咱们今天聊点实在的。拿到一份SBOM,里面可能躺着几百上千个漏洞。你不可能全修,也没那个资源。那问题来了——先修哪个?
这就是漏洞优先级排序要干的事。说白了,就是给每个漏洞打个分,排个队,把最要命的拎出来。我个人习惯把这套逻辑拆成三块:CVSS、EPSS、还有可利用性分析。咱们一块一块说。
2.1 CVSS评分机制详解
CVSS,全称Common Vulnerability Scoring System,通用漏洞评分系统。目前主流是v3.1版本。它把漏洞的严重程度量化成一个0到10的分数。
我记得刚入行那会儿,团队里有人看到CVSS 9.0以上的漏洞就慌,恨不得连夜加班修。后来发现,有些高分漏洞其实根本打不进来。为什么?因为CVSS评的是“理论严重性”,不是“实际风险”。
CVSS评分由三个维度组成:
- 基础指标(Base Metrics): 漏洞本身的固有属性,不会随时间变。包括攻击向量、攻击复杂度、权限要求、用户交互、影响范围、机密性/完整性/可用性影响。
- 时间指标(Temporal Metrics): 随时间变化的因素,比如是否有公开利用代码、是否有官方补丁、漏洞是否被证实可利用。
- 环境指标(Environmental Metrics): 跟你自己的环境相关,比如受影响组件在你的系统里是否关键、是否有缓解措施。
实际工作中,大多数团队只看了基础指标。这其实是个坑。你想想看,一个CVSS 9.8的漏洞,如果只影响一个你根本没部署的组件,那它对你来说就是0分。
下面这张图帮你理清CVSS评分的整体逻辑:
2.2 EPSS评分机制
CVSS有个硬伤——它不告诉你这个漏洞在真实世界里被利用的概率有多大。一个CVSS 7.5的漏洞,可能已经被黑客玩出花了;另一个CVSS 9.0的漏洞,可能发布三年了都没人碰。
EPSS就是来解决这个问题的。全称Exploit Prediction Scoring System,利用预测评分系统。它基于大量历史数据,用机器学习模型预测一个漏洞在未来30天内被利用的概率。
EPSS的分数范围是0到1(或0%到100%)。0.5%听起来不高对吧?但你要知道,所有漏洞里只有不到2%的EPSS分数超过0.5%。换句话说,EPSS > 0.5%的漏洞,已经是高危中的高危了。
EPSS的核心数据源包括:
- CVE发布后的公开讨论热度(Twitter、GitHub、安全论坛)
- PoC(概念验证代码)是否公开
- 是否有在野利用报告
- 漏洞类型和受影响产品的流行度
下面这个表格帮你对比CVSS和EPSS的核心差异:
| 维度 | CVSS | EPSS |
|---|---|---|
| 评分范围 | 0 - 10 | 0 - 1 (0% - 100%) |
| 核心目标 | 衡量漏洞严重程度 | 预测被利用概率 |
| 数据来源 | 专家评估 + 标准公式 | 机器学习 + 海量历史数据 |
| 更新频率 | 基本不变(除非重新评估) | 每日更新 |
| 适用场景 | 漏洞分类、合规要求 | 优先级排序、资源分配 |
2.3 漏洞可利用性分析
CVSS和EPSS给了你两个分数,但还不够。你还需要回答一个问题:这个漏洞在我的环境里,到底能不能被利用?
这就是可利用性分析要干的事。它关注的是攻击者实际需要满足的条件。我把它拆成四个维度:
- 攻击路径分析: 攻击者需要从哪个网络位置发起攻击?是否需要本地访问?是否需要用户交互?
- 前置条件检查: 漏洞利用是否需要特定配置?是否需要依赖其他漏洞?是否需要特定版本的依赖库?
- 利用复杂度评估: 是否有公开的PoC?利用代码是否需要定制?是否需要绕过某些缓解措施(如ASLR、DEP)?
- 影响范围确认: 漏洞利用成功后,攻击者能获得什么权限?能访问哪些数据?能否横向移动?
嗯,这里要注意。很多团队在做可利用性分析时,只看了第一点。但真正决定漏洞是否“可被利用”的,往往是第二点和第三点。
举个例子。我之前遇到过一个CVE,CVSS 8.8,EPSS 0.8%,看起来非常危险。但仔细分析后发现,这个漏洞需要攻击者已经拥有目标系统的低权限账号。而我们的系统做了严格的网络隔离和最小权限控制,外部攻击者根本拿不到那个低权限账号。所以这个漏洞在我们环境里的实际可利用性,几乎为零。
最后,我分享一个我在实际项目中用过的决策矩阵,帮你快速做优先级排序:
| CVSS 等级 | EPSS 等级 | 可利用性 | 建议操作 |
|---|---|---|---|
| 高 (≥7.0) | 高 (≥0.5%) | 高 | 立即修复,24小时内 |
| 高 (≥7.0) | 低 (<0.5%) | 高 | 计划修复,1周内 |
| 中 (4.0-6.9) | 高 (≥0.5%) | 中 | 计划修复,2周内 |
| 中 (4.0-6.9) | 低 (<0.5%) | 低 | 监控,下次迭代处理 |
| 低 (<4.0) | 任意 | 任意 | 记录,定期复审 |