查看原文
其他

速更新!这个 Windows 0day 漏洞已遭 APT 组织利用

卡巴斯基实验室 代码卫士 2022-04-06

 聚焦源代码安全,网罗国内外最新资讯!

编译:代码卫士团队

在昨天的文章《微软修复64个缺陷,包括2 0day中,我们提到微软修复了两个 0day漏洞,其中一个是卡巴斯基实验室报告的 CVE-2019-0797。本文将做出简要的技术分析。


2019年2月,卡巴斯基实验室检测到有人尝试利用微软 Windows 操作系统中一个漏洞,进一步分析后发现了 win32k.sys 中的一个 0day 漏洞。2月22日,卡巴斯基实验室将问题告知微软,后者证实了该漏洞的存在并分配编号 CVE-2019-0797,并对卡巴斯基实验室的研究员 Vasiliy Berdnikov 和 Boris Larin 表示感谢。

这是卡巴斯基在 Windows 中发现的第四个本地权限提升漏洞。研究人员认为 CVE-2019-0797 已遭多个威胁者利用,包括但很可能不仅限于 FruityArmor 和 SandCat。FruityArmor 此前使用过 0day,而 SandCat 是最近检测到的一个新兴 APT 组织。除了利用 CVE-2019-0797 和 CHAINSHOT 外,SandCat 还使用了 FinFisher/FinSpy 框架。

简要技术分析

CVE-2019-0797 是存在于 win32k驱动中的一个竞争条件,是因为未记录的系统调用 NtDCompositionDiscardFrame 和 NtDCompositionDestroyConnection之间缺乏适当同步造成的。如下是在首次分析时从最新系统上发现的易受攻击的代码截图:

从这个简化的 NtDCompositionDiscardFrame 系统调用的逻辑的截屏中可以发现,这个易受攻击的代码获得了和 DirectComposition::CConnection 结构中帧操作相关的一个锁,而且试图找到和既定 id相对应的帧并最终调用释放 (free) 。这种操作存在的问题可见如下截屏:

在这个带有从 NtDCompistionDestroyConnection 系统调用的函数 DiscardAllCompsitionFrames 的简化逻辑的截屏上可以看到,它并未获得必要的锁而且调用了将发布所有已分配帧的 DiscardAllCompositionFrames。问题在于,当系统调用 NtDCompositionDiscardFrame 和 NtDCompositionDestroyConnection 同时执行时,函数 DiscardAllCompositionFrames 可能是在 NtDCompositionDiscardFrame 系统调用已经在开始寻找可以发布的帧或已经找到的情况下执行。这种条件就导致使用后释放场景。

有意思的是,这是 SandCat 调用的第三个竞争条件0day 漏洞,前两个是 CVE-2018-8589 和 CVE-2018-8611。

研究人员发现的已遭在野利用的漏洞针对的是 Windows 8 到 Windows 10 build 15063 版本的64位操作系统。在这些操作系统上的利用进程区别并不大,而且是通过堆喷射调色板和加速器表使用 GdiSharedHandleTable 和 gSharedInfo执行的以泄漏其内核地址。在利用 Windows 10 build 14393的情况下使用的是更高的窗口而非调色板。另外,该利用还会查看是否在谷歌 Chrome 上运行。如是则会停止执行,因为漏洞 CVE-2019-0797 无法在沙箱中遭利用。




推荐阅读

微软修复64个缺陷,包括2个 0day

0day! 0day!Windows 7 和 Windows Office 均被曝 0day



原文链接

https://securelist.com/cve-2019-0797-zero-day-vulnerability/89885/


本文由代码卫士编译,不代表其观点,转载请注明“转自代码卫士 www.codesafe.cn”。



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存