Shrootless:MacOS漏洞可繞過系統(tǒng)完整性保護
微軟在macOS系統(tǒng)中發(fā)現(xiàn)了一個安全漏洞,該漏洞CVE編號為CVE-2021-30892。攻擊者利用該漏洞可以繞過macOS的系統(tǒng)完整性保護(System Integrity Protection,SIP),并在設(shè)備上執(zhí)行任意操作。研究人員還發(fā)現(xiàn)了一個類似的技術(shù)使得攻擊者可以在受影響的設(shè)備上實現(xiàn)root級的權(quán)限提升。
SIP是macOS系統(tǒng)中用于限制root用戶執(zhí)行可能破壞系統(tǒng)完整性的操作的技術(shù)。

研究人員發(fā)現(xiàn)該漏洞位于安裝了包含后安裝腳本的蘋果公司簽名的包中。惡意用戶可以創(chuàng)建一個精心偽造的文件來劫持安裝過程,通過繞過SIP的限制,攻擊者可以安裝惡意kernel驅(qū)動、覆寫系統(tǒng)文件、安裝無法檢測的惡意軟件。
Shrootless漏洞分析
在蘋果macOS能夠繞過SIP保護的進程時,研究人員發(fā)現(xiàn)了守護進程 system_installd,具有com.apple.rootless.install.inheritable的權(quán)限。有了該權(quán)限,任何system_installd 子進程都可以繞過SIP文件系統(tǒng)的限制。

圖 system_installd權(quán)限
隨后,研究人員檢查system_installd的子進程,發(fā)現(xiàn)攻擊者可以濫用該功能來繞過SIP。
比如,在安裝蘋果簽名的包(.PKG文件)時,該包會調(diào)用system_installd,然后安裝該包。如果包中含有后安裝腳本,system_installd就會調(diào)用一個位于macOS zsh中的默認shell。Zsh啟動后,會尋找文件/etc/zshenv,如果找到了就會自動地、非交互地運行該文件中的命令。因此,要在設(shè)備上執(zhí)行任意操作的攻擊者只需要創(chuàng)建一個惡意/etc/zshenv 文件,然后等待system_installd調(diào)用zsh即可。
為實現(xiàn)PoC漏洞利用,研究人員實現(xiàn)了如下算法:
- 下載一個含有后安裝腳本的蘋果公司簽名的包(使用wget);
- 植入會檢查父進程的惡意/etc/zshenv,如果是system_installd,就會寫入受限的位置;
- 調(diào)用安裝工具安裝該包。
如下圖所示,PoC漏洞利用可以覆寫kernel擴展排除列表:

圖 用任意數(shù)據(jù)覆寫kernel擴展排除列表PoC
zshenv 用作攻擊向量
研究人員還發(fā)現(xiàn),zshenv還可以用于除SIP繞過之外的攻擊中。研究人員發(fā)現(xiàn)/etc/zshenv與每個用戶的~/.zshenv是等價的,即具有相同的功能但是寫入時不需要root權(quán)限。
Zshenv可以用于以下攻擊活動:
- 實現(xiàn)駐留機制:只需要等待zsh啟動即可;
- 權(quán)限提升:admin用戶使用sudo-s或sudo命令提升到root權(quán)限時home目錄無需變化。因此,將~/.zshenv設(shè)置為admin權(quán)限,然后等待管理員使用sudo來觸發(fā)~/.zshenv文件,就實現(xiàn)了root提取。
目前蘋果已于10月26日發(fā)布了該漏洞的安全補丁。
本文翻譯自:https://www.microsoft.com/security/blog/2021/10/28/microsoft-finds-new-macos-vulnerability-shrootless-that-could-bypass-system-integrity-protection/如若轉(zhuǎn)載,請注明原文地址。