2014-02-20 45 views
0

我們對其中一個應用程序進行了安全審覈,並獲得了一個奇怪的項目。它表示某些文件的文件權限設置了全局讀取權限。具體來說:Android滲透測試 - 文件權限?

# find . -perm -0004 

./lib 
./lib/libcrypto.so 

從理論上講,我明白這一點,因爲Android是Linux,因此它具有文件許可權。我不知道的是,如何爲APK文件的內容設置文件權限,以便該文件只能由用戶讀取? Linux的相當於是:

chmod 500 ./lib/libcrypto.so 

但我認爲我需要做到這一點的清單,或者可能構建機器,或東西的文件系統上?

+0

請安全審覈員提供您的應用程序表現異常的任何證據。相反,如果所有NDK應用程序的'.so'文件設置爲世界可讀,則可能有這個原因,您不應該擔心。 – CommonsWare

+0

@CommonsWare謝謝。我意識到最有可能的父目錄不可讀,但審計必須滿足以確保合同。具體問題是「設備上的流氓應用程序可能利用此漏洞讀取應用程序存儲的敏感數據。」如果我們不打算改變權限,那麼我們需要爲什麼我們不這樣做。 –

+0

他們是否考慮了selinux環境?這些文件也可能被這些文件隔離。 – Jon

回答

2

如何爲APK文件的內容設置文件權限,以便該文件只能由用戶讀取?

你不知道。作爲APK一部分的文件的權限是由操作系統在安裝時設置的,並且您無法直接控制該行爲。此外,至少對我所做的,在/data分區.so文件不是由你(至少在仿真器)所擁有,因此不能修改了由你自己的權限位的一個測試:

[email protected]_x86:/data # ls -al app-lib/com.commonsware.android.passwordbox-1/ 
-rwxr-xr-x system system 1757156 2014-03-15 13:28 libdatabase_sqlcipher.so 
-rwxr-xr-x system system 3491452 2014-03-15 13:28 libsqlcipher_android.so 
-rwxr-xr-x system system  526052 2014-03-15 12:28 libstlport_shared.so 

你」歡迎你自己分析一下,如果你有一個根植的設備,看看它的行爲是否與模擬器不同。請注意,我沒有在他們所在的位置找到.so文件,這可能是由於測試操作系統級別的不同(我嘗試使用4.3 x86模擬器)。

但我認爲我需要在Manifest中或可能在構建機的文件系統中執行此操作,或者其他操作?

不,沒有任何與該設備上的.so文件的權限位有關的任何內容。

正如我在評論中提到的那樣,安全審計人員要證明您的應用程序的行爲有些不正常。審計人員應該能夠做到這一點,否則承認你的行爲是而不是異常,除了它使用NDK。

設備上的惡意應用程序可以利用這個漏洞來讀取應用程序存儲的敏感數據

一般來說,這將不會是這樣。世界可讀的.so並不神奇地使應用程序的「敏感數據」世界可讀。這仍然受數據本身的文件權限控制。