ZipperDown漏洞簡單分析及防護

2021-01-08 蒸米spark

蒸米,白小龍 @ 阿里基礎安全研究

0x00 序

盤古實驗室在針對不同客戶的iOS應用安全審計過程中,發現了一類通用的安全漏洞。該漏洞被發布在了[1]。經過盤古的分析,確認微博、陌陌、網易雲音樂、QQ音樂、快手等流行應用受影響,另外還有大約10%的iOS應用應用可能受此漏洞的影響。

根據漏洞名稱大概可以猜測出與zip文件有關,查詢iOS上與解壓相關資料可以看到,iOS並沒有提供官方的unzip API函數,基本上現有的iOS app都是使用的SSZipArchive或ziparchive這兩個第三方庫來實現解壓的功能。隨後根據盤古在SSZipArchive項目的issue中提交的漏洞報告[2]可以大概確定漏洞原理是:使用第三方zip庫在解壓zip文件過程中沒有考慮文件名中帶有」../../」這樣的情況,從而產生了目錄穿越漏洞。因此,如果一個iOS 應用下載了惡意的zip文件,並且使用ziparchive庫解壓,利用漏洞可以做到app container目錄下的任意文件覆蓋,如果覆蓋了應用重要的文件會造成應用崩潰(DOS),如果覆蓋了app的hotpatch文件則會造成代碼執行。

0x01 構造惡意的ZIP文件(POC)

(因為很多app並沒有修復該漏洞,因此POC暫不公布,想要了解細節的同學可以聯繫阿里巴巴SRC)▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇

0x02 復現攻擊

正常情況下,應用會在啟動或者某些情況下會執行hotpatch的js腳本。在我們用來demo的應用中需要點擊一下」Run Hotpatch」來運行js腳本:

點擊完後,應用會加載自己目錄下的「/Library/Caches/hotpatch/patch.js」並執行:

隨後我們點擊「Download and Unzip」,應用會通過http下載一個zip包到本地,並使用SSZipArchive庫進行解壓,如果我們採用DNS劫持將正常的zip包替換為惡意的zip包的話,雖然程序會將zip解壓到download目錄,但是我們成功利用目錄穿越漏洞,讓patch.js解壓到了如下位置:/Library/Caches/download/../hotpatch/patch.js,並成功將正常的patch.js給替換成了惡意的patch.js:

演示DEMO:https://v.qq.com/x/page/a0655dtirv7.html

0x03 防禦方案

最完整的解決方案是對SSZipArchive庫進行修補,在解壓函數:

+ (BOOL)unzipFileAtPath:(NSString *)path toDestination:(NSString *)destination preserveAttributes:(BOOL)preserveAttributes overwrite:(BOOL)overwrite nestedZipLevel:(NSInteger)nestedZipLevel password:(nullable NSString *)password error:(NSError **)error delegate:(nullable id<SSZipArchiveDelegate>)delegate progressHandler:(void (^_Nullable)(NSString *entry, unz_file_info zipInfo, long entryNumber, long total))progressHandler completionHandler:(void (^_Nullable)(NSString *path, BOOL succeeded, NSError * _Nullable error))completionHandler

中對最終解壓的strPath進行檢測,如果出現可能造成目錄穿越的」../」字符串時進行攔截。

另外,Hotpatch包除了傳輸過程中要加密外,在本地也需要加密保存,並且運行前做完整性校驗。雖然漏洞覆蓋某些重要的文件可能會造成拒絕服務攻擊,但至少不會造成代碼執行。

0x04 總結

正如JSPatch的作者bang所講的:「攻擊條件:1.APP用了ZipArchive 2.原APP下發的某個zip包傳輸過程沒加密,zip包也沒加密 3.原APP使用了JSPatch或其他執行引擎,且本地腳本沒有加密,只要把腳本放指定目錄即可執行 4.用戶連上第三方wifi遭受攻擊。恰好視頻中的微博滿足這些苛刻條件。危害很小,能被攻擊的APP也很少。」

因此,能夠造成代碼執行的應用可能沒有想像中那麼多,但黑客依然有可能利用任意文件覆蓋的漏洞能力對應用進行攻擊,造成意想不到的效果。

0x05 參考資料

https://zipperdown.orghttps://github.com/ZipArchive/ZipArchive/issues/45

相關焦點

  • iOS曝ZipperDown漏洞 快手、陌陌等均受影響
    其實無論是怎樣的系統,都有著各式各樣的漏洞,安全也只是相對的。這不,就在最近蘋果手機就有重大安全漏洞被爆出了。  最近,蘋果iOS平臺App的一個名為ZipperDown的安全漏洞被爆出,通過該漏洞攻擊者能夠對用戶App中的敏感信息進行竊取。而截止目前,受影響的App已經過萬。
  • ZipperDown漏洞來襲 愛加密推出安全解決方案
    近日盤古實驗室在針對不同客戶的iOS應用安全審計過程中,發現了一類通用的安全漏洞-ZipperDown安全漏洞,攻擊者通過該漏洞可以破壞應用數據、獲取用戶隱私數據甚至可獲取任意代碼執行的能力。由於該漏洞廣泛應用於IOS平臺,導致大量APP受影響,構成較為嚴重的攻擊威脅。
  • 解讀ZipperDown漏洞對支付行業的影響 附:漏洞詳細原理
    近日,安全分析人員披露ZipperDown漏洞,波及Android和iOS平臺,通過對iOS應用市場中168,951個iOS應用進行審核,發現15,979個應用可能受此漏洞的影響,佔比高達10%。攻擊者可以利用此漏洞對受影響用戶進行任意代碼執行,嚴重危及應用業務場景,破壞業務,造成損失。
  • ZipperDown漏洞被披露 360加固保推出獨家防範策略!
    日前,一款名為ZipperDown的漏洞被披露,ZipperDown具備通用型特性,漏洞影響大,威脅等級極高,同時該漏洞形態靈活、變種類型多樣。據不完全統計10%的IOS應用已經確定存在此漏洞,其中不乏眾多流行應用。
  • 愛加密檢測平臺針對「ZipperDown漏洞」第一時間推出專項檢測服務
    近日,一款名為「ZipperDown漏洞」在iOS平臺被披露,據安全專家稱,大約10%的iOS應用均會受到此漏洞影響。對於該漏洞,愛加密自動檢測平臺可為用戶提供針對性檢測服務,通過靜態、動態檢測來及時圈定檢測重點,綜合運用移動應用滲透技術,為移動應用提供更全面的漏洞檢測與分析服務。
  • ZipperDown漏洞來了!微博、陌陌、快手等常用 iOS 應用恐要中招
    ---ZipperDown漏洞。10%的iOS應用可能受ZipperDown漏洞的影響據其介紹,創建漏洞指紋後,他們在Janus平臺(appscan.io)上進行溯源分析和相似漏洞檢索,結果發現約10%的iOS應用可能受ZipperDown漏洞的影響。
  • 安全漏洞ZipperDown曝光,微博、快手等上萬個應用均受影響!
    而官方卻未公布漏洞細節,但在強大的微博中,無缺已經從GitHub中發現了疑似漏洞細節Q:我是Android用戶,是否受ZipperDown影響?A:在Android平臺同樣發現了類似漏洞,並且已經在大量流行應用中確認。近期,盤古實驗室在針對不同客戶的iOS應用安全審計過程中,發現了一類通用的安全漏洞。
  • FireEye紅隊評估工具被盜,華為雲提供檢測防護
    據分析,FireEye紅隊評估工具能使用自動偵察的簡單腳本如CobaltStrike 和 Metasploit之類的滲透框架,應用範圍廣,洩露危害大。慶幸的是其不包含0-day漏洞利用。如果由於客觀原因無法及時修復漏洞,華為雲安全團隊推薦使用安全產品對風險進行消減。
  • Yii2 反序列化漏洞復現分析
    1、漏洞描述Yii是一套基於組件、用於開發大型Web應用的高性能PHP框架。Yii2 2.0.38 之前的版本存在反序列化漏洞,程序在調用unserialize() 時,攻擊者可通過構造特定的惡意請求執行任意命令。
  • 用哪種語言寫的應用漏洞最嚴重?六大主流語言代碼漏洞分析報告出爐
    來自:機器之心 | 責編:樂樂  往日回顧:  正文  靜態代碼 分析安全公司 Veracode 近日發布了一份應用程式分析報告,結果發現比起 JavaScript 和 Python 等語言,C++ 和 PHP 的安全漏洞要嚴重得多。
  • Golang TLS雙向身份認證DoS漏洞分析(CVE-2018-16875)
    因此42Crunch很有可能受此TLS漏洞影響,需要理解漏洞原理,保證42Crunch平臺的安全性。42Crunch安全團隊針細緻分析了該CVE,如下文所示。Go TLS伺服器在接受客戶端證書或者TLS客戶端在驗證證書時會受此漏洞影響。該漏洞具體位於crypto/x509 Certificate.Verify()函數的調用路徑中,該函數負責證書認證及驗證。
  • 青藤雲安全:攻防未動,漏洞先行,標準化漏洞建模與生命周期管理
    圖1:標準化漏洞模型CWE(CommonWeakness Enumeration):是開發的常見軟體和硬體安全弱點列表。基本上可以認為CWE是所有漏洞的原理基礎性總結分析,CVE中相當數量的漏洞的成因在CWE中都可以找到相應的條目。
  • down是向下,out是在外,那down and out是什麼意思?
    我們知道down表示向下,out有「在外」的含義,那down and out是什麼意思呢?down and out的意思是「having no luck, no money, and no opportunities」,即「窮困潦倒的,一無所有的,必定失敗的」。
  • I have come down with a cold這裡的come down with是什麼意思?
    come down with得…病。come down的字面意思是「下來」,其後接不同的介詞時,會有不同的意思。介詞with可表示「原因」,所以come down with等同於contract(罹患),意指「因為某個原因而感到不適」。
  • 衛勝防護一次性pe手套廠家分析一次性手套的使用知識
    1.衛勝防護分析大家進行作業前的首要任務了解不同類型手套的實際防護作用和使用要求,有助於大家進行實際作業正確選擇,期間大家需要注意不能把一般場合用手套代替某些專用手套的使用。2..衛勝防護分析大家使用絕緣手套前,檢查外觀,如表面有孔、裂紋等應禁止繼續使用。3..衛勝防護分析大家使用振動工具時,不要誤認為戴上防振手套就妻妾放心了,工作中安排合理的時間進行休息,工具自身振頻提高,休息時間自然需要進行延長。
  • 巴中防護金剛網價格安裝快捷簡單
    巴中防護金剛網價格安裝快捷簡單 ,「g9e2cn6vl」   巴中防護金剛網價格安裝快捷簡單    這樣的形狀可以增很強的穩固性。實用性:表面經過我公司特殊工藝處理,形成永久表面保護膜,使用年限大大增強。
  • 《另一個伊甸》安娜貝爾怎麼樣 安娜貝爾入手價值分析
    導 讀 另一個伊甸安娜貝爾入手價值分析,聖騎技能怎麼樣,安娜貝爾有哪些技能傷害,安娜貝爾陣容怎麼搭配呢,
  • 沒想到「羽絨服」竟叫down coat!為啥有個down?
    在《牛津詞典》上,我查到down有四種詞性:介詞、形容詞、副詞,還有名詞。作為名詞的down是我的知識盲區,今天藉此機會好好補補課:名詞down的定義為:the very fine soft feathers of a bird(鳥類細膩柔軟的羽毛),這正是「羽絨」的定義吧?
  • 蘋果cms漏洞POC原理分析與V8 V10被掛馬解決辦法分享
    蘋果CMS漏洞是越來越多了,國內很多電影網站都使用的是maccms V10 V8版本,就在2020年初該maccms漏洞爆發了,目前極少數的攻擊者掌握了該EXP POC,受該BUG的影響,百分之80的電影站都被攻擊了,很多電影站的站長找到我們SINE安全來解決網站被掛馬的問題,通過分析我們發現大部分客戶網站在資料庫中都被插入了掛馬代碼,