又捕获到一个0day!安恒威胁情报中心再次发力,漏洞可影响最新版WIN10

又捕获到一个0day!安恒威胁情报中心再次发力,漏洞可影响最新版WIN10

 

事件背景

2021年2月,安恒信息威胁情报中心猎影实验室曾经协助微软修复一个影响最新版Windows10系统的内核提权漏洞,该漏洞编号为CVE-2021-1732,相关事件我们已经在《0DAY攻击!首次发现蔓灵花组织在针对国内的攻击活动中使用WINDOWS内核提权0DAY漏洞(CVE-2021-1732)》这篇文章中进行披露。

2021年5月,猎影实验室在日常高级威胁监测过程中再次发现一个影响最新版Windows10系统的提权漏洞,发现该漏洞后,猎影实验室在第一时间将其报告给了MSRC。经过MSRC的确认,我们确信这是一个dwmcore.dll模块的0Day漏洞,在最新版本的Windows10 21H1全补丁环境下也能触发。

时间时间线如下:

2021年5月22日,安恒威胁情报中心捕获到相关样本,并启动根因调查;

2021年5月22日,安恒威胁情报中心将漏洞信息报告给MSRC;

2021年5月22日,MSRC确认收到漏洞报告;

2021年5月25号,安恒威胁情报中心向MSRC提供该0Day漏洞的更多细节;

2021年5月28日,MSRC确认该漏洞是一个0Day,并开始调查;

2021年5月29号,MSRC就安恒威胁情报中心提供的更多细节表示感谢,并表示漏洞已在修复中;

2021年6月9号,MSRC修复该漏洞,漏洞编号为CVE-2021-33739;

漏洞分析

该漏洞是一个由dwmcore.dll模块中CinteractionTrackerBindingManager对象引用计数不平衡引发的UAF漏洞。在具体的触发逻辑上和CVE-2021-26900漏洞存在一些相似之处。该漏洞只影响Windows 10,不影响Windows 8.1及以下系统。

为了触发这个漏洞,我们只需要在代码层面创建一个CinteractionTrackerBindingManagerMarshaler(0x59)资源和和一个CinteractionTrackerMarshaler(0x58)资源,并将同一个CinteractionTrackerMarshaler资源同时作为resource1_id和resource2_id绑定到CinteractionTrackerBindingManagerMarshaler,并且不手动释放CinteractionTrackerMarshaler资源,像这样:

图1:触发漏洞的代码

在正常情况下(如果resource1_id和resource2_id是两个不相同的CinteractionTrackerMarshaler资源),在dwmcore.dll的代码逻辑中,CinteractionTrackerBindingManager对象的引用计数会像如下输出日志这样变化,它会调用CInteractionTrackerBindingManager::ProcessSetTrackerBindingMode函数2次,以将CinteractionTrackerBindingManager对象的引用计数加2。随后,代码会调用CInteractionTrackerBindingManager::RemoveTrackerBindings函数两次,以减去2次引用计数,最终在引用计数变为0时正常释放CinteractionTrackerBindingManager对象。

图2:正常情况下这里引用计数增加2次

图2:正常情况下,调用RemoveTrackerBindings两次后,引用计数才减到0

在漏洞场景下,CinteractionTrackerBindingManager对象的引用计数变化会和正常情况下不一致,代码只会调用CInteractionTrackerBindingManager::ProcessSetTrackerBindingMode函数1次,所以CinteractionTrackerBindingManager对象的引用计数在此处只会被加1。然而,在随后的逻辑中,代码仍然会调用CInteractionTrackerBindingManager::RemoveTrackerBindings函数2次,在第一次调用CInteractionTrackerBindingManager::RemoveTrackerBindings函数后,CinteractionTrackerBindingManager对象的引用计数就已经变为了0,这导致CinteractionTrackerBindingManager对象自动调用其资源释放函数CMILCOMBase::InternalRelease将其自身内存释放。随后,在第二次调用CInteractionTrackerBindingManager::RemoveTrackerBindings函数时,代码又试图去访问被释放的CinteractionTrackerBindingManager对象,造成UAF。

图4:漏洞场景下,只调用1次ProcessSetTrackerBindingMode函数,引用计数只增加到2,正常情况下这里应该增加到3

图5:漏洞场景下,第1次调用RemoveTrackerBindings,此时引用计数已经变为0

图5:漏洞场景下,引用计数变为0后调用析构函数释放CInteractionTrackerBindingManager对象

图5:漏洞场景下,第2次调用RemoveTrackerBindings函数时,代码尝试访问被释放的CInteractionTrackerBindingManager对象,造成UAF

思考总结

此次捕获的漏洞属于WindowsDirectComposition组件的范畴。2017年,360的安全研究员在Cansecwest2017会议发表了题为《Win32k Dark Composition:Attacking the Shadow Part of Graphic Subsystem》的演讲,从此该组件的漏洞开始进入广大安全研究员的视野。

近两年来,WindowsDirectComposition组件又连续被曝出提权漏洞,包括CVE-2020-1381、CVE-2020-1382、CVE-2020-17057、CVE-2021-26900和CVE-2021-28310。其中CVE-2020-1382漏洞是Pwn2Own 2020比赛上所使用的漏洞,而CVE-2021-28310是卡巴斯基在今年2月份追踪CVE-2020-1732背后的组织时捕获的一个在野零日漏洞,这些都证明当前有较多安全研究员和黑客组织盯着这个组件。

可以预见的是,WindowsDirectComposition组件内还存在着一些未被发现的提权漏洞,该组件后续很可能还有类似漏洞被曝光,请大家提高警惕。

防范建议

升级安恒APT攻击预警平台以及明御主机安全及管理系统EDR到最新版本可进行检测。

安恒APT攻击预警平台能够发现已知或未知威胁,平台能实时监控、捕获和分析恶意文件或程序的威胁性,并能够对邮件投递、漏洞利用、安装植入、回连控制等各个阶段关联的木马等恶意样本进行强有力的监测。同时,平台根据双向流量分析、智能的机器学习、高效的沙箱动态分析、丰富的特征库、全面的检测策略、海量的威胁情报等,对网络流量进行深度分析。检测能力完整覆盖整个APT攻击链,有效发现APT攻击、未知威胁及用户关心的网络安全事件。

安恒明御主机安全及管理系统是一款集成了丰富的系统加固与防护、网络加固与防护等功能的主机安全产品。业界独有的高级威胁模块,专门应对攻防对抗场景; 明御主机安全及管理系统通过自主研发的专利级文件诱饵引擎,有着业界领先的勒索专防专杀能力;通过内核级东西向流量隔离技术,实现网络隔离与防护;拥有补丁修复、外设管控、文件审计、违规外联检测与阻断等主机安全能力。目前产品广泛应用在服务器、桌面PC、虚拟机、工控系统、容器安全、攻防对抗等各个场景。