查看原文
其他

苹果紧急修复macOS root密码漏洞

Shaun Nichols 代码卫士 2022-04-06

 聚焦源代码安全,网罗国内外最新资讯!

翻译:360代码卫士团队


苹果推出紧急补丁解决macOS High Sierra版本 11.13.1中的漏洞。该漏洞能让攻击者在无需密码的情况下以管理员身份登录Mac设备,并让任意app获取root权限。


苹果公司发布的补丁是“安全更新2017-001”。上述漏洞在两周前出现在苹果的支持论坛上,并在本周二公布在社交媒体推特上,从而在网络大规模发酵。

补丁修复的问题存在于操作系统中,任何人只要输入“root” 作为用户名并将密码框设置为空就能获取管理员权限。操作可以在修改系统设置、登录设备和通过VNCRDP、屏幕共享等远程访问设备时开展。同时该漏洞还可用于通过命令行登录系统账户如_uucp,而这对于获取超级用户权限的恶意软件而言有用性不言而喻。

如果用户运行的是HighSierra (10.13) 版本,则因尽快安装更新。

苹果说明该缺陷时指出,“攻击者可能能够在无需提供管理员密码的前提下绕过管理员认证。凭证验证过程中存在一个逻辑错误,已通过经改进的凭证验证方法予以解决。”


通过反汇编器进行分析


我们来看下这个所谓的#IAmRoot缺陷是什么以及它如何影响High Sierra。问题始于这个强大的root账户是默认禁用的。从本质上来看,它似乎是一些内部错误编程处理中出现的问题,从而导致启用了密码为空的root账户。

当操作系统试图验证用户时,在这个案例中是root,安全守护进程opendirectoryd会调用内部函数odm_RecordVerifyPassword。它试图为这个账户检索shadow hash来检查提供的密码。由于禁用了root,而且也未见shadow hash,因此子例程返回一个失败的代码。到目前为止尚未出现什么问题。

查找shadowhash失败后,opendirectoryd接下来检索并检查使用od_verify_crypt_password账户的crypt密码。奇怪的是,函数返回值0x1,也就是说操作成功,而并未纾困和拒绝访问,代码通过函数调用将crypt密码升级为一个shadow hash并将其存储到账户。

也就是说,空密码被存储为root账户的密码。它适用于所有禁用登录的系统账户。


(逆向opendirectoryd代码后显示出的bug核心部分,od_verify_crypt_password返回0x1并搞错0x0检查。来源:Patrick Wardle

Mac安全专家兼Synack公司首席研究员Patrick Wardle更加详细地进行了解释,概述如下:对于被禁用的账户(也就是说没有’shadowhash’数据),macOS会尝试进行升级。在升级中,od_verify_crypt_password会返回一个非零值。用户(或被攻击者)密码之后“被升级”并存储在账户中。

看似od_verify_crypt_password应该失败(可能它确实失败了,对0x0的返回代码的检查是倒置的?)或者可能对odm_RecordVerifyPassword的调用只能在经验证/认证的上下文中调用?

还在苹果已经解决了这个漏洞。然而,它曾能溜进生产过程的事实却导致苹果粉尤其是苹果特别渴望抓住的企业市场用户在部署macOS10.13时有所迟疑。

苹果在一份声明中指出,“很遗憾出现了这个错误,为此我们向所有的Mac用户表示歉意。我们的消费者值得拥有更好的。我们正在审计自己的开发流程以避免类似事件的再次发生。”


关联阅读


最新版MacOS有bug  反复按 "解锁”就可创建一个根账户



本文由360代码卫士编译,不代表360观点,转载请注明 “转自360代码卫士www.codesafe.cn”。


原文链接:

https://www.theregister.co.uk/2017/11/29/apple_macos_high_sierra_root_bug_patch/

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存