微軟在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日發布了該漏洞的安全補丁。