蘋果macOS Mail零點擊漏洞分析
零點擊Zip
日前安全人員Mikko Kenttälä發現了Apple Mail中的一個零點擊漏洞,利用該漏洞可以在Mail的沙箱環境中添加或修改任何文件。 這樣可以導致用戶劫持可以未經授權就將敏感信息泄露給第三方。攻擊者可以修改受害者的郵件配置實現郵件重定向,然后從通過重置密碼來獲取受害者賬戶。還可以用來更改受害者的配置,以其名義用蠕蟲方式將攻擊其他用戶。蘋果修補了此漏洞。
技術細節
Mac Mail具備自動解壓縮由另一個用戶自動壓縮的附件的功能。在有效的用例:用戶創建電子郵件并將文件夾添加為附件,它將使用zip和x-mac-auto-archive = yes自動壓縮;并被添加到MIME標頭中。當另一個用戶收到此電子郵件時,壓縮的附件數據將自動解壓縮。
在過程中,發現蘋果Mail處理中未壓縮數據的一部分未從臨時目錄中清除,并且該目錄在Mail上下文中不是唯一的,可以利用壓縮文件中內部符號鏈接$MPDIR到〜/Library/Mail進行未經授權的寫訪問。
攻擊者發送電子郵件漏洞利用程序,其中包括兩個zip附件。當用戶收到電子郵件后,Mail會對其進行解析,以找出所有帶有x-mac-auto-archive = yes標頭的附件。 Mail將自動解壓縮這些文件。
第一階段
第一個zip包含一個名為Mail的符號鏈接,指向受害者“$HOME/Library/Mail”和文件1.txt。壓縮文件將解壓縮為“$TMPDIR/com.apple.mail/bom/”。根據“filename = 1.txt.zip”標頭,將1.txt復制到郵件目錄,一切正常。但是,清理未正確完成,并且符號鏈接保留在原處。
第二階段
第二個附加的zip包含要對“$HOME/Library/Mail”進行的更改,提供Library/Mail的任意文件寫入權限。
示例案例中為Mail應用程序編寫了一個新的Mail規則。這樣,就可以向受害者的郵件應用程序添加自動轉發規則。
- Mail/ZCZPoC
- Mail/V7/MailData/RulesActiveState.plist
- Mail/V7/MailData/SyncedRules.plist
Mail/ZCZPoC僅包含一個純文本文件,該文件將被寫入〜/Library/Mail。
覆蓋郵件規則列表
然后該目錄下的文件可以被覆蓋,比如RulesActiveState.plist和SyncedRules.plist文件。
RulesActiveState.plist中的主要內容是激活SyncedRules.plist中的規則。
- …
- <dict>
- <key> 0C8B9B35–2F89–418F-913F-A6F5E0C8F445 </key>
- <true/>
- </dict>
- …
SyncedRules.plist包含一個匹配“AnyMessage”的規則,并且此PoC中的規則將Mail應用程序設置為在收到任何消息時播放莫爾斯聲音。
- …
- <key>Criteria</key>
- <array>
- <dict>
- <key>CriterionUniqueId</key>
- <string>0C8B9B35–2F89–418F-913F-A6F5E0C8F445</string>
- <key>Header</key>
- <string>AnyMessage</string>
- </dict>
- </array>
- …
- <key>SoundName</key>
- <string>Morse</string>
莫爾斯碼發聲的代碼也可以修改為其他可以執行的操作,比如轉發規則用來上傳敏感的電子郵件信息。
影響
這種任意的寫訪問權限使攻擊者可以操縱$HOME/Library/Mail中的所有文件。 如部分圖示,可以用來操縱Mail應用程序的配置將敏感數據暴露給第三方。可用的配置選項之一是用戶的簽名,該簽名可用于擴大漏洞的擴散和影響。也有可能導致遠程代碼執行(RCE)漏洞。