最近 Intel CPU 的漏洞问题已经让各电脑厂商够心烦意乱了,没想到屋漏偏逢连夜雨,苹果 macOS 操作系统被发现还有一个 15 年历史的本地端安全漏洞。
就在 2018 年的新春第一天,昵称为 Siguza 的资安研究人员用 Twitter 来拜年──发布了这个 macOS 漏洞之细节概念性验证(PoC)程式码。该漏洞是一个严重的本地端权限升级(local privilege escalation,LPE)漏洞,可能使非特权用户(攻击者)获得目标系统的 root 存取权限并执行恶意程式码,针对这个漏洞设计的恶意软件还可以把它自己植入到系统内部。
Fuck it, dropping a macOS 0day. Happy New Year, everyone. https://t.co/oG2nOlUOjk
— Siguza (@s1guza) 2017年12月31日
从源头上看,Siguza 相信这个漏洞至少从 2002 年就已经出现了,但是根据一些线索显示,这个缺陷甚至在更早的十年前就出现了,没错,也就是在 macOS 前身──Next 操作系统上就有了。他写道:“这么一个又小又脏的错误竟然活了 15 年,还可以让系统受损。”
这个本地端权限升级漏洞存在于 IOHIDFamily 中,它是为人机界面设备(HID,如触控屏幕、按键、鼠标等)设计的 macOS 核心延伸模组,允许攻击者在系统上安装 root shell 或执行任意程式码。
“IOHIDFamily 过去因其所包含的许多竞改情况(race conditions )而声名狼藉,最终导致其中很大一部分被改写成用‘comand gate’来处理,而其大部分则透过权限来锁定。”研究人员解释说。“我最初在研究它的源头时,本来是希望找到一个能够被我攻破的 iOS 核心,但是我所不知道的是,IOHIDFamily 的某些部分只存在于 macOS 上──特别是 IOHIDSystem,其中包含这个漏洞。”
Siguza 挖掘出来的这个漏洞被命名为 IOHIDeous ,影响所有版本的 macOS,可以让攻击者在系统核心中进行任意读写。除此之外,IOHIDeous 还可以让防范恶意软件的系统完整性保护(System Integrity Protection,SIP) 和苹果移动文件完整性(AMFI)安全功能等机制不发挥作用。
然而 Siguza 提供的 PoC 程式码不知道是什么原因,在 macOS High Sierra 10.13.2 上无效,只在 macOS High Sierra 10.13.1 及更早的版本上能运作,但是他认为可以调整攻击漏洞的程式码而在最新的 macOS 版本上继续奏效。然而他指出,为了让他发现的这个漏洞运作,必须要强制登出已登入的使用者,但这可以透过将目标电脑手动关机或重新开机来达成。
由于这个漏洞只影响 macOS 并且不能被远端利用,所以研究人员决定把他的研究成果放在网上,而不是向苹果公司报告。这是因为苹果的臭虫赏金猎人计划不包括 macOS 本身的 bug。
如欲了解此漏洞的细节,请前往 Siguza 的 GitHub。
- 15-Year-Old Apple macOS 0-Day Kernel Flaw Disclosed, Allows Root Access
(首图来源:苹果)