Android安全漏洞-解壓zip文件可導致目錄遍歷

一、問題描述

昨天公司的項目安全測試報告顯示App存在安全漏洞,評測結果顯示“該App存在解壓zip文件時可導致目錄遍歷的漏洞”。如下圖:

Sybil052-140724@2x.png

二、出現(xiàn)原因

這里的惡意漏洞的問題就在于:因為ZipEntry在進行壓縮文件的時候,名稱沒有做任何限制,而在Android系統(tǒng)中../這種特殊符號代表的是回到上層目錄,又因為這個解壓工作在本應用中,可以借助app的自生權限,把惡意文件名改成:../../../data/data/...即可在解壓的時候把文件解壓到了應用的沙盒中。

例如:現(xiàn)在知道了一個應用的沙盒數(shù)據的詳細信息,比如一些隱私數(shù)據存放在SharedPreferences.xml中,那么這時候我們可以利用這個漏洞,把惡意文件命名成 ../../../../data/data/xxx.xxx.xxx/shared_pref/info.xml,這樣在使用ZipEntry進行解壓文件的時候,因為直接使用了ZipEntry.getName方法或者文件名,然后直接釋放解壓到本地了,所以這時候就相當于替換了本應用的沙盒數(shù)據了,這個也是利用了app本身的權限來寫入沙盒數(shù)據。

三、解決方案

當App中使用zipInputStream類對zip壓縮包進行解壓操作時,在zipEntry.getName()獲取文件名后,必須添加過濾代碼對文件名中可能包含的“../”進行過濾判斷,即:文件名稱不能包含"../"這種特殊字符。

最后附上代碼:

while(( zipEntry = zipInputStream.getNextEntry()) != null ){
    String entryName = zipEntry.getName();
    if(entryName.contains("../")){
        continue;
        // 或者
        // throw new Exception("發(fā)現(xiàn)不安全的zip文件解壓路徑!")
    }
    ...
}
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容