微软在macOS系统中发现了一个安全漏洞,该漏洞CVE编号为CVE-2021-30892。攻击者利用该漏洞可以绕过macOS的系统完整性保护(System Integrity Protection,SIP),并在设备上执行任意操作。研究人员还发现了一个类似的技术使得攻击者可以在受影响的设备上实现root级的权限提升。
SIP是macOS系统中用于限制root用户执行可能破坏系统完整性的操作的技术。
研究人员发现该漏洞位于安装了包含后安装脚本的苹果公司签名的包中。恶意用户可以创建一个精心伪造的文件来劫持安装过程,通过绕过SIP的限制,攻击者可以安装恶意kernel驱动、覆写系统文件、安装无法检测的恶意软件。
Shrootless漏洞分析
在苹果macOS能够绕过SIP保护的进程时,研究人员发现了守护进程 system_installd,具有com.apple.rootless.install.inheritable的权限。有了该权限,任何system_installd 子进程都可以绕过SIP文件系统的限制。
图 system_installd权限
随后,研究人员检查system_installd的子进程,发现攻击者可以滥用该功能来绕过SIP。
比如,在安装苹果签名的包(.PKG文件)时,该包会调用system_installd,然后安装该包。如果包中含有后安装脚本,system_installd就会调用一个位于macOS zsh中的默认shell。Zsh启动后,会寻找文件/etc/zshenv,如果找到了就会自动地、非交互地运行该文件中的命令。因此,要在设备上执行任意操作的攻击者只需要创建一个恶意/etc/zshenv 文件,然后等待system_installd调用zsh即可。
为实现PoC漏洞利用,研究人员实现了如下算法:
- 下载一个含有后安装脚本的苹果公司签名的包(使用wget);
- 植入会检查父进程的恶意/etc/zshenv,如果是system_installd,就会写入受限的位置;
- 调用安装工具安装该包。
如下图所示,PoC漏洞利用可以覆写kernel扩展排除列表:
图 用任意数据覆写kernel扩展排除列表PoC
zshenv 用作攻击向量
研究人员还发现,zshenv还可以用于除SIP绕过之外的攻击中。研究人员发现/etc/zshenv与每个用户的~/.zshenv是等价的,即具有相同的功能但是写入时不需要root权限。
Zshenv可以用于以下攻击活动:
- 实现驻留机制:只需要等待zsh启动即可;
- 权限提升:admin用户使用sudo-s或sudo命令提升到root权限时home目录无需变化。因此,将~/.zshenv设置为admin权限,然后等待管理员使用sudo来触发~/.zshenv文件,就实现了root提取。
目前苹果已于10月26日发布了该漏洞的安全补丁。
本文翻译自:https://www.microsoft.com/security/blog/2021/10/28/microsoft-finds-new-macos-vulnerability-shrootless-that-could-bypass-system-integrity-protection/如若转载,请注明原文地址。