当前位置:首页 > 综合

cvss漏洞评分系统

CVSS不是漏洞“漏洞严重程度”的评分。它评的评分是漏洞的技术特征,跟你的系统业务损失没有直接关系。一个CVSS 9.8的漏洞漏洞,如果跑在隔离网段的评分测试机上,实际风险可能还不如一个7.5分的系统、暴露在公网的漏洞核心业务系统漏洞。很多人把CVSS分数当成优先级排序的评分唯一依据,这是系统误用。

这套系统由FIRST组织维护,漏洞1999年提出,评分到现在已经迭代到第四版。系统第一版基本是漏洞个粗糙的定性工具,第二版开始引入向量字符串,评分第三版把评分拆成基础、系统时间、环境三组。第四版改动最大,把“可利用性”和“影响”两个子分组的权重做了重新分配,还引入了“安全度量”的概念——比如一个漏洞需要物理接触才能利用,分数会被压得很低。

拿CVE-2021-44228(Log4Shell)举例。它刚爆出来的时候,NVD给的CVSS 3.1基础分是10.0。为什么是满分?因为攻击向量是网络(AV:N)、复杂度低(AC:L)、不需要权限(PR:N)、不需要用户交互(UI:N),同时影响范围变了(S:C),机密性、完整性、可用性全是高影响。但实际响应中,很多团队发现自己的Log4j版本虽然受影响,却因为JNDI lookup被禁用或者出站流量被防火墙拦了,实际利用不成功。这时候CVSS分数没变,但你的环境变量已经改变了风险。CVSS 3.1的环境指标就是干这个的——你可以把“机密性要求”从高改成低,分数马上往下掉。

第四版有个挺有意思的改动:把“攻击复杂度”拆成了“攻击复杂度”和“攻击要求”。前者衡量攻击者能不能稳定复现,后者衡量攻击者需不需要额外的条件,比如目标系统必须开着某个服务、必须处于某个网络位置。这个拆分更贴近实战。以前一个漏洞需要中间人位置才能利用,在3.1里可能只体现在“攻击向量”上,现在会单独扣分。

但CVSS有个根本性的问题:它不告诉你这个漏洞有没有公开的利用代码。一个CVSS 8.1的漏洞,如果Exploit-DB上已经有Metasploit模块,和另一个8.1分但只有理论PoC的漏洞,优先级完全不一样。EPSS(Exploit Prediction Scoring System)在补这个缺口,用概率预测未来30天内被利用的可能性。我现在看漏洞,基本是CVSS看技术底子,EPSS看现实威胁,再结合资产重要性做判断。

还有个常见误解:CVSS分数高不代表“容易修”。有些9.8分的漏洞,打一个补丁重启服务就完事。有些6.5分的,需要改配置、改代码、还得协调多个团队,拖三个月。运维成本跟CVSS无关。我见过一个团队因为一个7.2分的漏洞卡了半年,原因不是技术难,是那个模块的负责人离职了,没人敢动。

CVSS的向量字符串比分数本身更有价值。比如CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H,你一眼能看出攻击路径和影响面。分数只是个摘要,向量才是细节。很多漏洞管理平台只显示分数,不展示向量,这是偷懒。安全工程师应该习惯读向量,就像医生看化验单不能只看箭头,得看具体数值和参考范围。

最后说个实操观察:CVSS 4.0的采用速度比预期慢。很多扫描器到现在还在输出3.1的向量。NVD从2023年底开始逐步支持4.0,但大量历史CVE不会重新评分。这意味着未来几年你会同时看到3.1和4.0的分数混在一起,两者不可直接比较。做漏洞优先级排序的时候,先确认你拿到的分数是哪个版本算出来的,别把3.1的9.0和4.0的9.0当成一回事。

分享到: