ZipperDown漏洞簡單分析及防護
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 參考資料
蒸米,白小龍 @ 阿里基礎安全研究
原文釋出時間為:2018-05-18
本文來自雲棲社群合作伙伴“嘶吼網”,瞭解相關資訊可以關注“嘶吼網”。
相關文章
- SSRF漏洞簡單分析
- 定心丸!ZipperDown漏洞分析與修復建議
- 智慧汽車安全風險及防護技術分析
- 分析及防護:Win10執行流保護繞過問題Win10
- 教你資料庫漏洞防護技術資料庫
- 淺談中介軟體漏洞與防護
- 框架網站漏洞修復防護方法框架網站
- iOS曝ZipperDown漏洞 快手、陌陌等均受影響!iOS
- 常見的伺服器漏洞防護措施!伺服器
- 簡單的csrf漏洞
- 如何做好防護SQL隱碼攻擊漏洞SQL
- 雲吞鋪子:CC防護分析
- 批次勒索挖礦常用漏洞利用工具Jexboss的簡單分析
- 車聯網安全威脅分析及防護思路,幾維安全為智慧汽車保駕護航
- 簡單塔防小遊戲遊戲
- Linux伺服器漏洞防護 可SUDO提權到管理員Linux伺服器
- 網站漏洞修復SQL隱碼攻擊防護辦法網站SQL
- Windows守護程式簡單示例Windows
- 防抖原理以及簡單實現
- 漏洞分析——變數缺陷漏洞及通用異常捕獲宣告缺陷漏洞變數
- Symbolic Link漏洞簡單背景介紹Symbol
- prometheus 簡單使用及簡單 middleware 開發Prometheus
- 13-網路安全漏洞防護技術原理與應用
- mr原理簡單分析
- 簡單陰影分析
- (CVE-2019-5786) 漏洞原理分析及利用
- 簡單瞭解高防伺服器伺服器
- 重要通知|綠盟NIPS釋出CVE-2019-0708漏洞防護規則
- 【技術向】CVE-2019-1040漏洞分析&防禦報告
- 淘口令效果及貼上板攻擊防護實現
- 企業及個人如何有效防護網路攻擊?
- Windows漏洞:MS08-067遠端程式碼執行漏洞復現及深度防禦Windows
- ASM磁碟簡單維護,新增,刪除ASM
- js熱更新簡單分析JS
- MediaScanner原始碼簡單分析原始碼
- 骷髏病毒簡單分析
- 簡單的UrlDns鏈分析DNS
- HDLC報文簡單分析