自学内容网 自学内容网

软件缺陷等级评定综述

1. 前言

正确评估软件缺陷等级,在项目的生命周期中有着重要的作用:

  • 指导缺陷修复的优先级和资源分配
    在软件开发和维护过程中,资源(包括人力、时间和资金)是有限的。通过明确缺陷的危险等级,可以帮助团队合理分配资源。软件缺陷等级可以帮助开发团队确定修复缺陷的优先顺序。高等级的缺陷通常对软件的功能和性能影响更大,因此需要优先修复,可能需要更多的资源和注意力来快速解决。例如,对于高危险等级的缺陷,如系统崩溃、数据泄露等问题,需要立即调配经验丰富的开发人员和测试人员进行修复,投入较多的时间和精力,确保系统的关键功能和安全性不受影响。而对于低危险等级的缺陷,像界面上的一些小瑕疵,可以安排在资源相对充裕的时候处理。

  • 评估软件质量和风险管理
    缺陷危险等级为风险评估提供了一个量化的指标。它使得团队能够清晰地识别出哪些缺陷可能对系统造成严重的危害,从而提前做好应对措施。通过缺陷等级的划分,可以对软件的质量进行评估。不同等级的缺陷对软件的影响程度不同,从而影响软件的整体质量。
    通过识别和分类缺陷,可以更好地管理项目风险。高等级的缺陷可能涉及到安全、合规或重大的业务影响,需要特别关注。基于缺陷危险等级,管理人员可以做出更明智的风险管理决策。对于高危险等级的缺陷,可能会决定暂停系统的发布或更新,直到缺陷得到修复;对于中等级缺陷,可以考虑采取一些临时的缓解措施,如限制功能的使用范围,同时安排修复计划;对于低等级缺陷,则可以根据实际情况权衡修复的成本和收益。

本文将从软件静态分析工具、开发规范、国家标准、以及评估体系多个角度讨论软件缺陷等级的划分方式,以便对软件缺陷检查工具、软件缺陷管理中缺陷等级的划分起到一定的指导作用。

2. SonarQube规则的严重等级

SonarQube 是我们非常熟悉的一个开源的代码质量管理平台,用于对代码进行静态分析,以帮助开发团队检测和解决代码中的潜在问题,提升代码质量。

SonarQube 针对质量的不同特性给出了四种缺陷类型:

  • 可维护性: 代码异味(Code smellj)
  • 可靠性: 错误(Bug)
  • 安全性:漏洞(Vulnerability)
  • 安全性:安全热点(Security hotspot)

在缺陷的严重等级上,采用影响和可能性两个维度,来评估问题的等级。

严重等级影响(Impact)可能性(Likelihood)
致命(Blocker)
严重(Critical)
主要(Major)
次要(Minor)

3. Fortify规则的严重等级

Fortify 是一款广泛使用的应用程序安全检测工具,可以说是静态分析领域的领军工具。

Fortify据问题的影响性,以及被利用的可能性,将问题分为以下四个风险象限:

在这里插入图片描述

由此得到缺陷的四个等级的划分:

  • 严重(Critical)- 高影响 (>=2.5) 和高可能性 (>=2.5)。攻击者很容易发现和利用关键问题,从而导致广泛的资产损失;
  • 高(High)- 影响高 (>=2.5),但可能性低 (<2.5)。高优先级问题通常难以发现和利用,但可能会导致广泛的资产损失;
  • 中(Medium)- 低影响 (<2 .5), 但可能性高 (>=2.5)。中等优先级的问题很容易被发现和利用,但通常造成的资产损失很小;
  • 低(Low)- 低影响 (<2.5) 和低可能性 (<2.5)。低优先级问题难以发现和利用,通常造成的资产损失很小。

与SonarQube 不同的是,可能性的指数是根据规则的另外三个参数计算出来的。

  • 可能性计算公式:

可能性(Likelihood) = (准确性(Accuracy) x 可信度(Confidence) x 可能性(Probability)) / 25

这样就可能性指数就由工具的在规则上采用的检测技术和准确性来决定了,工具得到的信息越多,检测的越准确,可能性的指数也就越准确。

4. CERT规范的严重等级

