导语:每年的DEF CON大会期间,都会有研究人员指出苹果的漏洞,今年也不例外。来自Digita Security的首席研究官Patrick Wardle就披露了一个macOS中存在的零日漏洞,攻击者可以通过模拟点击绕开macOS内核代码签名验证,加载系统内核扩展。

macOS.jpg

每年的DEF CON大会期间,都会有研究人员指出苹果的漏洞,今年也不例外。来自Digita Security的首席研究官Patrick Wardle就披露了一个macOS中存在的零日漏洞,攻击者可以通过模拟点击绕开macOS内核代码签名验证,加载系统内核扩展。

Patrick Wardle发现,只要调整加载内核扩展过程中的两行验证代码,他就可以模拟用户”点击”安全提示,从而在最新High Sierra操作系统上加载内核扩展,获得最高操作访问权限。

Mac上的内核访问为攻击者提供了最高的访问权限,可用于完全破坏操作系统。话说,苹果是为了阻止黑客和恶意软件滥用,才从High Sierra操作系统开始,加入的内核扩展操作验证。当攻击者试图执行诸如加载内核扩展等任务时,系统就会向用户发出安全提示并让用户点击,以同意扩展权限。不幸的是,Patrick Wardle的发现让苹果的努力再次付诸东流。

Wardle曾经介绍过,获得本地特权攻击者是如何利用第三方内核扩展中的漏洞来绕过苹果的内核代码签名验证的。有趣的是,今年3月发现的SlingShot APT在Windows上也利用了同样的攻击来绕过微软的内核安全机制。

苹果也迅速对该漏洞做了回应,他们计划通过引入一个名为“用户辅助内核扩展加载(User Assisted Kernel Extension Loading)”的新安全功能来增强macOS的安全性,该功能要求用户在系统的安全设置UI中点击“允许”按钮来手动批准任何内核扩展的加载。

苹果非常清楚这个漏洞的关键所在,那就是攻击者通过编程方式与发给用户的安全警告进行交互,使用模拟的鼠标点击来绕过此类安全机制。因此,在最新版本的macOS(如High Sierra)中,苹果开始过滤(并有选择地忽略)类似的模拟操作,以阻止此类攻击并保护用户可以收到安全警报。

Wardle表示:

在攻击者加载(签名)内核扩展之前,必须模拟用户,点击允许按钮。但由于某些未知原因,我发现在High Sierra中,两次连续的鼠标点击操作,会被系统错误的理解为手动批准。这完全绕过了High Sierra的基本安全机制,彻底的沦为了一个漏洞。

具体来说就是这样的,操作系统将两次无关的连续的鼠标点击操作,理解为“按下”和“松开”这一完整的点击操作过程。更糟糕的是,“松开”事件似乎直接来自操作系统,因此不会被过滤掉。换句话说,它可能被滥用来与High Sierra进行交互操作,最终实现恶意内核扩展的加载。

说来也巧,Wardle是在复制和粘贴代码时发现了这个漏洞,他原本是要在代码里建立鼠标的”按下“和”松开“两个事件,不过当时由于疏忽,他将“按下”这一事件的代码复制成了“松开”的代码,在他没有意识到错误的情况下,编译并运行了所谓的两个事件的代码,结果这两个事件竟合成了一个模拟点击的过程,当时他也很惊讶。

Wardle表示:

这样漏洞真是让人气馁,必定辛辛苦苦设计的安全防御机制,仅仅因为一个复制黏贴的错误,就功亏一篑,可见凡事都要注意细节。

不过,由于苹果的用户辅助内核扩展加载仅被引入了最新的High Sierra系统中,因此Wardle所指出的漏洞仅影响苹果最新版本的macOS。此外,他指出,在苹果的下一版macOS Mojave(08月21日,苹果发布了macOS Mojave系统的第8个开发者测试版)中,苹果将阻止所有的模拟点击事件。虽然这么做可以很方便的规避本文提到的安全风险,但正常的应用程序也会受到影响。

源链接

Hacking more

...