漏洞数据库与评分: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的关系画成了一张流程图,方便你理解它们在漏洞管理流程中的位置:

CVE、CVSS、EPSS 在漏洞管理中的关系 CVE · CVSS · EPSS 协同工作流 CVE 编号 NVD 增强数据 CVSS 严重性评分 EPSS 利用概率 风险优先级决策 修复行动 说明 CVE 是入口,NVD 做增强 CVSS 和 EPSS 共同指导优先级

4.5 实战建议:怎么用这三样东西

讲完理论,给点实在的。我在团队里推的漏洞分级策略是这样的:

  1. 第一步:从SBOM扫描结果中提取CVE列表
  2. 第二步:查询NVD获取CVSS基础评分和EPSS评分
  3. 第三步:按「CVSS ≥ 7.0 且 EPSS ≥ 0.05」作为高优先级阈值
  4. 第四步:对「CVSS ≥ 9.0 但 EPSS < 0.01」的漏洞,标记为监控状态,不强制立即修复
  5. 第五步:每周刷新EPSS数据,因为利用概率是动态变化的

一个小技巧:EPSS数据可以免费获取,FIRST官网每天更新CSV文件。我写了个脚本,每天凌晨自动拉取,跟SBOM扫描结果做关联。这样每天早上打开电脑,就能看到最新的优先级列表。

最后说一句——工具是死的,人是活的。CVSS和EPSS都是辅助决策的参考,不是圣旨。真正重要的,是你对自己业务的理解:这个漏洞影响的组件,是不是暴露在公网?是不是处理敏感数据?有没有补偿措施?

把这些想清楚,漏洞修复就不再是「追着分数跑」的苦力活,而是有策略、有节奏的风险管理。