CERT安全编码标准是由卡内基梅隆大学软件工程研究所(Software Engineering Institute, SEI)计算机应急响应小组(Computer Emergency Response Team (CERT))为各种语言开发的,其中的内容是接纳了全球范围的软件工程师社区的贡献而实现的。其目的是通过遵循统一的规则确保创建高质量、安全的代码,避免出现安全问题。

CERT 的安全编码涵盖了 C/C++/Java/Perl 等语言。CERT 规范参考了IEC 60812:2018 Failure modes and effects analysis (FMEA and FMECA)中基于故障模式(Failure Mode)、影响(Effects)和危急程度分析(Criticality Analysis)(FMECA)度量标准设定问题处理的优先级(priority)。

  • 告警分为四类: 致命, 严重, 一般, 提示(只用于检视类规则, 会存在较高的误报率)。
  • 告警等级依据:告警的严重性(Severity); 缺陷发生的可能性(Likelihood); 修复成本(Remediation Cost) 三个维度进行综合衡量, 得到告警处理的优先级。

4.1. 严重性(Severity)

  • 严重性(Severity): 忽略规则的后果有多严重。
含义缺陷举例
1高(High)拒绝服务攻击、异常终止
2中(Medium)数据完整性违规,无意中信息泄露
3低(Low)执行任意代码

4.2. 可能性(Likelihood)

  • 可能性(Likelihood): 违反规则而引入的缺陷可能导致可利用的漏洞。
含义
1不可能(Unlikely)
2有可能(Probable)
3可能(Likely)

4.3. 修复成本(Remediation Cost)

  • 修复成本(Remediation Cost): 遵守规则的成本有多高。
  • 注意: 修复成本越低, 得分越高;
含义检测修正
1高(High)人工人工
2中(Medium)自动人工
3低(Low)自动自动

4.4. 等级评定

  • 将每个规则的严重性(Severity)、可能性(Likelihood)、修复成本(Remediation Cost)的值相乘;
  • 等级(Level) = 严重性(Severity) * 可能性(Likelihood) * 修复成本(Remediation Cost)
  • 乘积的范围是1到27,尽管只有以下10个不同的值是可能的:1、2、3、4、6、8、9、12、18和27。
    • 一般: 优先级在1 - 4;
    • 严重: 优先级在6 - 9;
    • 致命: 优先级在12 - 27;
    • 提示: 这个用于检视类的规则, 不在等级评估范围之内。
  • 以下是优先级和级别的可能解释。
LevelPrioritiesPossible Interpretation
L112 , 18 , 27严重性高,可能,维修成本低
L26 , 8 , 9 中等严重性,可能,中等维修成本
L31 , 2 , 3 , 4严重性低,不太可能,维修成本高
提示用于检视类规则

在这里插入图片描述

5. GB/T 30279-2020 信息安全技术 网络安全漏洞分类分级指南

GB/T 30279-2020《信息安全技术 网络安全漏洞分类分级指南》将漏洞分级分为技术分级和综合分级两种方式,每种分级方式均包括超危、高危、中危和低危四个等级。其划分依据如下:

5.1. 技术分级

危险等级描述
超危漏洞一旦被利用,将对系统造成极其严重的危害,如完全控制系统、导致关键数据大量泄露或系统完全瘫痪等。例如,存在可远程执行任意代码且无需用户交互的严重漏洞,攻击者可以轻易获取系统的最高权限,对整个系统进行任意操作,这类漏洞就属于超危级别。
高危漏洞被利用后,会对系统的安全性产生重大影响,如导致重要数据泄露、系统的关键功能受到严重破坏等。比如,存在可远程获取系统敏感信息的漏洞,或者能够使系统的重要服务中断的漏洞,这些都属于高危漏洞。
中危漏洞被利用后,会对系统造成一定程度的影响,但不会导致系统完全失控或关键数据的大量泄露。例如,存在一些可能导致系统部分功能异常、数据的完整性受到一定程度破坏,但不会对系统的整体运行产生致命影响的漏洞。
低危漏洞被利用后,对系统的影响较小,通常只是一些轻微的安全隐患,如可能导致系统的一些非关键功能出现异常、信息的保密性或完整性受到轻微影响等。

5.2. 综合分级

