一个团队花费整个迭代周期来修复一个隐藏在生产环境中从未调用过的库中的 CVSS 9.8 漏洞。与此同时,一个位于可访问的、面向互联网的终端节点上的 CVSS 6.5 漏洞却又持续了一个月之久,因为它从未被列入优先级列表。这并非假设,而是完全基于严重性评分进行漏洞优先级排序的默认结果,而且这种情况比大多数安全程序愿意承认的要普遍得多。
漏洞优先级排序的真正目的是什么
漏洞优先级排序是指从几乎总是过长而无法全部清理的漏洞列表中,决定优先修复哪些漏洞的过程。如果做得好,它回答的是一个比“理论上这个漏洞有多严重”更具体、更难的问题:它回答的是“现在修复这个漏洞,实际上能将这个特定系统的风险降低多少”。这两个问题并不相同,而将二者混淆正是大多数漏洞优先级排序工作失败的原因。
为什么仅凭严重程度评分会失败
CVSS 的设计初衷并非作为一个完整的优先级排序系统,它只是一个严重性评分,描述漏洞在一般情况下理论上可能造成的严重程度。它并未涉及以下内容:
- 可达性。 无论存在漏洞的代码路径是否在应用程序中的任何地方被实际调用,或者只是存在于一个没有任何调用的依赖项中,都毫无用处。
- 可利用性。 是否存在实际可用的漏洞利用程序,或者该漏洞是否仅存在于实验室环境之外的理论中。
- 曝光。 无论受影响的组件是面向互联网,还是位于内部服务三层之后,没有外部访问权限。
- 商业背景。 无论受影响的系统是涉及客户数据或支付流程,还是无人依赖的低价值内部工具。
如果仅根据 CVSS 评分来确定漏洞优先级,那么一个位于无法访问代码中的 9.8 级漏洞会比一个位于可访问的、面向互联网的路径上且存在已知漏洞利用的 6.5 级漏洞更紧急。这种排序是本末倒置的,它直接源于只关注漏洞严重性而忽略了其他所有决定实际风险的因素。
漏洞优先级排序错误的隐性成本
损失不仅仅是浪费的工程时间,尽管这确实存在:团队经常花费大量时间处理那些实际上并不构成风险的高危漏洞,而真正可利用的漏洞却依然悬而未决。更隐蔽的损失是信任。当开发人员反复被从真正的工作中抽调出来去修复那些最终被证明无法访问或已被其他地方缓解的漏洞时,他们也会开始忽视下一个警报,而漏洞优先级排序的根本目的——优先修复真正重要的问题——也在悄然失效,即使表面上漏洞列表仍在按顺序处理。
有效的漏洞优先级排序真正需要什么
有效的漏洞优先级排序是在严重性的基础上叠加多个信号,而不是直接取代严重性:
- 可达性分析. 确认存在漏洞的函数确实是从应用程序代码中调用的,而不仅仅是存在于依赖关系树中。
- 漏洞利用。 检查公开的漏洞利用或活跃的攻击活动是否针对特定漏洞,而不仅仅是 CVE 漏洞家族。
- 跨扫描仪进行重复数据删除。 同一个根本问题由三个不同的工具报告,不应该被视为三个独立的待处理事项,从而争夺关注。
- 商业及曝光背景。 根据受影响资产实际影响的范围来评估结果,而不仅仅是根据 CVE 的通用评分。
- 清晰可见的漏斗图,而不是扁平的列表。 能够看到有多少发现通过了每个筛选条件,从每个问题到真正可利用的内容,这使得优先级排序变得有理有据,而不是一个黑箱。
最后一点比听起来更重要。一个扁平化的、按严重程度排序的列表无法让团队了解问题的规模:待办事项列表中 40% 的问题真的是存在的,还是只有 2%?采用漏斗视图,先列出所有已发现的问题,然后是可修复的问题,接着是可解决的问题,再是已知漏洞存在的问题,最后是在此环境下真正可被利用的问题,这样就能将原本庞大的列表简化成一个简洁且易于理解的列表。
漏洞优先级排序工具应关注哪些方面?
并非所有以漏洞优先级排序为卖点的平台都能真正实现上述功能。在评估漏洞优先级排序工具时,几个问题就能迅速揭穿营销噱头:
- 它显示的是可达性,还是仅仅报告存在易受攻击的软件包?
- 它是否会对扫描器(包括已在使用的第三方工具)中的重复结果进行去重,还是每个来源都会添加一个单独的、不相关的列表?
- 安全主管能否看到整个流程,有多少调查结果被筛选掉以及原因,还是只能看到最终的“优先排序”列表,而无法了解其背后的逻辑?
- 它是否考虑了来自真实威胁情报的漏洞利用情况,还是仅仅考虑了披露时发布的静态 CVSS 评分?
- 优先级是否同样适用于原生扫描器和导入的第三方工具的扫描结果,还是仅适用于供应商自己的扫描结果?
最后一个问题比表面看起来更重要。许多漏洞优先级排序工具只会优先考虑它们自己发现的漏洞,而忽略了从外部获取的所有漏洞。 SAST, SCA或者第三方扫描仪放在单独的、未排序的一堆中。
Xygeni 如何进行漏洞优先级排序
Xygeni 的 ASPM 该方法采用四阶段漏斗:首先,整合来自原生扫描器和第三方工具的漏洞信息;其次,构建统一的漏洞清单可视化;然后,利用去重、可访问性和 AI 驱动的上下文信息进行关联和优先级排序,最终将漏洞信息提交给开发人员处理。实际上,该漏斗通过筛选可修复漏洞、可访问应用程序代码漏洞、已知漏洞以及在特定环境中真正可利用的漏洞,将完整的漏洞列表缩小到足够小的规模,以便团队能够彻底解决问题,而不是仅仅停留在初步筛选阶段。
因为此漏洞优先级层适用于从第三方扫描器接收的发现结果,以及 Xygeni 自带的原生扫描器一支球队不必非得彻底摧毁 现有工具 为了获得统一且关联的视图。优先级排序逻辑基于现有数据运行,弥补了大多数漏洞优先级排序工具仅对自身发现的结果进行排序时所存在的不足。
常见问题解答
为什么 CVSS 本身不足以进行漏洞优先级排序?
CVSS衡量的是理论上的严重性,而非特定环境下的实际风险。它没有考虑易受攻击的代码是否可访问、是否存在实际的漏洞利用程序,以及受影响系统的暴露程度,而所有这些因素都会显著影响漏洞是否应该优先修复。
在漏洞优先级排序中,严重性和可利用性之间有什么区别?
严重性描述的是漏洞理论上可能造成的损害程度。可利用性描述的是在存在有效漏洞利用程序和可访问代码路径的情况下,这种损害是否实际能够实现。高严重性、低可利用性的漏洞通常不如中等严重性、高可利用性的漏洞那么紧迫。
漏洞优先级排序工具是否也需要涵盖第三方扫描器发现的结果?
是的,否则团队最终会得到几个独立的、互不相关的优先级列表,每个工具一个列表,而不是一个统一的视图,来了解整个技术栈中哪些事情才是最重要的。
可达性分析究竟能将调查结果清单缩减多少?
虽然因代码库而异,但大多数被标记的漏洞都位于从未实际调用的代码路径中,这意味着仅凭可达性就常常会在评估可利用性之前,将很大一部分发现排除在认真考虑范围之外。
规模较小且优先级更高的清单是否意味着风险被忽视了?
不,恰恰相反。真正通过漏洞优先级排序生成的更短列表意味着过滤掉了无关信息,而不是真正的风险。相反,未经筛选的冗长列表无人能够彻底处理,反而会导致更糟糕的结果,因为真正的风险会被淹没在海量信息中。







