CVE-2022-26706 macOS App沙箱逃逸漏洞
微軟研究人員發現macOS App沙箱逃逸漏洞。
微軟研究人員Jonathan Bar Or在檢測macOS系統上微軟office惡意宏時發現了macOS App沙箱逃逸漏洞,漏洞CVE編號為CVE-2022-26706。攻擊者利用該漏洞可以構造代碼來繞過APP沙箱,在系統上無限制的運行。
macOS App Sandbox原理
macOS apps可以指定操作系統的沙箱規則,并強制執行。APP沙箱將系統調用限制為一個允許的子集,系統調用根據文件、對象、參數來具體確定是否允許。沙箱的規則表明這類操作應用可以做或不可以做,與運行應用的用戶類型無關。比如有如下操作:
應用可以或不可以讀或寫的文件類型;
應用是否可以訪問特定資源,如攝像頭、麥克風;
應用是否允許進行帶內或帶外連接。

圖 1. APP沙箱示例
因此,APP沙箱對macOS開發者來說就提供了基準安全的工具。
macOS Office沙箱
攻擊者常利用Office作為攻擊的入口來在用戶設備或網絡中立足。其中常用的一個技術就是office宏,常被用于社會工程攻擊中,誘使用戶下載惡意軟件和其他payload。
在Windows系統中,使用Hyper-V來隔離主機環境來應對宏濫用的問題。在macOS系統中,沒有此類隔離技術和默認設置,office必須依賴操作系統自帶的技術和策略。目前,最有可能實現類似功能的結束就是macOS APP沙箱。

圖 2. Microsoft Word沙箱規則
其中一條規則指定了應用允許讀或寫的文件種類。Word允許讀寫文件名以“~$”為前綴的文件。

圖 3. Word文件讀寫沙箱規則
雖然沙箱規則可以進行安全限制,攻擊者仍然有可能繞過沙箱規則,使得惡意代碼從沙箱逃逸,并在受影響的設備上執行任意代碼。要執行的代碼可以隱藏在word宏中。
早在2018年和2021年都有研究人員發現了macOS沙箱逃逸漏洞。
CVE-2022-26706:macOS App沙箱逃逸漏洞
在發現蘋果修復了所有濫用.zshenv的變種后,研究人員決定分析open命令的所有選項。然后發現了–stdin選項:

圖 4. –stdin選項
因為python拒絕運行具有 “com.apple.quarantine”擴展屬性的文件,因此不能用Python打開類似的.py文件。但–stdin繞過了“com.apple.quarantine”擴展屬性的限制,因為Python不知道來自文件標準輸入的內容。
POC漏洞利用步驟如下:
釋放一個具有任意Python命令的“~$exploit.py”文件;
運行open –stdin=’~$exploit.py’ –a Python,該命令會運行Python app并用釋放的文件作為標準輸入。
Python運行了該代碼,而其是launchd的子進程,不受限于沙箱規則,即實現了沙箱逃逸。

圖 5. PoC漏洞利用代碼

圖 6. “Tweetable” POC 漏洞利用
漏洞修復
蘋果公司已于2022年5月16日修改了該漏洞。
參考及來源:https://www.microsoft.com/security/blog/2022/07/13/uncovering-a-macos-app-sandbox-escape-vulnerability-a-deep-dive-into-cve-2022-26706/