综合考虑了漏洞的技术分级以及环境因素等,反映在特定时期特定环境下漏洞的危害程度。其考虑的环境因素指标包括被利用成本、修复难度、影响范围等。

危险等级描述
超危在特定环境下,漏洞的危害程度极高,其影响范围广泛,可能对整个组织或网络造成严重的破坏,并且被利用成本低、修复难度极大。
高危在特定的网络环境和业务场景中,漏洞的危害程度较高,对系统的正常运行和数据安全有较大威胁,被利用成本相对较低,修复难度较高。
中危漏洞在当前环境下具有一定的危害性,但影响范围相对较小,被利用成本和修复难度处于中等水平。
低危漏洞的危害程度相对较低,对系统的影响较小,被利用成本较高或者需要特定条件才能被利用,修复难度相对较低。

5.3. 漏洞分级过程

漏洞分级过程主要包括最初的指标赋值、中间的指标评级和最后的分级计算三个步骤,

  • 指标赋值:是对根据具体漏洞对每个漏洞分级指标进行人工赋值;

  • 指标评级:是根据指标赋值结果分别对被利用性、影响程度和环境因素等三个指标类进行评级;

  • 分级计算:是根据指标评级计算产生技术分级或综合分级的结果。

    • 技术分级:结果由被利用性和影响程度两个指标类计算产生
    • 综合分级:由被利用性、影响程度和环境因素三个指标类计算产生。
  • 漏洞分级过程图

在这里插入图片描述

5.4. 网络安全漏洞指标评级

5.4.1. 被利用性评级

被利用性评级反映网络安全漏洞触发的技术可能性。被利用性指标组中各指标的不同取值的组合对应不同的被利用性级别。被利用性级别分为9级,用1-9的数字表示,数值越大被利用的可能性越高。被利用性指标组中指标有:

  • 访问路径
  • 触发要求
  • 权限需求
  • 交互条件

5.4.2. 影响程度评级

影响程度评级反映网络安全漏洞触发造成的危害程度。影响程度指标组中各指标的不同取值的组合对应不同的影响程度级别。不同的影响程度级分为9级,用1-9的数字表示,数值越大导致的危害程度越高。影响程度指标组中指标有:

  • 保密性
  • 完整性
  • 可用性

5.4.3. 环境因素评级

环境因素是对漏洞进行评级是需要考虑的漏洞所处的网络环境、当前漏洞被利用的技术程度等外部环境。环境因素评级反映在参考环境下,漏洞的危害程度。环境因素指标组中各指标的不同取值的组合对应不同的环境因素级别。不同的环境因素级别分为9级,用1-9的数字表示,数值环境因素导致的漏洞危害程度越高。环境因素指标组中指标有:

  • 被利用成本
  • 修复难度
  • 影响范围

5.5. 评级示例:CVE-2014-0160(OpenSSL缓冲区溢出)

CVE-2014-0160(OpenSSL缓冲区溢出) 漏洞分级示例。

  • 漏洞简介
    OpenSSL的TLS和DTLS实现过程中的d1_both.c和t1_lib.c文件中存在安全漏洞,该漏洞源于当处理Heartbeat Extension数据包时,缺少边界检查。远程攻击者可借助特制的数据包利用该漏洞读取服务器内存中的敏感信息(如用户名、密码、Cookie、私钥等)。

  • 漏洞评级
    CVE-2014-0160漏洞评级表

指标类指标子类描述赋值分级
被利用性访问路径通过网络远程访问网络9
-触发要求无需特定环境,普通环境即可触发
-权限需求无需任何特权信息或身份验证
-交互条件漏洞触发无需用户或系统的参与或配合不需要
影响程度保密性攻击者从内存中可读取多达64KB的数据,通过该漏洞读取每次攻击泄露出来的信息,可轻松获取到服务器的私钥、用户的cookie和密码等严重4
-完整性漏洞对完整性不产生影响
-可用性漏洞对可用性不产生影响
环境因素被利用成本协议本身漏洞, 直接暴露于公网之下,容易被利用7
-修复难度已有较为完整的修复方案,修复难度不大
-影响范围影响范围广泛
  • 漏洞分级
    通过上述表格,CVE-2014-0160漏洞
  • 被利用性为 9 级、影响程度为 4 级,因此技术评级为: 高危;
  • 该漏洞的环境因素为 7 级,结合技术评级为:高危;因此该漏洞的综合评级为高危。

