CVSS谬误——你能相信世界上最流行的脆弱性度量吗?

NVD将CVSS的用法之一定义为“漏洞补救优先级的一个因素”,它是当前事实上的漏洞度量,通常被视为可靠的指导和许多法规遵循过程中的关键元素。在我们的会议中,我们将讨论真实的CVE例子,演示案例和CVSSv3.1缺乏提供准确的评估的整个类别,由于它的设计和它的各种错误处理。该会议还将触及特定的指标在CVE描述,可以提高在CVSS分数的信心,反之亦然。

听听专家Brian Moussalli的看法,他是JFrog的安全研究技术主管,在网络安全领域有超过13年的经验,在安全研究、逆向工程和恶意软件分析方面经验丰富。他擅长漏洞分析、威胁情报研究和自动威胁检测。

试试jfrog x射线>

转录:

Brian Moussalli:
你好,每个人。今天我们将讨论CVSS谬误并问,你能相信世界上最流行的脆弱性度量吗?
我是Brian Moussalli。我是JFrog安全公司的安全研究技术主管。我们将讨论什么是常见的漏洞评分系统,为什么CVSS不是一个准确的度量标准,我们将看几个现实生活中的例子。
常见的漏洞评分系统是什么?它是一个免费和开放的标准,用于评估软件和硬件漏洞的严重性,由事件响应和安全小组论坛开发。目前的版本是3.1,于2019年发布。CVSS实际上提供了三种评级方法。
第一个是基础得分,它根据几个特征反映漏洞的严重性,我们将在下一张幻灯片中详细讨论。第二个是时间评分,它根据随时间变化的因素(如利用代码的可用性)调整漏洞的基本严重程度。第三个分数是环境分数,它根据特定计算环境中是否存在缓解措施,将基础严重程度和时间严重程度调整为该环境。
CVSS用于什么?复杂的环境中充满了第三方软件包、硬件等等。无论是您的组织网络还是您在生产环境中使用的docker容器,几乎所有的东西都是由第三方软件或硬件组件组成的,这些组件可能在任何时候都很脆弱。这一事实会给您的组织或产品带来风险,并需要采取补救措施,但在生产环境中,补救措施在时间和工作方面可能代价高昂。因此,我们希望优先考虑产品环境中的漏洞修复。
输入CVSS。CVSS给我们一个分数,这有助于我们了解威胁有多严重,以及我们应该惊慌到什么程度。没有人喜欢暴露在黑客企图之下,由于补救需要软件开发人员或IT或DevOps团队的工作,所以应该正确地进行。
基础分数如何计算?我们有几个用来组成可利用性评分的指标,以及另一组用于影响评分的指标。这两个组合给出了基础分数和向量字符串,我们可以在下面的图片中看到。
访问向量度量显示了该漏洞是如何被利用的,如果它是一个本地攻击或可以使用网络连接进行的攻击。访问复杂性指标指的是利用漏洞的难度。所需的特权度量是指攻击者为了利用漏洞必须拥有的特权。用户交互指标指定利用此漏洞是否需要除攻击者以外的人的交互。范围指标指的是此漏洞对其他模块或资源的影响。2022世界杯阿根廷预选赛赛程保密性指标是指脆弱组件所管理的信息资源的保密性所受的影响,高表示保密性完全丧失。2022世界杯阿根廷预选赛赛程完整性指标指的是对组件受保护资源的影响。例如,如果攻击者能够在利用后修改文件,则高是完整性的完全丧失。可用性度量指的是对组件可用性的影响,高是完整的,可用性的损失,比如拒绝服务。
为什么CVSS不是一个准确的度量?CVSS未能说明的关键组件是代码先决条件,比如什么是脆弱的函数或这些函数的所有使用都是脆弱的?该信息可以在当前基本或向量字符串配置先决条件中表示,比如服务的脆弱配置是什么,它是默认配置还是普通配置。环境先决条件是,所有的Windows, Linux或mac,它们都是脆弱的吗?
让我们看一些例子来看看我到底是什么意思。cve - 2016 - 10749。这是cJSON中的缓冲区溢出。让我们来看看CVE的描述。第一个函数是cJSON中2016年10月2日之前的parse string函数,它有一个缓冲区过读,从一个以双引号开始、以反斜杠结束的字符串中可以看出。该漏洞的基本得分是9.8,这是非常关键的。是这样吗?
让我们来看看。正如我们在利用示例中看到的,为了利用这个漏洞,攻击者必须控制cJSON解析函数的输入。这意味着CVE的可利用性和影响是高度相关的。这取决于在我们的产品或环境中如何使用脆弱功能。如果安装了cJSON库,但是没有人使用它,那就非常非常不有趣了。另一方面,如果一个软件使用带有用户控制输入的cJSON解析函数,那就非常有趣了。攻击向量在向量字符串读取网络,但这实际上不是那么准确。
CVSS基础评分不考虑攻击向量是否依赖于上下文,这意味着它需要易受攻击的软件组件使用用户输入调用此函数。在这种情况下,用户输入是理解CVE是否与我相关的关键,以及是否应该引起临界CVE应该引起的恐慌。对于所需的权限指标也是如此,在本例中表示没有,但是利用此漏洞所需的特权取决于使用库的上下文。它可能只在需要事先身份验证的系统中可用。影响评分也是如此。影响也可能依赖于上下文,并依赖于运行脆弱进程或服务的权限。
让我们来看看另一个CVE。下一个是Apache的mod_sed模块中的一个越界写漏洞。它是一个过滤器模型,提供与新的流编辑器命令行工具相同的功能,但用于HTTP请求和响应。我们再次看到它获得了9.8分,这是很关键的,但它真的是这样吗?
让我们来看看。默认情况下不使用Mod_sed,实际上它非常罕见。这是一个罕见的过滤器模块使用。为了让Apache可以被利用,必须将其配置为使用sed模块。正如我们在这个配置中看到的,这个mod_sed模块可以被定义为某个端点的输入过滤器。在本例中,它是HTTP路由目录,这意味着所有对服务器的请求都将由该模块处理,但这是非常特殊的。在现实中,攻击者必须猜出正确的易受攻击端点,否则他们应该有权访问Apache的配置文件,这是非常、非常、非常不可能的。我建议在这种情况下,攻击的复杂度不应该很低。
CVSS评分没有考虑其他缓解措施,例如限制请求大小,这在这种CVE情况下可能有所帮助。成功利用CVE的另一个要求是发送到服务器的数据的大小。它需要超过2g的数据发送到服务器。这是CVSS中没有表达的另一件事,但在缓解和补救方面是至关重要的。这个漏洞可以通过在Apache的配置中使用LimitRequestBodySize指令来缓解,这是非常容易添加的。在我看来,这真的真的将风险从临界的9.8降低到更低的水平。
结论:CVSS对初始评估是有用的,但不能说明几个先决条件,如代码先决条件。当一个特定的函数是脆弱的,在我看来,攻击向量值应该是上下文相关的。上下文选项不存在,所以每个人都使用网络,这是非常不准确的,会导致困惑,或者可能不是困惑,但会导致cve获得很高的基础分数,利用分数。影响分数也是如此。影响分数分数与上下文关系密切。在许多情况下,它们依赖于漏洞可能产生的具体影响。如果是流程或服务拥有的特权,配置前提条件也没有考虑在内,或者脆弱配置有多常见,还是默认配置?我们可以在CVSS基础分数和向量字符串中指定所有的信息。
此外,环境附加条件,如Windows、Linux或macOS。它们都是脆弱的吗?有些库或软件服务可以在这三种系统或其他操作系统上运行,但它们是否都一样容易受到攻击?我们不能通过基础分数,可利用性分数或影响力分数来判断。关键是环境,环境,环境。了解漏洞的全部影响和严重性需要完整的背景。这是我们需要的,以便最好地利用CVSS评分在我们的组织中,当我们优先考虑什么需要补救和什么需要修复。
这里有一个来自JFrog的x射线的例子,你可以看到上下文分析。您可以看到,除了向用户显示CVSS评分之外,还有一个JFrog严重性度量和上下文分析字段,它们告诉用户CVE是否实际适用于他们的情况。下面,您可以看到,这取决于客户端第一方代码实际上以对其环境构成真正威胁的方式使用易受攻击的函数。客户端被提供特定的指针,指向具有确切文件和行的脆弱代码。这帮助他们以最好的方式补救这个漏洞,无论是改变发送给函数的参数(这会使它变得脆弱),还是确保在用户输入可能是问题的情况下,用户输入不会找到进入脆弱函数的方法。
底线是我们应该始终考虑CVE的完整背景,不幸的是,CVSS不足以理解和帮助我们优先考虑我们应该如何在补救中指导我们的资源。2022世界杯阿根廷预选赛赛程如果您有任何问题,请随时发邮件至brianm@www.si-fil.com。非常感谢。

快速释放,否则死亡