針對zipperdown安全漏洞的攻擊條件:
1、App用了ZipArchive
2、App下發的某個zip包傳輸過程沒加密,zip包也沒加密?
3、App使用了JSPatch或其他執行引擎,且本地腳本沒有加密,只要把腳本放指定目錄即可執行,且未對本地腳本進行合法性驗證
4、用戶連接不可靠WIFI熱點進行網絡通信
針對此漏洞的規避方法;開發者自身規避方法:
1、對SSZipArchive庫進行修復,在unzipFileAtPath解壓函數中,對可能造成目錄穿越的”../”字符串時進行攔截。
2、客戶端與服務端通信時,使用https安全傳輸協議,確保APP與服務端交互中的數據有經過HTTPS協議加密;
3、對APP下載的zip包文件進行傳輸過程中的加密保護,并在客戶端對此zip包進行完整性、合法性驗證,防止被替換;
4、對APP中本地腳本進行加密,并對本地腳本進行完整性、合法性驗證,防止被替換;
擴展:ZipperDown并不是新漏洞,而是“非常經典的安全問題”,其影響主要取決于具體App和它所獲取的權限,并且也同樣在android平臺發現了類似漏洞“文件目錄遍歷漏洞”
關于文件目錄遍歷漏洞,漏洞產生前提:
Android應用中使用了解壓縮文件,比如動態加載機制,下載apk/zip,然后本地做解壓工作;
漏洞出現原因
因ZipOutputStream類對文件進行壓縮時,未對文件名做任何限制,如果下載的zip包被惡意攔截,進行修改,即可將文件名命名為“../../../../data/data/xxx.xxx.x/xxx”,因為Android是基于linux系統的,在Linux系統中../這個符號代表是回到上層目錄,那么這里可以多弄幾個這個符號,這樣就會回到Android系統的根目錄,然后在進入當前應用的沙盒目錄下,寫一個文件。
ZipperDown漏洞存在的風險
攻擊者通過該漏洞可以破壞應用數據、獲取用戶隱私數據甚至可獲取任意代碼執行的能力。
規避措施;開發者自身規避方法:
1、對ZipEntry進行解壓時,過濾對具有特殊字符的文件進行解壓,或者解壓到本地文件名稱不能包含特殊字符;
2、客戶端與服務端通信時,使用HTTPS安全傳輸協議,確保APP與服務端交互中的數據有經過HTTPS協議加密;
3、對APP下載的zip包文件進行傳輸過程中的加密保護,并在客戶端對此zip包進行完整性、合法性驗證,防止被替換;
愛加密安全解決方案
1、愛加密提供針對此漏洞評測方案,檢測App是否存在此漏洞;
2、使用愛加密通訊協議加密SDK,對通信過程中的數據進行加密,并保證數據不被篡改;
用戶安全解決方案
不要使用未經認證的WIFI熱點,并及時更新手機中的App。