微軟在macOS系統(tǒng)中發(fā)現(xiàn)了一個(gè)安全漏洞,該漏洞CVE編號(hào)為CVE-2021-30892。攻擊者利用該漏洞可以繞過macOS的系統(tǒng)完整性保護(hù)(System Integrity Protection,SIP),并在設(shè)備上執(zhí)行任意操作。研究人員還發(fā)現(xiàn)了一個(gè)類似的技術(shù)使得攻擊者可以在受影響的設(shè)備上實(shí)現(xiàn)root級(jí)的權(quán)限提升。
SIP是macOS系統(tǒng)中用于限制root用戶執(zhí)行可能破壞系統(tǒng)完整性的操作的技術(shù)。
研究人員發(fā)現(xiàn)該漏洞位于安裝了包含后安裝腳本的蘋果公司簽名的包中。惡意用戶可以創(chuàng)建一個(gè)精心偽造的文件來劫持安裝過程,通過繞過SIP的限制,攻擊者可以安裝惡意kernel驅(qū)動(dòng)、覆寫系統(tǒng)文件、安裝無法檢測(cè)的惡意軟件。
Shrootless漏洞分析
在蘋果macOS能夠繞過SIP保護(hù)的進(jìn)程時(shí),研究人員發(fā)現(xiàn)了守護(hù)進(jìn)程 system_installd,具有com.apple.rootless.install.inheritable的權(quán)限。有了該權(quán)限,任何system_installd 子進(jìn)程都可以繞過SIP文件系統(tǒng)的限制。
圖 system_installd權(quán)限
隨后,研究人員檢查system_installd的子進(jìn)程,發(fā)現(xiàn)攻擊者可以濫用該功能來繞過SIP。
比如,在安裝蘋果簽名的包(。PKG文件)時(shí),該包會(huì)調(diào)用system_installd,然后安裝該包。如果包中含有后安裝腳本,system_installd就會(huì)調(diào)用一個(gè)位于macOS zsh中的默認(rèn)shell。Zsh啟動(dòng)后,會(huì)尋找文件/etc/zshenv,如果找到了就會(huì)自動(dòng)地、非交互地運(yùn)行該文件中的命令。因此,要在設(shè)備上執(zhí)行任意操作的攻擊者只需要?jiǎng)?chuàng)建一個(gè)惡意/etc/zshenv 文件,然后等待system_installd調(diào)用zsh即可。
為實(shí)現(xiàn)PoC漏洞利用,研究人員實(shí)現(xiàn)了如下算法:
?下載一個(gè)含有后安裝腳本的蘋果公司簽名的包(使用wget);
?植入會(huì)檢查父進(jìn)程的惡意/etc/zshenv,如果是system_installd,就會(huì)寫入受限的位置;
?調(diào)用安裝工具安裝該包。
如下圖所示,PoC漏洞利用可以覆寫kernel擴(kuò)展排除列表:
圖 用任意數(shù)據(jù)覆寫kernel擴(kuò)展排除列表PoC
zshenv 用作攻擊向量
研究人員還發(fā)現(xiàn),zshenv還可以用于除SIP繞過之外的攻擊中。研究人員發(fā)現(xiàn)/etc/zshenv與每個(gè)用戶的~/.zshenv是等價(jià)的,即具有相同的功能但是寫入時(shí)不需要root權(quán)限。
Zshenv可以用于以下攻擊活動(dòng):
?實(shí)現(xiàn)駐留機(jī)制:只需要等待zsh啟動(dòng)即可;
?權(quán)限提升:admin用戶使用sudo-s或sudo命令提升到root權(quán)限時(shí)home目錄無需變化。因此,將~/.zshenv設(shè)置為admin權(quán)限,然后等待管理員使用sudo來觸發(fā)~/.zshenv文件,就實(shí)現(xiàn)了root提取。
目前蘋果已于10月26日發(fā)布了該漏洞的安全補(bǔ)丁。