我们对其中一个应用程序进行了安全审核,得到了一个奇怪的项目。它说某些文件的文件权限具有全局读取权限集。具体做法是:
# find . -perm -0004
./lib
./lib/libcrypto.so
从概念上讲,我理解这一点,因为Android是Linux,因此它具有文件权限。我不知道的是,如何为APK文件的内容设置文件权限,以便该文件只能由用户读取? Linux等价物将是:
chmod 500 ./lib/libcrypto.so
但我认为我需要在Manifest中,或者可能在构建机器的文件系统上执行此操作,或者其他什么?
答案 0 :(得分:2)
如何为APK文件的内容设置文件权限,以便该文件仅供用户阅读?
你没有。作为APK一部分的文件的权限是由操作系统在安装时设置的,并且您无法直接控制该行为。此外,至少在我所做的一个测试中,.so
分区上的/data
文件不属于您(至少在模拟器上),因此不能由您修改其权限位:< / p>
root@generic_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
如果你有一个root设备,欢迎你自己做这个分析,看看它的行为是否与模拟器不同。请注意,我没有在他们所在的位置找到.so
文件,可能是因为测试的操作系统级别不同(我尝试了4.3 x86模拟器)。
但我认为我需要在Manifest中,或者可能在构建机器的文件系统上执行此操作,或者其他什么?
不,其中任何内容都与设备上.so
文件的权限位无关。
正如我在评论中提到的,安全审核员应该证明您的应用程序的行为有些异常。审核员应该能够做到这一点,或承认你的行为不异常,除了它使用NDK。
设备上的恶意应用程序可以利用此漏洞来读取应用程序存储的敏感数据
一般来说,情况并非如此。 .so
具有世界可读性,并不会让应用程序的“敏感数据”世界变得可读。这仍然受数据本身的文件权限控制。