注:该标准于 2020 年 11 月 19 日公布,与 2021 年 6 月 1 号正式实施。该标准参考了 2019 年 6 月发布的 CVSS 3.1版本。所以该标准的很对地方很接近 CVSS 的评级方法。

6. 通用漏洞评分系统(Common Vulnerability Scoring System(CVSS))

CVSS 是事故响应与安全团队论坛(FIRST)发布的通用漏洞评分系统。CVSS 是评估软件安全漏洞严重性的标准化框架,可根据可利用性、可依据保密性、完整性、可用性和所需权限的影响等因素进行评分,或以低、中、高和关键几种等级定性,最终分数越高则表示漏洞越严重。

通用漏洞评分系统 (CVSS) 是一个开放式框架,用于传达软件漏洞的特征和严重性。CVSS 由四个指标组组成:基本指标组(Base)、威胁指标组(Threat)、环境指标组(Environment) 和 补充指标组(Supplemental)。

  • 基本指标组(Base): 表示漏洞的内在特性,这些特性在一段时间内和用户环境中保持不变;
  • 威胁指标组(Threat): 反映随时间变化的漏洞特征;
  • 环境指标组(Environment): 表示用户环境独有的漏洞特征。

2023 年 6 月 发布了 CVSS 4.0, 4.0 中重新定义了评分术语体系,强调 CVSS 不等同于 CVSS 基础分,提出了 CVSS-B(CVSS 基础分)、CVSS-BT(CVSS 基础分 + 威胁分)、CVSS-BE(CVSS 基础分 + 环境分)、CVSS-BTE(CVSS 基础分 + 威胁分 + 环境分)等概念,使用的评分指标越多,漏洞评分的准确性也越高。

CVSS 向量字符串由用于派生分数的值的压缩文本表示形式组成。

CVSS 4.0使用四个指标组来评估漏洞风险,最终转换成分数的方法如下:

在这里插入图片描述

6.1. 基本指标组(Base Metrics)

6.1.1. 可利用性(Exploitability)

  • 攻击向量(Attack Vector(AV)):评估利用漏洞所需的访问级别。例如,网络访问(Network)比本地访问(Local)的攻击向量得分更高,因为远程利用漏洞通常更容易且影响范围更广,而物理接触(Physical)访问的漏洞利用难度相对更大,得分则较低。
  • 攻击复杂度(Attack Complexity(AC)):反映攻击者控制范围之外的因素对利用漏洞的影响程度。如果攻击者无需额外信息或特殊技术就能轻松利用漏洞,那么该漏洞的攻击复杂度低,得分较高;反之,如果需要复杂的技术、大量的信息收集或特定的环境条件才能利用漏洞,攻击复杂度则高,得分较低。
  • 攻击要求(Attack Requirements (AT)):此指标捕获启用攻击的易受攻击系统的先决条件部署和执行条件或变量。这些与安全增强技术/技术(参考攻击复杂性)不同,因为这些条件的主要目的不是明确缓解攻击,而是作为易受攻击系统的部署和执行的结果自然出现。如果攻击者不采取措施来克服这些情况,则攻击可能只是偶尔成功或根本不会成功。
  • 所需权限(Privileges Required(PR)):基于攻击者利用漏洞所需的权限级别进行评分。如果漏洞利用需要高级权限(如管理员权限),那么得分相对较低,因为获取高级权限通常较为困难;如果只需要普通用户权限甚至不需要任何权限就能利用漏洞,得分则较高。
  • 用户交互(User Interaction(UI)):判断攻击者是否需要其他用户的操作来利用漏洞。若攻击者可以在无需用户进一步操作的情况下完成攻击,得分会更高;如果需要用户执行特定操作(如点击链接、下载文件等)才能触发漏洞利用,得分则会受到一定影响。

