2018年10月,我们的AEP(自动防漏洞)系统检测到微软Windows操作系统的一个漏洞。进一步的分析使我们发现了ntoskrnl.exe中的一个零日漏洞。我们于2018年10月29日向微软报告。该公司确认了该漏洞,并将其指定为CVE-2018-8611。微软刚刚发布了一个补丁,这是其12月更新的一部分,微软将这一发现归功于卡巴斯基实验室的研究员Boris Larin (Oct0xor)和Igor Soumenkov (2igosha)。
这是我们在今年秋天,使用我们的技术在Windows中发现的第三个连续利用的Local Privilege Escalation漏洞。与先前报告的win32k.sys(CVE-2018-8589和CVE-2018-8453)中的漏洞不同,CVE-2018-8611是一个特别危险的威胁 - 内核事务管理器驱动程序中的漏洞。由于系统过滤缓解不适用于ntoskrnl.exe系统调用,因此它也可以用于逃避现代Web浏览器(包括Chrome和Edge)中的“沙箱”。
就像CVE-2018-8589一样,我们认为这个漏洞被几个威胁行为者使用,包括但不限于FruityArmor和SandCat。虽然众所周知FruityArmor曾使用过零日漏洞,但SandCat是我们最近才发现的新APT。除了这个零日和CHAINSHOT之外,SandCat还使用了FinFisher / FinSpy框架。
HEUR:Exploit.Win32.Generic
HEUR:Trojan.Win32.Generic
PDM:Exploit.Win32.Generic
与CHAINSHOT类似,此漏洞的利用,很大程度上依赖于使用带有自定义错误代码的C ++异常处理机制。
要利用此漏洞,首先创建一个命名管道,并打开它进行读和写。然后它创建一对新的事务管理器对象、资源管理器对象、事务对象,并为我们所谓的“Transaction#2”创建大量登记对象。Enlistment是一个特殊的对象,用于在事务和资源管理器之间进行关联。当事务状态改变时,KTM通知关联资源管理器。此后,它只会为“Transaction#1”创建另一个注册对象,并提交在此事务期间所做的所有更改。
在所有初步准备工作完成后,利用漏洞触发器的第二部分。它创建多个线程并将它们绑定到单个CPU核心。其中一个创建的线程在循环中调用NtQueryInformationResourceManager,而第二个线程尝试执行NtRecoverResourceManager一次,但漏洞本身是在第三个线程中触发的。
该线程使用执行技巧NtQueryInformationThread来获取有关第二个线程的最新执行的系统调用的信息。成功执行NtRecoverResourceManager将意味着已发生竞争条件,并且在先前创建的命名管道上进一步执行WriteFile将导致内存损坏。
与往常一样,我们为Microsoft提供了此漏洞的概念证明以及源代码。后来通过Microsoft Active Protections Program(MAPP)共享。
有关SandCat,FruityArmor和CVE-2018-8611的更多信息可供卡巴斯基情报报告的客户使用。联系方式:intelreports@kaspersky.com
原文链接:https://securelist.com/zero-day-in-windows-kernel-transaction-manager-cve-2018-8611/89253/
你可能喜欢