去年有个做跨境电商的网站朋友找我,说网站被挂马了,安全首页跳转到博彩页面。检测我问他上次扫漏洞是漏洞什么时候,他愣了半天:“扫漏洞?扫描服务器不是买了安全组吗?”这种对话我经历过太多次。很多人以为买了云服务、风险装了防火墙就万事大吉,等级实际上漏洞扫描这件事,网站风险等级的安全判定直接决定了你该多快动手、花多大代价修。检测
漏洞扫描工具跑完一圈,漏洞报告里密密麻麻的扫描条目,每一条都标着风险等级——严重、风险高危、等级中危、网站低危、信息。大多数人第一反应是看“严重”有几个,然后忽略了剩下的。问题就出在这里。
CVSS评分体系是行业里比较通用的参考。它从攻击途径、攻击复杂度、权限要求、用户交互、机密性影响、完整性影响、可用性影响这几个维度打分,算出一个0到10的分数。7.0以上算高危,9.0以上算严重。但CVSS有个毛病:它衡量的是漏洞本身的“理论杀伤力”,不考虑你的业务场景。
举个例子。一个SQL注入漏洞,CVSS可能给9.8分,严重级别。但如果这个注入点在一个内部管理后台,需要先登录VPN才能访问,那它的实际风险就比一个未授权就能触发的XSS低得多。反过来,一个中危的目录遍历漏洞,如果暴露的是用户上传的身份证照片目录,那实际风险直接拉满。
我见过最离谱的一次,某政府网站扫描报告里有个“低危”的Struts2漏洞。运维看了一眼就扔一边了。结果两周后被人拿shell,因为那个版本存在远程命令执行,只是扫描器版本库没更新,误判成了低危。工具是死的,人是活的。
严重级别的漏洞,通常意味着攻击者不需要任何前提条件就能直接利用。比如未授权的远程命令执行、反序列化漏洞、硬编码的数据库密码泄露在公网JS文件里。这种漏洞一旦被扫描出来,别犹豫,当晚就得修。我自己的习惯是,看到严重级别,先确认资产是否真的暴露在公网,然后直接拉群喊开发起床。
高危级别往往需要一些条件。比如需要登录后才能触发的越权、需要诱导用户点击的存储型XSS。不是说高危不重要,而是修复的紧急程度可以稍微缓一缓,但缓不代表拖。我一般给高危漏洞的修复窗口是48小时。超过这个时间,要么写临时WAF规则,要么先把功能下线。
中危和低危最容易积压。什么信息泄露、缺少安全响应头、Cookie没加Secure标记。这些东西单看确实不致命,但组合起来就是攻击链的一环。信息泄露告诉你用了什么框架、什么版本,缺少CSP让你更容易被XSS利用。我见过一个站,中危漏洞攒了三十多个,最后被人从其中一个SSRF漏洞打到内网,整个集群沦陷。
很多公司一年扫一次,为了过等保。这跟没扫区别不大。业务在迭代,代码在更新,今天没有漏洞不代表明天没有。我的建议是:生产环境每周至少一次全量扫描,每次发版后对新接口做增量扫描。扫描器选两个以上交叉验证,因为每个工具的漏洞库和检测逻辑都不一样。
风险等级是给你排优先级的,不是给你当免死金牌的。看到“低危”就跳过,跟开车看到黄灯就猛踩油门是一个道理。漏洞扫描报告不是用来交差的,是用来干活的。扫出来不修,不如不扫。