Windows内核事务管理器中的0day(CVE-2018-8611)

2018-12-13 10:32:37 8 4163

卡巴斯基实验室的研究人员Boris Larin(Oct0xor)和Igor Soumenkov(2igosha)于2018年10月,通过卡巴斯基的AEP(自动漏洞防护)系统检测分析发现了Microsoft Windows操作系统ntoskrnl.exe中的0day漏洞(CVE-2018-8611),该漏洞的漏洞补丁已经包含在微软 12 月份的更新文件中。

报告中提到:CVE-2018-8611 是一个特别危险的威胁 - 内核事务管理器驱动程序中的漏洞,由于系统调用过滤缓解不适导致了对 ntoskrnl.exe 的系统调用,它可用于在现代 Web 浏览器(包括Chrome和Edge)中转义沙箱,该漏洞之前已经被 FruityArmor 和 SandCat 这些 APT 组利用,SandCat 是卡巴最近才发现的一个 APT,除了使用 0day 和 CHANINSHOT 之外,SandCat 还使用 FinFisher/FinSpy 框架。

漏洞简单解析

CVE-2018-8611是由于在内核模式下对事务处理文件操作的处理不当而导致了对内核事务管理器的调用,此漏洞成功绕过了现代流程缓解策略,例如 Microsoft Edge Sandbox 中使用的 Win32k 系统调用过滤以及 Google Chrome Sandbox中 使用的 Win32k 锁定策略。与受损的渲染器流程相结合,此漏洞可以在最新的最先进的Web浏览器中生成完整的远程命令执行漏洞利用链。卡巴已经为此漏洞找到了多个漏洞利用版本(最新版本包括更改以反映最新版本的Windows操作系统)

与 CHAINSHOT 类似,此漏洞利用很大程度上依赖于使用带有自定义错误代码的 C++ 异常处理机制。要利用此漏洞,首先会创建一个命名管道并将其打开以进行读写。然后它创建一对新的事务管理器对象,资源管理器对象,事务对象,并为我们称之为“Transaction#2”的东西创建大量的登记对象。Enlistment是一个特殊对象,用于事务和资源管理器之间的关联。当事务状态改变时,KTM 通知关联的资源管理器,之后,它只创建一个登记对象,现在只为“事务#1”创建,并提交在此事务期间所做的所有更改。 在所有初步准备工作完成后,利用漏洞触发器的第二部分,它创建多个线程并将它们绑定到单个 CPU 核心。其中一个创建的线程在循环中调用 NtQueryInformationResourceManager ,而第二个线程尝试执行 NtRecoverResourceManager 一次。但漏洞本身是在第三个线程中触发的。该线程使用执行技巧 NtQueryInformationThread 来获取有关第二个线程的最新执行的系统调用的信息。成功执行 NtRecoverResourceManager 将意味着已满足调用条件,并且在先前创建的命名管道上进一步执行 WriteFile 将导致内存损坏。

关于作者

Cherishao9篇文章134篇回复

z/HO0tXi0fnTucvXtcTIywq007K7z7K7ttewye6zwQrU9cO0xby2+8z9tb3Az7joyrEKuvbIu9Kyu87By8nx

评论8次

要评论?请先  登录  或  注册