漏洞数据库与评分:NVD与CVE基础、CVSS评分机制详解、EPSS介绍
聊到SBOM,很多人第一反应是「我有了物料清单,然后呢?」
然后就是——你得知道这些组件里有没有漏洞,漏洞有多严重,该先修哪个。
这一章,我们就来把漏洞数据的源头和评分体系彻底讲透。说白了,就是教你读懂「漏洞的语言」。
4.1 NVD与CVE:漏洞世界的「身份证」与「户籍系统」
先讲CVE。CVE的全称是Common Vulnerabilities and Exposures,你可以把它理解成每个漏洞的「身份证号」。比如Log4j那个惊天大洞,编号就是CVE-2021-44228。
有了这个编号,全世界的人讨论同一个漏洞时,说的就是同一个东西。没有CVE,你想想看,大家各叫各的,那不乱套了?
NVD呢?它是美国国家漏洞数据库(National Vulnerability Database)。你可以把它看成「户籍系统」——它不光记录了CVE编号,还做了大量增强工作:
- 给漏洞打上影响的产品、版本标签
- 计算CVSS评分(这个我们马上细讲)
- 提供修复建议、参考链接
- 标注漏洞类型(CWE分类)
关键点:SBOM扫描工具查到的漏洞,绝大多数都来自NVD。但NVD的数据更新有延迟——我遇到过好几次,漏洞已经公开了,NVD上还没出评分。这时候就要结合其他数据源来辅助判断。
我个人习惯,在搭建漏洞管理流程时,至少会配置两个数据源:NVD作为基础,再搭配一个商业或社区漏洞库做补充。这样能减少「空窗期」的风险。
4.2 CVSS评分机制详解:别只看那个「最终分数」
CVSS,通用漏洞评分系统。现在主流是V3.1版本,V4.0也已经在路上了。
很多人拿到一个漏洞,只看CVSS总分——比如9.8分,就认为「天塌了」。其实这是不对的。CVSS的价值在于它的分解指标,而不是那个孤零零的数字。
CVSS由三个度量组构成:
| 度量组 | 含义 | 关键指标举例 |
|---|---|---|
| 基础指标(Base) | 漏洞本身的固有属性 | 攻击向量(AV)、攻击复杂度(AC)、权限要求(PR) |
| 时间指标(Temporal) | 随时间变化的因素 | 利用代码成熟度(E)、修复级别(RL) |
| 环境指标(Environmental) | 你的具体环境的影响 | 机密性要求(CR)、可用性要求(AR) |
举个例子。一个CVSS 9.8的漏洞,如果攻击向量是「网络」(AV:N),那确实危险。但如果它的攻击向量是「本地」(AV:L),那实际风险就低很多——攻击者得先拿到你机器的登录权限。
我的经验:在SBOM修复优先级排序时,我从来不看裸的CVSS分数。我会把基础指标里的「攻击向量」和「攻击复杂度」单独拎出来看。AV:N + AC:L的组合,才是真正需要优先处理的。
CVSS评分还有一个坑——它不反映漏洞是否已被实际利用。一个CVSS 10分的漏洞,如果没人写利用代码,那它就是个「理论上的危险」。反过来,一个CVSS 7.5分的漏洞,如果已经被大规模利用,那它比那个10分更紧迫。
这就引出了我们下一个话题——EPSS。
4.3 EPSS:预测「谁会先被捅」的评分系统
EPSS,全称Exploit Prediction Scoring System,利用预测评分系统。它由FIRST组织(对,就是管CVSS的那个FIRST)推出。
EPSS要回答的问题很简单:这个漏洞在未来30天内被利用的概率有多大?
它不看你漏洞的CVSS有多高,而是看大量真实世界的威胁情报数据:
- 有没有公开的PoC(概念验证代码)
- 有没有在野利用报告
- 有没有被集成到自动化攻击工具中
- 社交媒体、暗网上的讨论热度
EPSS输出的分数是0到1之间的概率值。比如EPSS 0.95,意味着有95%的概率在未来30天内被利用。
注意:EPSS不是CVSS的替代品,而是互补品。CVSS告诉你「漏洞有多严重」,EPSS告诉你「漏洞被利用的可能性有多大」。两者结合,才是完整的风险画像。
我曾经在一个客户那里,他们用CVSS 9.0作为修复门槛,结果积压了上千个漏洞。后来我帮他们引入EPSS,把修复策略改成「CVSS ≥ 7.0 且 EPSS ≥ 0.1」,修复量直接降了60%,但覆盖了95%以上的真实攻击面。
嗯,这里要注意——EPSS也有局限性。它对新漏洞的预测能力偏弱,因为需要积累数据。所以对于0day或刚公开的漏洞,还是要结合人工研判。
4.4 三者的关系:一张图说清楚
我把CVE、CVSS、EPSS的关系画成了一张流程图,方便你理解它们在漏洞管理流程中的位置:
4.5 实战建议:怎么用这三样东西
讲完理论,给点实在的。我在团队里推的漏洞分级策略是这样的:
- 第一步:从SBOM扫描结果中提取CVE列表
- 第二步:查询NVD获取CVSS基础评分和EPSS评分
- 第三步:按「CVSS ≥ 7.0 且 EPSS ≥ 0.05」作为高优先级阈值
- 第四步:对「CVSS ≥ 9.0 但 EPSS < 0.01」的漏洞,标记为监控状态,不强制立即修复
- 第五步:每周刷新EPSS数据,因为利用概率是动态变化的
一个小技巧:EPSS数据可以免费获取,FIRST官网每天更新CSV文件。我写了个脚本,每天凌晨自动拉取,跟SBOM扫描结果做关联。这样每天早上打开电脑,就能看到最新的优先级列表。
最后说一句——工具是死的,人是活的。CVSS和EPSS都是辅助决策的参考,不是圣旨。真正重要的,是你对自己业务的理解:这个漏洞影响的组件,是不是暴露在公网?是不是处理敏感数据?有没有补偿措施?
把这些想清楚,漏洞修复就不再是「追着分数跑」的苦力活,而是有策略、有节奏的风险管理。