近日,盤古實驗室對外披露了ZipperDown漏洞,該漏洞是盤古團隊針對不同客戶的iOS應用安全審計的過程中發現的,大約有10%的iOS應用會受到此漏洞的影響。
利用此漏洞可以做很多事情,例如實現目錄遍歷攻擊和App Container目錄中任意檔案覆蓋風險……影響究竟有多大,取決於具體App和對應取得的許可權。
ZipperDown獲得大量媒體聚焦的同時,也吸引了大量不法分子的目光,一場安全風暴隱約即將到來。
那如何防止ZipperDown漏洞帶來的破壞呢?網易雲易盾安全專家結合目前披露的資訊以及自己的分析,給出瞭如下分析和建議:
漏洞原理
ZipperDown漏洞並非iOS平臺自身問題,而是與Zip檔案解壓有關。iOS平臺沒有提供官方的unzipAPI函式,而是引用了第三方庫來實現解壓功能,由於現有的iOS App基本上採用SSZipArchive或Ziparchive來實現解壓,因此漏洞是來自使用第三方Zip庫解壓Zip檔案的過程中沒有對Zip內檔名做校驗導致的。如果檔名中含有“../”則可以實現目錄的上一級跳轉,從而實現應用內任意目錄的跳轉,進一步可以實現檔案覆蓋,如果把App的hotpatch檔案覆蓋替換了,可以達到執行駭客指定指令,從而按照駭客的意圖實現任意應用內攻擊。
這個漏洞不禁讓易盾聯想到不久前Android平臺上的unZip解壓檔案漏洞,和這個漏洞幾乎是完全一樣,只是平臺和第三方解壓庫不同而已。Android平臺上的被稱為unZip解壓檔案漏洞,網易雲易盾安全檢測平臺已經可以實現掃描檢測。
修復建議
開發中在使用第三方解壓庫對Zip檔案解壓過程中,要對Zip內部檔名進行“../”過濾,另外存放關鍵資料的檔案如Hotpatch記得進行加密、合法性和完整性校驗,使用HTTPS安全傳輸協議通訊等,也可以購買易盾的通訊協議加密SDK,做到最大程度的防範。
本漏洞的修復可以參考Android平臺的unZip解壓檔案漏洞修復方案進行修復,下面是Android平臺的修復方案:
總結
攻擊條件:
- 使用了第三方解壓庫。
- Zip包在解壓時沒有做完整性校驗。
- APP使用了JSPatch或其他執行引擎,且本地指令碼沒有加密,只要把指令碼放指定目錄即可執行 ,本地指令碼未做合法性校驗。
- 連線不可靠的WIFI熱點進行通訊。
類似解壓等通用功能的漏洞,一個平臺爆出了漏洞,其他平臺往往也受到牽連,這個ZipperDown漏洞就是這樣的。在最後,網易易盾移動安全專家也向普通使用者建議,在相關App未修復之前,不要輕易連線不受信任的公共網路。