我们对其中一个应用程序进行了安全审计,得到了一个奇怪的项目。它说,某些文件的文件权限具有全局读取权限集。具体地说:
# find . -perm -0004
./lib
./lib/libcrypto.so从概念上讲,我理解这一点,因为Android是Linux,因此它具有文件权限。我不知道的是,如何为APK文件的内容设置文件权限,以便该文件仅供用户读取?Linux的等价物是:
chmod 500 ./lib/libcrypto.so但我假设我需要在清单中这样做,或者可能在构建机器的文件系统上,或者什么的?
发布于 2014-02-20 16:12:55
如何为APK文件的内容设置文件权限,使该文件仅供用户读取?
没有。作为APK一部分的文件的权限是由操作系统在安装时设置的,并且您没有对该行为的直接控制。此外,至少在我所做的一次测试中,.so分区上的/data文件不属于您(至少在模拟器上),因此您不能修改它们的权限位:
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如果您有一个根设备,欢迎您自己对此进行分析,看看它的行为是否与仿真器不同。注意,我没有在.so文件所在的位置找到它们,这可能是由于用于测试的OS级别的差异(我尝试了一个4.3 x86模拟器)。
但我假设我需要在清单中这样做,或者可能在构建机器的文件系统上,或者什么的?
不,所有这些都与设备上的.so文件的权限位无关。
正如我在评论中提到的,应该由安全审计师来证明应用程序的行为是不正常的。审核员应该能够这样做,或者承认你的行为不是不正常的,只是它使用NDK。
设备上的流氓应用程序可能利用此漏洞读取应用程序存储的敏感数据。
一般来说,情况并非如此。具有世界可读性的.so不能神奇地使应用程序的“敏感数据”具有可读性。它仍然由数据本身的文件权限控制。
https://stackoverflow.com/questions/21911497
复制相似问题