前言
在上周举行的def con 2018大会上,来自digita security的研究人员披露了一个macos中存在的零日漏洞,使得攻击者能够通过模拟鼠标点击绕过系统安全机制,加载系统内核扩展。
虽然苹果公司在防御黑客和阻止恶意软件滥用方面不断推陈出新,之前还为macos添加了在运行风险任务时(如加载内核扩展等操作)的多重验证步骤,包括向用户提供的安全提示并让用户批准以取得运行的权限。
不过,苹果公司的努力再次落空了。来自digita security的一位研究人员在偶然间发现了macos的一个零日漏洞,只要调整两行代码模拟用户”点击”安全提示的动作,即可在最新high sierra操作系统上加载内核扩展,获得最高访问权限,接下来就可以对这台电脑进行任何操作了。
之前,来自digita security的研究人员披露了如何利用第三方内核扩展中的漏洞来绕过macos内核代码签名验证。在windows平台上,最新发现的slingshot apt也利用了同样的漏洞来绕过系统的内核安全机制。
苹果不是不知道这种通过模拟点击绕开系统安全机制的方式,所以苹果曾推出了“用户批准内核扩展加载”的全新安全功能来增强macos的安全性,该功能要求用户在安全设置界面手动点击“允许”按钮来批准加载任何内核扩展。在最新版本的macos(如high sierra)中,苹果开始过滤(并有选择地忽略)模拟点击事件,希望能够阻止此类攻击,保护系统安全。
来自digita security的首席研究官patrick wardle表示向参加def con的与会者们披露了这个漏洞:
加载内核扩展(有签名)之前,用户必须点击”允许“按钮来批准这一行为。出于偶然,digita security的研究人员发现由于某些未知的原因,两次“按下”鼠标按钮的事件会被系统误识别为“按下”和“松开”这一完整的点击操作,系统认为用户进行了一次点击批准执行程序,轻而易举就打破了high sierra的基本安全机制。此外,“松开”事件似乎直接来自操作系统,因此不会被过滤掉。换句话说,它可能被滥用来与high sierra进行交互操作,最终实现恶意内核扩展的加载。
patrick是在复制和粘贴代码时发现了这个漏洞,他本来是要在代码里建立鼠标”按下“和”松开“这两个事件,但复制了”按下“这一事件的代码后忘记把它改成”松开“,结果编译运行代码之后,系统仍识别为这是正常的点击操作。
发现这个漏洞的过程很有戏剧性,两行代码就让high sierra暴露在风险之中。苹果公司应当警醒,因为一些使用时的小错误就让用户发现了涉及到系统核心安全的漏洞。
由于“用户批准内核扩展加载“这一机制从high sierra开始才部署,因此patrick指出此漏洞仅影响最新版本的macos。在macos mojave中,苹果将阻止所有的模拟点击事件,虽然这么做可以很方便地规避上文中提到的安全风险,但正常的应用程序也会受到影响。
*参考来源:threatpost,freddy 编译整理,转载请注明来自freebuf.com
试用申请