6.1.2. 缺陷影响(Vulnerable Impact)

  • 保密性(Confidentiality(VC)):反映可能被泄露或丢失的数据量。如果漏洞可能导致大量敏感信息泄露,那么保密性方面的影响较大,得分较高;如果只是少量非敏感信息可能受到影响,得分则相对较低。
  • 完整性(Integrity(VI)):对攻击者可以对系统中的数据施加的操纵程度和数据的可信性进行评分。例如,如果漏洞能让攻击者轻易篡改关键数据,破坏数据的完整性,那么在这方面的得分会较高;如果只是对数据的影响较小,得分则较低。
  • 可用性(Availability(VA)):反映攻击对其他用户访问系统的能力的影响。如果漏洞攻击会导致系统完全无法使用或严重影响系统的正常运行,使其他用户无法访问系统,那么可用性方面的得分会很高;如果只是对系统的可用性造成轻微影响,得分则相对较低。

根据上述各子指标的评估结果,综合计算得出基本指标组的分数,该分数在一定程度上反映了漏洞的内在特征和潜在影响。

6.2. 威胁指标组(Threat Metrics)

这部分指标主要考虑漏洞在当前威胁环境下的相关因素,如漏洞的利用代码成熟度、攻击者的能力和动机等。不过,威胁指标组的具体计算方式相对复杂,需要结合更多的外部信息和专业判断。例如,一个漏洞如果已经存在成熟的利用代码,并且有大量的攻击者对其感兴趣,那么该漏洞在威胁指标组的得分会相应提高。这部分指标是对基本指标组的补充,用于更全面地评估漏洞在实际威胁环境下的风险程度。

6.3. 环境指标组(Environmental Metrics)

环境指标是针对发现漏洞的特定环境而言的,具有唯一性。它需要考虑组织的安全协议、易受攻击的组件对其系统的重要性以及任何安全漏洞对漏洞的影响等因素。例如,在一个安全防护措施较为薄弱的环境中,漏洞的风险可能会被放大,环境指标组的得分会相应增加;而在一个具有强大安全防护体系的环境中,漏洞的影响可能会受到限制,得分则会相对较低。

6.4. 补充指标组(Supplemental Metrics)

包括一些额外的因素,如漏洞的可自动化程度(是否可蠕虫攻击)、漏洞响应的力度和紧迫性等。这些指标可以为漏洞评估提供更多的参考信息,但对最终分数的影响相对较小。

6.5. 漏洞评分

综合以上四个指标组的评估结果,按照一定的算法和权重分配,最终得出漏洞的CVSS 4.0分数。CVSS 4.0的分数范围仍然是0.0到10.0,分数越高表示漏洞越严重。一般来说:

  • 0.1 - 3.9分为低风险漏洞;
  • 4.0 - 6.9分为中等风险漏洞;
  • 7.0 - 8.9分为高风险漏洞;
  • 9.0 - 10.0分为关键风险漏洞。

需要注意的是,具体的转换算法和权重分配是由CVSS 4.0标准的制定者确定的,并且可能会根据实际情况不断进行调整和优化。

6.6. CVSS评分举例:CVE-2021-44228(log4shell)

以我们熟悉的 Log4j 缺陷举例:

  • 各指标评估:

VSS v4 分数:基础 + 威胁 10.0

Metric 度量Value 价值Comments 评论
攻击向量(Attack Vector(AV))Network 网络易受攻击的系统可从远程网络访问。
攻击复杂度(Attack Complexity(AC))Low 低不需要专业条件或高级知识。
攻击要求(Attack Requirements (AT))None 没有尽管攻击者必须准备环境,以便通过控制可访问的 LDAP 服务器来实现攻击的最坏结果(例如,代码执行),但应假定系统易受攻击。
所需权限(Privileges Required(PR))None 没有攻击者无需任何权限即可成功利用此漏洞。
用户交互(User Interaction(UI))None 没有该攻击不需要任何用户交互。
易受攻击的系统机密性(Vulnerable System Confidentiality(VC))High 高攻击者可以使用提升的权限运行任意命令并访问敏感的系统信息。
易受攻击的系统完整性(Vulnerable System Integrity(VI))High 高攻击者可以使用提升的权限运行任意命令并修改系统配置。
易受攻击的系统可用性(Vulnerable System Availability(VA))High 高攻击者可以使用提升的权限运行任意命令,并获得足以重置或关闭设备的访问权限。
后续系统机密性(Subsequent System Confidentiality(SC))High 高攻击者可以利用此漏洞查看下游系统的敏感信息。
后续系统完整性(Subsequent System Integrity(SI))High 高攻击者可以利用此漏洞修改下游系统中的数据。
后续系统可用性(Subsequent System Availability(SA))High 高攻击者可以利用此漏洞影响下游系统的可用性。
漏洞利用成熟度(Exploit Maturity(E))Attacked 攻击在野外有已知的漏洞。
  • CVSS 4.0 评估字符串:
    CVSS 4.0的评估为:CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/E:A

  • 计算页面计算得分:
    通过计算页面可以得到风险值为:10, 可见这个漏洞的危害性之大。

