3.7 公共漏洞评分系统

虽然CVE计划提供了一种识别和记录漏洞的方法,NVD丰富了CVE数据并将其呈现在一个强大的数据库中,但通用漏洞评分系统(CVSS)则评估安全漏洞的严重性并分配严重性分数。CVSS致力于捕捉软件、硬件和固件漏洞的技术特性。它提供了一种平台和供应商无关的行业标准化评分方法,并且在分数来源的特性和方法方面完全透明。

CVSS起源于国家基础设施咨询委员会(NIAC)在2000年代初期的研究,CVSS版本1于2005年初问世。虽然NIAC的研究导致了CVSS的创建,但在2005年,NIAC选择了事件响应和安全团队论坛(FIRST)来领导和管理未来的CVSS计划。FIRST是一个位于美国的非营利组织,为计算机安全事件响应团队提供资源,如CVSS。虽然CVSS由FIRST拥有和运营,但其他组织可以在遵循FIRST CVSS规范指导的前提下使用或实施CVSS。CVSS经历了几次迭代,最初的CVSS在2005年初发布,CVSS v2于2007年发布,CVSS v3于2015年发布。截至本文写作时,CVSS已更新到v3.1规范。CVSS由三个核心指标组组成,如图3.4所示。

如前所述,CVSS由三个指标组组成:基本指标、时间指标和环境指标。漏洞的严重性基于固有特性,这些特性在假定最坏情况的情况下保持不变,无论部署环境如何。另一方面,时间指标调整基本分数,考虑随时间变化的因素,包括漏洞利用工具的实际可用性。环境指标根据计算环境的具体情况调整基本和时间严重性分数,包括减少风险的缓解措施的存在。

基本分数由产品所有者或第三方(如安全研究人员)分配。这些分数/指标在分配后保持不变,因此会被发布。由于发布方不会拥有托管或操作环境的全部背景信息以及潜在的缓解控制措施,因此CVSS消费者可以根据需要通过时间和环境分数来调整分数。成熟的组织通过基于这些因素进行调整,能够更好地优先处理漏洞管理活动,基于更准确的风险计算,考虑到其具体环境和所涉及的控制措施。

深入探讨每个指标组,基本指标组涉及随时间一致的固有特性,除非有新信息出现,无论该组存在于何种环境中。基本指标组包括可利用性指标和影响。可利用性指标包括攻击向量、攻击复杂性以及所需权限等。这些指标围绕一个易受攻击的组件及其被利用的难易程度。另一方面,影响指标使用传统的网络安全CIA三元组(机密性、完整性和可用性),这涉及漏洞被利用的后果以及对易受攻击组件的影响。

基本指标

基本指标做出了一些假设,例如攻击者对系统及其防御机制的了解。截至本文写作时,CVSS 3.1是现行版本,而CVSS 4.0正在开发中。我们的讨论将基于CVSS 3.1的视角。正如之前提到的,基本指标还包括特定于可利用性和影响的指标。在可利用性指标中,有攻击向量和复杂性、所需权限、用户交互和范围等因素。

攻击向量指标旨在提供关于恶意行为者可能使用的攻击方法的背景。由于需要物理接近才能进行攻击的情况较少,因此攻击向量的评分受到影响。攻击向量指标包括网络、邻接、本地或物理等值。从网络角度来看,攻击向量可能绑定到本地网络、远程可利用性,甚至可能涉及整个互联网。而邻接则绑定到特定的物理或逻辑范围,例如共享蓝牙网络/范围或在同一局域子网中。本地涉及访问系统键盘或控制台,但也可能包括远程SSH访问。本地还可能需要用户交互,例如通过网络钓鱼攻击和社会工程。最后,物理指标值意味着恶意行为者需要物理访问易受攻击的组件才能利用漏洞。

虽然攻击向量指标基于攻击者可用的路径和方法,但攻击复杂性涉及超出恶意行为者控制的条件,可能包括易受攻击组件上存在的特定配置。攻击复杂性分为低或高。低复杂性指的是允许恶意行为者反复成功利用易受攻击组件的情况,而高复杂性则更复杂,可能需要恶意行为者收集知识、准备目标环境或插入网络路径,例如使用路径攻击。

所需权限指标描述了攻击者必须具备的权限级别才能成功利用漏洞。在不需要任何权限的情况下,基本分数会最高;而在需要恶意行为者具备管理员级别访问权限的情况下,分数会较低。所需权限的值包括:

■ 无:不需要访问系统或组件

■ 低:需要基本用户权限

■ 高:需要管理员级别的权限才能利用漏洞

用户交互指标描述了除恶意行为者外的其他用户需要进行的操作,以使漏洞成功利用。一些漏洞可以在没有其他用户参与的情况下成功利用,而其他漏洞则需要额外用户的参与。此指标非常简单,可能值为“无”或“需要”。

最后一个可利用性指标是范围,描述了易受攻击组件的利用是否可能超出其自身的安全范围并影响其他资源和组件。该指标要求了解易受攻击组件对其他资源的影响范围,更基本地说,需要了解哪些组件最初在其管理权限之下。范围的两个指标值是“未改变”和“已改变”,表示利用对其他安全权限管理的组件的影响程度。

在基本指标中,还有影响指标,以传统的CIA三元组(机密性、完整性和可用性)表示。CVSS建议分析人员将其影响预测合理地与恶意行为者可能造成的实际影响保持一致。如果你熟悉NIST风险管理框架对CIA的指导,你会注意到两者的相似之处。CIA指标值包括无、低或高。无意味着对CIA没有影响,低意味着对CIA有一定程度的损失,高意味着对CIA的完全损失以及在特定场景下漏洞利用所能造成的最严重影响。

