去年十月,漏洞我帮一个做电商的信息朋友排查服务器异常。他那边运维半夜打电话说机器CPU跑满,查询怀疑被挖矿。漏洞我上去一看,信息进程列表里躺着一个叫`kdevtmpfsi`的查询东西,心里咯噔一下——这名字太熟了。漏洞Redis未授权访问漏洞的信息经典产物。查了下版本,查询Redis 5.0.5,漏洞没设密码,信息端口还大剌剌开着6379对公网。查询从漏洞公开到被扫到,漏洞前后不到四十八小时。信息
这就是查询漏洞信息查询存在的意义。不是等出了事再去搜,而是你得知道,你手里这套东西,此刻正暴露在什么风险里。
大多数人查漏洞,第一反应是百度。搜“Redis漏洞”,出来的全是安全厂商的营销文章,标题一个比一个吓人,点进去先让你填手机号。真正能用的信息没几条。我一般直接去几个固定地方:NVD、CNNVD、CNVD,这三个是国家级漏洞库,数据全,更新也算及时。NVD是美国的,英文界面,但检索功能做得最好,每个漏洞有CVSS评分和CVE编号,方便交叉引用。CNNVD和CNVD是国内的,好处是有中文描述,有些国外漏洞库还没收录的国产软件漏洞,这里能查到。
但光看漏洞库不够。漏洞库告诉你“有这么个事”,不告诉你“你的机器是不是真中招了”。比如Log4j2那个核弹级漏洞,CVE-2021-44228,NVD上写得清清楚楚。可你如果只看了漏洞描述,可能觉得“哦,JNDI注入,跟我没关系”。实际上呢?你用的Elasticsearch、Kafka、甚至某些版本的Minecraft服务器,底层都拖着Log4j2。你不查资产,就不知道风险边界在哪。
我习惯用两条腿走路。一条是漏洞库订阅,RSS或者邮件列表,有新的高危漏洞直接推过来。另一条是资产测绘,用Shodan、Fofa这类工具,先摸清自己暴露在公网上的东西到底有哪些。这两条线一交叉,优先级就出来了:公网暴露+高危漏洞+有公开EXP,这三样占全了,别犹豫,连夜打补丁。
说回那个电商朋友。我查了下那个Redis漏洞的详情,CVE-2022-0543,Debian系Redis的一个沙盒逃逸,能直接执行Lua代码拿shell。再一看他的资产表,这台Redis不仅对公网开放,还连着内网好几台业务机。等于说门没锁,屋里还堆着金条。我让他先把6379端口从安全组里拿掉,然后升级Redis,加密码,绑定内网IP。前后折腾了三个小时。第二天他跟我说,同机房另一家公司的Redis被挖矿了,CPU烧到100%,业务全挂。
漏洞信息查询这件事,最怕的就是“我知道有漏洞,但我觉得轮不到我”。攻击者不挑食,扫描器是全网段跑的。你晚打一天补丁,就多一天窗口期。还有个坑是只看CVE编号,不看实际利用条件。有些漏洞评分高得吓人,但利用需要特定配置或者物理接触,实际风险没那么大。有些漏洞评分中等,但EXP满天飞,脚本小子都能用,反而更危险。所以查漏洞的时候,多花两分钟看看利用前提和公开EXP情况,能省掉很多无效加班。
工具方面,除了前面说的,再提一个:`nuclei`。这玩意儿是做漏洞扫描的,模板库更新快,社区活跃。你把自己的资产列表喂进去,它拿一堆POC挨个试,跑完出一份报告。省事。但别全信扫描结果,误报率不低,关键漏洞还是得手动验证。
最后说个实在的。漏洞信息查询不是一锤子买卖,是个持续动作。你今天查完,明天新漏洞出来了,资产变了,风险就变了。我自己的做法是每周花半小时过一遍订阅的漏洞通告,每月做一次全量资产扫描。花不了多少时间,但能让你在出事之前,先把该堵的洞堵上。