在这里插入图片描述
在这里插入图片描述

7. DREAD模型

DREAD,由 Microsoft 创建的威胁建模框架(Meier 等人,2003 年)。尽管 Microsoft 后来以担心其主观性为由放弃了该模型(Shostack,2008 年),但它今天仍被广泛使用。

DREAD 模型使用比例评级系统定量评估网络威胁的严重性,该系统为风险类别分配数值。DREAD 模型有五类:

  • 破坏性(Damage):了解特定威胁能够造成的潜在损害。
  • 可重复性(Reproducibility):确定复制攻击的难易程度。
  • 可利用性(Exploitability):分析系统的漏洞以确定对网络攻击的敏感性。
  • 受影响的用户(Affected Users):计算有多少用户会受到网络攻击的影响。
  • 可发现性(Discoverability):确定发现系统基础结构中的漏洞的难易程度。

DREAD 模型使分析师能够对威胁的严重性进行评级、比较和确定其优先级,方法是在上述每个类别中为给定问题分配 0 到 10 之间的评级。最终评级(计算为这些类别评级的平均值)表示风险的总体严重性。

7.1. D - 破坏性(Damage potential)

攻击可能造成的伤害。

评级描述
0无损伤
5信息披露
8与个人或雇主相关的非敏感用户数据泄露
9非敏感管理数据泄露
10破坏信息系统;数据或应用程序不可用

7.2. R - 可重复性(Reproducibility)

攻击被复制的难易程度。

评级描述
0困难或不可能
5复杂
7.5简单
10非常简单

7.3. E - 可利用性(Exploitability)

发起攻击需要的条件。

评级描述
2.5高级编程和联网技能
5可用的攻击工具
9Web 应用程序代理
10Web 浏览器

7.4. A - 受影响的用户(Affected Users)

攻击会影响的范围。

评级描述
0无用户
2.5个人用户
6用户少
8管理用户
10所有用户

7.5. D - 可发现性(Discoverability)

发现漏洞的难易程度。

评级描述
0难以发现漏洞
5HTTP 请求可以发现漏洞
8在公共领域发现的漏洞
10在 Web 地址栏或表单中发现漏洞

7.6. 总体威胁评级

总体威胁评级的计算方法是将这五个关键领域获得的分数相加。威胁的风险严重性类别如下:

评级分数范围描述
严重(Critical)40–50严重漏洞;地址。
高(High)25–39严重脆弱性;请考虑尽快进行审核和解决。
中等(Medium)11–24中等风险;在解决严重和关键风险后进行审查。
低(Low)1–10对基础设施和数据的风险较低。

8. 总结

  • 我们了解了各种缺陷的的评级方法,这包括:
    • 静态分析工具:Sonarqube、Fortify;
    • 编程规范:CERT编程规范;
    • 国家标准:GB/T 30279-2020《信息安全技术 网络安全漏洞分类分级指南》;
    • 业界缺陷评级方法:CVSS 4.0 和 微软 DREAD;
  • 为了更细致的处理缺陷,通常会将缺陷分为四级,可以简单的表示为:致命、高、中、低;
  • 评判的指标通常包含:危害性、可利用性、修复成本;
  • 各个方法都试图完全通过定量的方式进行评级,但不可避免的还是会存在一定的主观性判定;
  • 同一缺陷会因为所处应用系统的位置不同,承担的业务不同,所处的环境不同,带来危害也会存在差异。用户需要在处理的时候根据这些差异评估风险;
  • 分析工具中给出的往往是一个综合的危害,针对不同的应用程序,应在实际的使用中,做出相应的调整。

9. 参考


原文地址:https://blog.csdn.net/shendong70/article/details/143650875

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!