时间指标

正如之前提到的,时间指标会随着时间的推移而变化,例如活跃的漏洞利用会提高分数,而可用的补丁会降低CVSS分数。请记住,这些因素与行业相关,而不是特定用户的环境或某个组织可能已实施的特定缓解措施。时间指标包括漏洞利用代码成熟度、补救水平和报告可信度。

漏洞利用代码成熟度基于相关利用技术的当前状态和可用于利用漏洞的代码的可用性。这通常被称为“野外利用”,一个显著的例子是CISA的“已知利用漏洞目录”(Known Exploited Vulnerabilities Catalog,www.cisa.gov/known-exploited-vulnerabilities-catalog),该目录定期更新已知被积极利用的漏洞,联邦机构需要修补这些已知的可利用漏洞。该列表已包含数百个漏洞以及适用于许多组织的各种软件和硬件利用方法。随着新漏洞被发现和确认,该列表会定期更新。漏洞利用代码成熟度指标包括未证明(unproven)、概念验证(proof-of-concept,PoC)、功能性(functional)、高级(high)和未定义(not defined)。这些指标代表了从没有利用代码或仅为理论性的情况,到完全功能化且自动化且不需要手动触发的情况。

补救水平指标有助于驱动漏洞优先级排序工作,涉及通过可用的官方修复方案进行的临时解决方案。潜在的指标值包括不可用(unavailable)、临时解决方案(workaround)、临时修复(temporary fix)和官方修复(official fix)。修复漏洞可能是可行的,或者需要非官方的临时解决方案,直到发布、验证并验证为可消费和实施的官方修复方案。

最后一个时间指标,报告可信度,涉及漏洞报告及其相关技术细节的实际可信度。初步报告可能来自未经验证的来源,但可能会逐渐被供应商或信誉良好的安全研究人员验证。潜在的指标值包括未知(unknown)、合理(reasonable)和确认(confirmed),代表了对报告的漏洞和细节的信心逐渐增加。这些因素会影响漏洞的整体评分。

环境指标

对于组织特定的背景,这是环境指标发挥作用的地方。由于每个环境都是独特的,并且有一系列可能影响环境评分的因素,如技术堆栈、架构和特定的缓解控制措施,每个软件消费者的环境指标都会有所不同。

环境指标帮助组织根据其操作环境的特定因素调整基本分数。这些修改围绕CIA三元组(机密性、完整性和可用性),允许分析人员根据每个CIA方面在组织业务功能或使命中所扮演的角色分配相应的值。修改后的基本指标是由于用户环境的具体情况而覆盖基本指标的结果。值得注意的是,这些修改需要对基本和时间指标因素有详细的了解,以进行准确的修改,从而不会低估漏洞对组织构成的风险。

CVSS 评分尺度

CVSS 使用一个定性的严重性评级尺度,范围从 0.0 到 10.0,如图 3.5 所示。

所有不同的 CVSS 评分指标和方法都会生成一个称为向量字符串的内容,CVSS 规范将其定义为“一种特定格式的文本字符串,包含分配给每个指标的每个值,并应始终与漏洞评分一起显示。” 向量字符串由指标组、指标名称、可能的值以及它们是否是必选项组成。这最终形成一个向量字符串,例如“攻击向量:网络,攻击复杂性:低,所需权限:高,用户交互:无,范围:未改变,机密性:低,完整性:低,可用性:无。”

计算这些指标需要详细了解可能的字段、值和其他因素。我们强烈建议您访问 CVSS v3.1 规范文档,以了解更多关于公式和指南的信息(www.first.org/cvss/v3.1/specification-document)。

批评意见

尽管CVSS被广泛使用和采用,但它也有其批评者。安全研究员和作家Walter Haydock在他的“Deploying Securely”博客(www.blog.deploy-securely.com)中的文章《CVSS:评估风险的不合适行业标准》(www.blog.deploy-securely.com/p/cvss-an-inappropriate-industry-standard)中,对CVSS提出了批评。Walter认为CVSS不适合评估网络安全风险。他引用了多篇行业领袖的文章,这些文章表明,尽管行业广泛使用CVSS进行风险评估,但单独使用CVSS进行风险评估并不恰当(https://pt-br.tenable.com/blog/why-you-need-to-stop-using-cvss-for-vulnerability-prioritization)。

正如Walter的文章以及其他文章所指出的,CVSS通常被用来帮助组织根据漏洞的利用难度和可能的影响程度来优先处理漏洞。像Tenable这样的组织的研究指出,不论这些漏洞是否可能被利用,CVSS评分为高或严重的漏洞中有超过50%从未被利用(https://pt-br.tenable.com/research)。研究表明,所有被评为高或严重的漏洞中,有75%从未实际有已知的利用代码发布,但安全团队仍然优先处理这些漏洞。这意味着,组织可能在浪费有限的时间和资源,优先处理不太可能甚至从未被利用的漏洞,而不是解决那些具有活跃利用代码的漏洞。

由于采用这种笼统的方法追踪CVSS评分为高和严重的漏洞,组织可能忽视了大量评分在4到6之间且具有活跃利用代码的漏洞,从而错失了大量风险。这是可以理解的,因为组织通常需要处理数百甚至数千个资产,这些资产通常与许多漏洞相关。当你淹没在大量漏洞数据中时,很难追踪和进行细致的漏洞管理,更不用说清楚了解哪些资产属于你的组织并构成风险。

要更深入了解CVSS,可以查看NIST发布的内部报告8409《衡量通用漏洞评分系统基本评分公式》(https://nvlpubs.nist.gov/nistpubs/ir/2022/NIST.IR.8409.pdf)。