虚拟机管理程序滥用与防护

1. 分类与防御

对攻击者利用信息的方式解读过窄,以及过度使用“零日漏洞”这一术语,可能会给试图保护系统免受已知和未知漏洞威胁的用户带来意想不到的风险。过去曾攻破过虚拟机管理程序的公开已知漏洞利用方式,很可能会影响未来攻击的类型和方法。

如今,一些细微的变化(例如相同的攻击方法,但针对不同的代码段)可以通过工具实现自动化,这使得几乎任何人都可能成为威胁。将每次内核被攻破都称为零日漏洞,可能会高估攻击者的能力,同时给用户一种虚假的安全感。这也会让产品供应商避免承认其对漏洞的修复不够全面和彻底,他们对内核的研究不足以防止通过简单攻击向量造成的类似破坏。

挪威漏洞研究员Tarjei Mandt的论文《通过用户模式回调进行内核攻击》很好地阐述了内核被攻破的综合问题。操作系统通常会将内核模式和用户模式分开,内核模式可以访问所有资源,而用户模式的访问则受到限制。这种分离的目的是防止资源竞争时出现内存被覆盖或访问等冲突。Mandt的论文指出,在微软Windows系统中,内核模式和用户模式的分离存在多处模糊地带。

win32k内核模式驱动程序与用户模式客户端相连,会进入用户模式来移动数据并与应用程序交互。这就产生了一个时间窗口,在此期间它容易受到用户模式变化的影响,用户模式和内核模式的分离被打破,进程无论权限级别如何都会共享资源。

此外,系统在用户模式回调前后不监控数据完整性,不仅导致模式分离失效,而且内核无法检测到内存的更改。攻击者只需在回调期间释放一个缓冲区,然后在win32k从回调返回使用该缓冲区之前重新分配它即可。

Mandt指出,用户模式回调的暴露是为了提高Windows NT性能而做出的设计决策,但