为了做好这件事,他们在漏洞堆里挖呀挖呀挖
“你觉得这么些年总共30万个漏洞很多吗?”奇安信威胁情报中心负责人汪列军反问道。
01
2017年3月14日,微软在例行补丁日发布了数十个安全更新,其中有一个被微软官方标记为MS17-010的漏洞被正式修复。
根据微软官方的描述,此安全更新程序修复了Microsoft Windows中的多个漏洞。如果攻击者向Windows SMBv1服务器发送特殊构造的消息,那么其中最严重的漏洞可能允许远程执行代码。
对于Microsoft Windows的所有受支持版本,此安全更新的等级为“严重”。
无独有偶,一个月后的4月14日晚,Shadow Brokers(影子经纪人)公布了一大批黑客工具,其中“永恒之蓝”可以利用上述微软漏洞获取系统最高权限。经过技术验证,已经可以确认利用这个漏洞能够形成蠕虫式的攻击传播,可惜当时没有足够大的声量把这个认定传播开来引发最大程度的重视。
最终最坏的结果还是沿着技术逻辑的必然导向发生了,攻击者打了所有人一个措手不及。当年的5月12日爆发了迄今为止最严重的安全事件,利用“永恒之蓝”工具制作的勒索病毒WannaCry开始广泛传播,数以百万计的机器中招下线。
事后回想起来,中招的群体无非就这么三种情况:
第一,压根没看到此次安全更新。谁没事会盯着微软官网,恐怕大多数人连微软的补丁日都不是特别关注。至于影子经纪人对外披露的黑客工具,那更是不知道躲在哪个网页里。
第二,看到了此次安全更新,但对于漏洞的危害一无所知。可以看到的是,除了打上一个“严重”的等级标签,微软官方对于该漏洞并没有过多的细节描述。事实上,在每年新增的数万个漏洞里面,被标记为“严重”的漏洞多如牛毛,如果没有点特殊技能,根本处理不过来,多一个少一个压根不会激起半点水花。而安全团队向来是人少事多,一个漏洞就这么被放过去了。
第三,什么都清楚,但由于各种原因不方便处理。对于该漏洞,微软官方给出的解决办法就是安装补丁。但补丁安装是有风险的,可能会出现蓝屏、卡顿、不兼容等各种各样的问题。
出于对风险的顾虑以及对于漏洞的“侥幸”,很多组织干脆就听之任之了。
综合以上三点原因,表面上看微软都已经把肉(补丁)送嘴边上了,还有人要么没看到,要么装作没看到,或者嫌弃不好吃,所以才有了后面发生的事情。
来看一组统计数据:在2022年奇安信CERT漏洞库新增的24,039条漏洞信息中,监测到有公开Exploit/PoC漏洞数量为721个、有在野利用漏洞数量为238个、0day漏洞数量为41个、APT相关漏洞数量为33个,共标记关键漏洞960个,仅占新增漏洞总量的3.99%。而如果只计算给组织造成实际危害的漏洞(即发现被攻击者成功利用),那么这个比例连1%都不到。
因此组织机构需要把一些真正能够造成威胁的漏洞给过滤出来重点关注,避免安全团队陷入到过多“无效”漏洞的海洋中无法自拔,反而对那些真正有威胁的漏洞视而不见。
最后是漏洞信息的富化工作。对于安全团队来说,一个“严重”的标签显然是远远不够的。影响漏洞实际危害的因素有很多,比如这个漏洞的影响范围有多大,有没有被发现已经成功利用了,有没有补丁,除了安装补丁之外还有没有什么别的应对方法等等。
获取这些信息除了参考官方发布的安全通告之外,就只能靠研究员对漏洞开展深入细致的研究了。只有综合尽可能全的信息,才好决定是应该优先修补还是可以暂时搁置,修的话是安装补丁还是用其他的缓解方法。
“漏洞信息的收集器、过滤器以及富化器就是漏洞情报的三大使命。”汪列军说,漏洞情报的魅力就在于告诉用户哪里有漏洞,有什么样的漏洞,漏洞的实际危害如何以及漏洞到底该怎么处置。
02
在经过一系列复杂处理后,用户最终拿到的漏洞情报包含多个字段和标签,包括最基本的漏洞名称、漏洞编号、影响范围、危害程度、风险评分等,这些会为用户判断漏洞的具体风险带来实际参考。
下图是奇安信CERT输出的Apache Log4j2任意代码执行漏洞的情报信息。可以看到除了下方的行业通用表格之外,上面还有奇安信CERT打上的密密麻麻的各种标签。
在所有这些标签或者字段当中,最直观也最有趣的当属漏洞评分了。目前最为流行的CVSS(即通用漏洞评分系统,Common Vulnerability Scoring System),分数范围是从0到10不等,0代表最不严重,10代表最严重。
国际应急响应联盟组织(FIRST)论坛还贴心的给出了得分计算器。
上述的Log4j2漏洞在v3.1版本的CVSS评分标准下,直接被拉满到了10分,被认为是“永恒之蓝”后最危险的漏洞之一,应该排在漏洞修复的最优先位置。
毫无疑问,CVSS为大部分漏洞的危害程度提供了一个非常直观的量化标准,对于漏洞情报和漏洞处置的优先级排序有着非常大的指导意义。
但是,如果一个“偷懒的”安全团队,完全按照CVSS分数的高低,来确定漏洞处置的优先级,那恐怕要掉进另一个坑里。
“就实际的表现来说,当前漏洞的CVSS评分高低并不能客观反映漏洞的实际风险。”
事情大致是这样的,微软在发布安全更新时,将一枚漏洞评为9.8分,引得诸多机构跟风;但奇安信CERT深入研究后,在给客户推送的漏洞情报中将评分修改为了8.8分,引发了几家客户的询问。
“原因很简单,微软认为漏洞触发不需要用户交互,但我们认为漏洞的触发需要用户点击攻击者特制的一个文档,从而提升了难度,所以得分就要稍微低一点。”汪列军解释道。
用他的话来说,升级到v3.1版本的CVSS评分系统,几乎将所有漏洞的评分都又提高了一大截。按照这个标准,半数以上的漏洞都成为了高危漏洞(即评分大于等于7.0),如果一个组织的漏洞修补原则是高危必修,那么这和不评分没区别,反正都是修不完。
评分拉不开差距,漏洞之间的危害程度,就很难在分数上体现出来。同样接近10分的漏洞,其实际危害可能有着天差地别。
而且,同样都是洞,破在不同的地方所导致的实际风险可谓是天差地别。
CVSS基础得分主要反映的是漏洞本身的严重程度,并不代表现实的风险大小。
早在2018年,施耐德公司的安全负责人就曾公开表示,同样类型的漏洞(如拒绝服务漏洞,触发后可导致相关服务宕机),如果是在IT系统中,会被认为风险没那么高;而如果出现在工控系统中,则其风险可能是致命的。
这很好理解。同样一条牛仔裤,同样形状和大小的洞,如果破在膝盖处,那是年轻人追逐的时尚“破洞裤”;如果破在口袋,那你放进去的手机和钱包就得小心了;如果破在裤裆,不打上补丁我想你是不会穿着它逛街的。
除此之外,时间窗口对于漏洞情报的影响也非常大。
汪列军说,以下几个时间节点会渐次影响漏洞的实际危害:
第一,新的关键漏洞公开,潜台词就是赶紧看看影响不影响自己正在用的产品;
第二,发现关键漏洞的技术细节,意思就是漏洞在技术上到底怎么出现的已经搞清楚了,估计很快就有人知道(甚至已经知道)这漏洞到底怎么用了;
第三,发现关键漏洞的 Exploit 或 PoC 公开,也就是说漏洞已经被证实可以在实际环境中利用,甚至已经出现了漏洞利用的代码,能修就赶紧修吧;
第四,发现关键漏洞的在野利用案例,已经发现有人成功利用了该漏洞,抓紧修吧,不修早晚打到你头上来;
第五,发现关键漏洞的新修补和缓解方案,照这些方法一步步来就行,总有一款适合你。
“这就是我们打标签的意义。”汪列军对笔者强调,我们打的标签多种多样,方便不同的客户按照标签去检索。仅仅是在野利用这一项,奇安信CERT已经标记了超过4000个漏洞。
有的标签还挺有意思。
“比如关键信息基础设施的运营单位会关注是否有APT组织利用,我们会打上APT组织相关,并且标明是哪些组织利用了这个漏洞;更多的组织会关注这个漏洞会不会像永恒之蓝那样引起大范围传播,我们会标记是否被某些自动化脚本集成(如僵尸网络),从而在互联网上批量攻击……”
03
有一点需要明确。如此多的漏洞标签并不是天上掉下来的,需要对漏洞进行持续的动态跟踪。
针对某个关键漏洞,奇安信CERT会连续发布一系列的安全通告,便于用户动态掌握漏洞所造成的的实际风险。
就像下图这样。
但动态跟踪需要一定的时间,如果再加上用户修补漏洞的过程,这段时间并不算太短。
但攻击者未必能给到这么多时间。大多数时候防御方是在跟攻击者抢时间,哪方先知道漏洞的存在及相应的细节,决定了谁在对抗中获胜。
国外知名漏洞情报公司VulnCheck在官网首页公布了一组数字,2018 年,从漏洞变为网络攻击武器需要接近一年的时间,到2023年,时间直接缩短到了只有8天。
不论这组数据是真是假,但是漏洞从首次曝光到发现野外利用的时间窗口,已经在极速缩短。
“漏洞的分析过滤不仅要基于准确的技术判定,还要足够快速,这样才能抢在攻击者之前避免漏洞被利用从而导致损失,需要及时地将与组织自身相关的漏洞风险通知到用户。”汪列军说。
第一是漏洞收集阶段。
通常情况下,漏洞的收集渠道主要包括厂商自行发布(如微软、甲骨文等)、NVD/CNVD/CNNVD等国内外主流漏洞库、独立漏洞研究机构、独立挖掘等,需要对这些渠道进行全面监测,才能掌握第一手漏洞信息。
“除了这些常规方法,我们还有独门秘籍。”汪列军故作神秘,“说穿了其实也没什么,就是我们有别人没有的补天平台。”
作为国内最大的漏洞收集平台之一,补天平台成立十年间,已经累计报送了超过一百万个漏洞。所谓的漏洞奖励计划无非就是平台发奖金,把白帽子手中挖到的漏洞“买”过来么。而奇安信近水楼台,能第一时间拿到尽可能全的漏洞信息。
顺便提一嘴,从漏洞曝光到美国国家漏洞库NVD发布漏洞信息,有时候能长达七八天,按照VulnCheck发布的数据,漏洞都已经被做成网络武器了。
第二是漏洞的验证阶段。
在拿到漏洞后,漏洞研究机构需要第一时间对漏洞验证进行复现,确认漏洞的实际危害。
汪列军表示:“漏洞的验证与复现最消耗时间的其实是涉及软硬件环境搭建,好比是在沙盘上搭建一个一比一还原的战场,方便研究员在沙盘上进行兵棋推演。”
至于为什么需要搭建一个虚拟环境,那要直接在现实环境中测试漏洞还不乱套了。
奇安信有个明显的优势,那就是产品线足够丰富,服务的客户足够多,复杂的产品线需要复杂的IT环境,这样漏洞研究员在面临任何漏洞环境搭建时,都显得游刃有余。
“所以我们很多时候能提前小半天发布一手漏洞情报。”汪列军说,别小看这小半天时间,有时候还真能挽狂澜于既倒。
第三是动态跟踪阶段,也就是客户喜闻乐见的“打标签”环节。
与其说是对漏洞的动态跟踪,不如说是对威胁的动态跟踪,掌握的是攻击者的信息。漏洞一经曝光就在那里,又不会变,变得只是攻击者到底可能会利用漏洞做什么。
不妨看看奇安信CERT给漏洞打上的标签,在野利用的意思就是已经发现有攻击者成功利用该漏洞发起了网络攻击,APT相关的意思是被APT组织利用了,所有这些反映的都是攻击者的动态。
毫无疑问,这是威胁情报最擅长的事情。威胁情报与漏洞情报的联动,能够让奇安信第一时间捕获利用相关漏洞的海量攻击行为。在2021年底Apache Log4j2漏洞曝光之后,奇安信威胁情报第一时间就检测到了数千起针对该漏洞的攻击行为,并第一时间打上了在野利用的标签。
第四是漏洞修补阶段。
对于组织来说,修漏洞不是点击“一键修补”就万事大吉了。上文笔者提到,考虑到补丁安全的风险,对业务连续性要求很高的组织,很多时候是不方便打补丁的,更何况有时候漏洞在曝光的时候厂商还没有发布补丁。
所以除了补丁安装之外,有其他临时的缓解措施是最好的,这一点软件厂商在发布安全更新时也会同时给出。
什么?官方发布临时缓解措施,不会操作怎么办?没关系,照着奇安信发布的操作步骤一步步来就行。
要是缓解措施也无效,奇安信还有最后的“撒手锏”,把安全设备的检测规则更新一下,这样就能及时阻断相关漏洞的利用行为了。
为了便于用户处置,在线数据获取的API接口及离线数据包,用户可以根据自己需要集成到自有漏洞处理流程。
“去年我们又发了280多篇漏洞安全通告,差不多每个工作日一篇,另外还有接近一百篇包含漏洞所有技术细节的深度漏洞分析报告。”汪列军粗略估算了下,在他眼里,处理30万漏洞也就那么回事,每天都标记一些,每天都向客户输出一些,不知不觉就有了一定的积累。
那60万呢?100万呢?还需要坚持多少年?
“多长时间我不好说,但肯定不会太久。”汪列军坚定地说,“漏洞会越来越多,但我们的动作会越来越快!”