什么是CVSS?CVSS是由哪个组织定义和维护的?CVSS主要用途是什么?CVSS 3.X与2.X版本主要有哪些区别?如何给一个CVE漏洞进行评分?读完本文你将收获所有答案。如还有其他相关疑问,欢迎留言讨论。
CVSS全称是Common Vulnerability Scoring System,中文翻译为通用漏洞评分系统,CVSS是一个用于沟通软件漏洞特征和严重性的开放框架,它由FIRST(Forum of Incident Response and Security Teams)定义和维护。CVSS提供了一种方法来获取漏洞的主要特征,并生成反映其严重性的数值评分,取值范围[0,10],取值越高表明漏洞越严重,主要用于帮助组织或企业在漏洞管理流程中评估与定级漏洞。CVSS当前最新版本为3.1(2019年6月发布),关于CVSS 3.1版本的官方详细介绍文档可以点此下载,当前正在推进CVSS 4.0版本,解决了3.X版本中存在的一些问题。
Note: FIRST是一个美国的非盈利组织,FIRST成员主要来自教育、商业、供应商、政府和军事等多种组织的团队。FIRST旨在将来自世界各国的事件响应和安全团队聚集在一起,以确保所有人都能安全上网。目前在中国有12个团队加入了FIRST,如阿里、华为、中兴、腾讯。
团队 | 团队名称 |
---|---|
ASRC | Alibaba Security Response Center |
China Mobile | China Mobile Communications Co., Ltd. CN |
CNCERT/CC | National Computer Network Emergency Response Technical Team / Coordination Center of China |
Dahua PSIRT (Suspended) | Dahua Products Security Incident Response Team |
Data Star Observatory | Beijing Data Star Observatory Co., Ltd. |
Eversec | Eversec Technology Co.,Ltd |
HSRC (Suspended) | Hikvision Security Response Center |
Huawei PSIRT (Suspended) | Huawei Products Security Incident Response Team |
OSRC | OPPO Security Response Center |
Qi An Xin CERT | Qi An Xin Group |
Tencent Cloud | Tencent Cloud Computing (Beijing) Co., Ltd |
ZTE PSIRT | ZTE Product Security Incident Response Team |
CVSS由三个度量组组成:
基础组产生的分数范围为0到10,然后可以通过对时间和环境度量进行评分来细化基础得分,以便更准确地反映特定时间点用户环境中的漏洞所造成的相对严重性。对时间和环境指标进行评分不是必须的,但建议对其进行更精确的评分。CVSS分数可通过向量字符串表示,如CVSS:3.1/AV:A/AC:H/PR:N/UI:R/S:C/C:N/I:L/A:L/E:P/MUI:N。接下来会分别详细介绍以上三个度量组。
图1:CVSS打分计算公式
基本度量组表示漏洞的内在特征,不随时间和环境变化,基础度量组由二个子度量组和一个范围元素组成,
Note:易受攻击的组件:通常是指软件应用程序、模块、驱动程序、硬件设备。
在对基础度量进行评分时,应假设攻击者对目标系统的弱点有深入了解,包括一般配置和默认防御机制(例如内置防火墙、速率限制、流量监控)。例如,利用导致可重复、确定性成功的漏洞仍然应视为攻击复杂性的低值,与攻击者的知识或能力无关。此外,特定于目标的攻击缓解(例如,自定义防火墙过滤器、访问列表)应反映在环境度量评分组中。
Note: 特定配置不应影响影响CVSS基础得分的任何属性
该指标反映了漏洞利用的可能性。为了利用易受攻击的组件,攻击者越远(逻辑上和物理上),该度量值(以及因此的基础分数)就越大。假设可以通过网络利用漏洞的潜在攻击者数量大于需要物理访问设备才能利用漏洞的可能攻击者数量,因此可以获得更高的基本分数。
指标值 | 描述 |
---|---|
Network (N) 网络 | 通过网络访问可利用的漏洞,漏洞组件与网络协议栈绑定。例如,攻击者通过在广域网(例如,CVE‑2004‑0230)上发送特制的TCP数据包,导致拒绝服务(DoS)。 |
Adjacent (A) 相邻网络 | 通过相邻网络访问可利用的漏洞,相比N,攻击只限于同一个共享的物理网络(蓝牙和IEEE 802.11)或逻辑网络(本地IP子网),或来自安全域其他有限的管理域(例如,MPLS) |
Local (L) 本地网络 | 通过本地网络访问即可利用的漏洞,漏洞组件未与网络协议栈绑定,攻击是通过读、写、执行能力发起的 |
Physical § 物理访问 | 通过物理访问才能利用的漏洞,需要攻击者物理上接触或操控漏洞组件 |
Note: Network和Adjacent的攻击是绑定协议栈的,而Local和Physic的攻击是不绑定网络协议栈的;
该度量描述了攻击者无法控制的条件,攻击者必须存在这些条件才能利用该漏洞。
指标值 | 描述 |
---|---|
低(L) | 不存在特殊的访问条件或例外条件,攻击者可以对漏洞组件进行反复攻击 |
高(H) | 成功攻击要求超出攻击者控制的条件,即需要攻击者投入一定的努力,在成功前针对 漏洞组件做好准备或执行工作 |
Note:攻击者不可掌控的条件有中间人、序列号、共享秘钥、难以赢得的竞争条件等。
此度量描述攻击者在成功利用漏洞之前必须拥有的权限级别。如果不需要特权,则基础分数最高。
指标值 | 描述 |
---|---|
无(N) | 攻击者在攻击前未授权,在发起攻击时也不需要访问任何设置或文件 |
低(L) | 攻击者需要一定权限,获得正常影响某个用户拥有的设置和文件的能力。或者拥有低权限的攻击者可能拥有仅影响非敏感资源的能力 |
高(H) | 攻击者需要对组件的重要(如管理员)权限,可影响组件范围的设置和文件 |
一般认为可以访问系统的核心配置文件、重新复位设置、加载卸载驱动、对文件系统可以不受限的访问等一个或多个特权的账户属于影响力较高的账户,PR取值应为H。
此度量描述了除攻击者之外的用户参与成功攻击易受攻击组件的要求。
指标值 | 描述 |
---|---|
无(N) | 对漏洞的利用不需要用户交互 |
需要(R) | 要想成功利用漏洞需要提前做一些行动,如,只有在管理员安装某个应用、点击某个链接或打开某个文档时攻击者才能利用某个漏洞、 |
机密性是指仅授权用户可访问和披露受限信息,以及防止未授权用户访问或披露。当受影响组件的损失最高时,基本得分最高。
指标值 | 描述 |
---|---|
高(H) | 机密性完全丧失,导致所有受影响组件中的资源泄露给攻击者,虽然仅可以获取某些受限信息,但泄露的信息会带来直接且严重的影响 |
低(L) | 机密性有一定的丧失,攻击者可以获取某些受限信息,但圣获得的信息无法控制或损失的数量或种类有限。信息泄露不会给受影响组件带来直接、严重损失 |
无(N) | 受影响组件未受到机密性损失 |
Integrity指信息的可信度和真实性。
指标值 | 描述 |
---|---|
高(H) | 完整性完全破坏,或保护完全丢失,会带来直接、严重的后果。比如,攻击者可以修改受影响组件保护的任何文件 |
低(L) | 可能对数据进行修改,但攻击者无法控制修改的结果,或修改量有限。数据的修改不会给受影响组件带来直接、严重后果 |
无(N) | 受影响组件完整性没有破坏 |
机密性和完整性影响度量适用于受影响组件使用的数据(例如,信息、文件)的机密性或完整性损失,但该度量指受影响组件本身的可用性损失,例如网络服务(例如,网络、数据库、电子邮件)。由于可用性是指信息资源的可访问性,因此消耗网络带宽、处理器周期或磁盘空间的攻击都会影响受影响组件的可用性。
指标值 | 描述 |
---|---|
高(H) | 可用性完全丧失,造成攻击者能够让受影响组件拒绝向合法用户提供服务,该损害是可以持续或长期的,会带来直接、严重的后果。比如,DDos攻击 |
低(L) | 性能降低或资源可用性受到干扰,即使多次利用漏洞,攻击者也不能完全向合法用户拒绝服务,总体上不会给受影响组件带来直接、严重后果 |
无(N) | 受影响组件可用性没有影响 |
Note:可用性取值为H时,表明在某个时间点有全部资源不可访问的情况。
范围度量描述一个易受攻击组件中的漏洞是否会影响组件中超出其安全范围的资源。
度量指标 | 描述 |
---|---|
无改变(U) | 被利用的漏洞仅能对同一个授权主体所管理的资源产生影响,即漏洞组件和受影响组件是同一个组件 |
改变(C) | 被利用的漏洞可以对超出存在漏洞组件授权之外的资源产生影响,漏洞组件和受影响组件不是同一个组件 |
Note:Scope是Authorization Scope的简称,所以Scope是个授权域,即对某些资源(文件、内存、CPU等)有特定的权限。Scope取值为C时,AV/AC/UI/PR基于漏洞组件选择,然后分别对漏洞组件和受影响组件分别选择C/I/A的评分,最后选择较高的评分作为最终评分。
时间度量组反映了有漏洞特征可能会随时间而变化,但不会在用户环境中变化。例如,一个简单易用的漏洞工具包的出现会增加CVSS分数,而创建一个官方补丁会降低它。
Note: 由于该度量组平时很少用到,在此不做详细展开,更多细节可以查看官方文档,点击下载。
环境度量组表示与特定用户环境相关且独立的漏洞特征。考虑因素包括是否存在安全控制措施(用于降低被攻击的部分或全部损失或风险),以及技术基础设施中易受攻击系统的重要性。
Note:由于该度量组平时很少用到,在此不做详细展开,更多细节可以查看官方文档,点击下载。
打开网址https://www.first.org/cvss/calculator/3.1,基于上面介绍的评分维度进行勾选,系统会自动算出CVSS基础评分。
在已知道打分向量的前提下可以直接把打分向量拼接在网址后面,按下回车系统自动选择对应取值并完成打分计算。如
https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:A/AC:H/PR:N/UI:R/S:C/C:N/I:L/A:L/E:P/MUI:N
出于某些场景,对基础、时间和环境分数进行文本表示是有用的,常用的为严重级别划分,具体如下
严重级别 | CVSS评分 |
---|---|
无(None) | 0.0 |
低(Low) | 0.1 - 3.9 |
中(Medium) | 4.0 - 6.9 |
高 (High) | 7.0 - 8.9 |
致命 (Critical) | 9.0 - 10.0 |
向量字符串是一组CVSS度量的文本表示。它通常用于以简洁的形式记录或传输CVSS度量信息。
CVSS v3.1向量字符串以标签“CVSS:”和当前版本的数字表示“3.1”开头。度量信息以向量的形式出现,每个度量前面都有一个正斜杠“/”,用作分隔符。每个度量都是缩写形式的度量名称、冒号“:”及其相关度量值。具体见下表:
度量组 | 度量名称(缩写) | 取值集合 | 是否必须 |
---|---|---|---|
Base | Attack Vector (AV) | [N,A,L,P] | Yes |
Base | Attack Complexity (AC) | [L,H] | Yes |
Base | Privileges Required (PR) | [N,L,H] | Yes |
Base | User Interaction (UI) | [N,R] | Yes |
Base | Scope (S) | [U,C] | Yes |
Base | Confidentiality © | [H,L,N] | Yes |
Base | Integrity (I) | [H,L,N] | Yes |
Base | Availability (A) | [H,L,N] | Yes |
Temporal | Exploit Code Maturity (E) | [X,H,F,P,U] | No |
Temporal | Remediation Level (RL) | [X,U,W,T,O] | No |
Temporal | Report Confidence (RC) | [X,C,R,U] | No |
Environmental | Confidentiality Requirement (CR) | [X,H,M,L] | No |
Environmental | Integrity Requirement (IR) | [X,H,M,L] | No |
Environmental | Availability Requirement (AR) | [X,H,M,L] | No |
Environmental | Modified Attack Vector (MAV) | [X,N,A,L,P] | No |
Environmental | Modified Attack Complexity (MAC) | [X,L,H] | No |
Environmental | Modified Privileges Required (MPR) | [X,N,L,H] | No |
Environmental | Modified User Interaction (MUI) | [X,N,R] | No |
Environmental | Modified Scope (MS) | [X,U,C] | No |
Environmental | Modified Confidentiality (MC) | [X,N,L,H] | No |
Environmental | Modified Integrity (MI) | [X,N,L,H] | No |
Environmental | Modified Availability (MA) | [X,N,L,H] | No |
例如,如果基础度量值为“攻击向量:网络,攻击复杂性:低,所需权限:高,用户交互:无,范围:不变,机密性:低,完整性:低、可用性:无”,并且没有指定的时间或环境度量,则会产生以下向量:
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:L/I:L/A:N
此漏洞会发送一个畸形的心跳请求到服务器,服务器内存会作出响应从而引发漏洞,主要原因是OpenSSL在验证心跳请求的有效性之前就将心跳包后的内存信息发送给了攻击者。
基础打分计算如下:
解释:
AV取值N – 通过远程发送心跳包即可执行攻击
AC取值L – 攻击者通过构造畸形心跳请求的难度不大
PR取值N – 整个攻击过程不需要权限验证
UI取值N – 无需截获通信包来进行交互
S取值U – 只影响到了当前服务器内存上的数据
C取值H – 内存数据泄露给了攻击者
I取值N – 数据未被修改
A取值N – 系统正常运行
根据CVSS v3.0计算器代码创建了CVSS v3.1计算器,主要是对度量描述的更改和对基础公式的小修改。
安全内容自动化协议(SCAP:Security Content Automation Protocol)是由美国国家标准与技术研究院(NIST)制定的一套安全规范,可以使技术安全操作得到自动化和标准化。2007年,美国国家标准与技术研究所(NIST)将CVSS v2.0作为其安全内容自动化协议(SCAP)的一部分。
https://www.first.org/cvss/user-guide