【问题标题】:Android penetration test -- file permissions?Android渗透测试——文件权限?
【发布时间】:2014-03-21 14:44:03
【问题描述】:

我们对我们的一个应用进行了安全审计,并得到了一个奇怪的项目。它表示某些文件的文件权限具有全局读取权限集。具体来说:

# find . -perm -0004

./lib
./lib/libcrypto.so

从概念上讲,我理解这一点,因为 Android 是 Linux,因此它具有文件权限。我不知道的是,如何为 APK 文件的内容设置文件权限,以便该文件只能由用户读取? Linux 等价物是:

 chmod 500 ./lib/libcrypto.so

但我假设我需要在 Manifest 中执行此操作,或者可能在构建机器的文件系统上执行此操作,或者其他什么?

【问题讨论】:

  • 请安全审核员提供任何证据证明您的应用行为异常。相反,如果所有 NDK 应用程序都将其.so 文件设置为全球可读,那么这可能是有原因的,您不必担心。
  • @CommonsWare 谢谢。我意识到父目录很可能是不可读的,但必须满足审计以确保合同安全。具体问题是“设备上的恶意应用程序可以利用此漏洞读取应用程序存储的敏感数据。”如果我们不打算更改权限,那么我们需要说明为什么不这样做。
  • 他们是否考虑到 selinux 上下文?这些文件也可能被这些文件隔离。

标签: android file-permissions chmod


【解决方案1】:

如何为 APK 文件的内容设置文件权限,使该文件仅供用户读取?

你没有。 APK 中文件的权限由操作系统在安装时设置,您无法直接控制该行为。此外,至少在我所做的一项测试中,/data 分区上的.so 文件不属于您(至少在模拟器上),因此您不能修改它们的权限位:

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 文件,这可能是由于用于测试的操作系统级别不同(我尝试了 4.3 x86 模拟器)。

但我假设我需要在 Manifest 中执行此操作,或者可能在构建机器的文件系统上执行此操作,或者其他什么?

不,与设备上@9​​87654325@ 文件的权限位无关。

正如我在评论中提到的,由安全审计人员来证明您的应用程序的行为在某种程度上是异常的。审核员应该能够做到这一点,或者承认您的行为没有异常,除了它使用了 NDK。

设备上的恶意应用程序可以利用此漏洞读取应用程序存储的敏感数据

一般来说,情况并非如此。 .so 是世界可读的并不会神奇地使应用程序的“敏感数据”世界可读。这仍然由数据本身的文件权限控制。

【讨论】:

    猜你喜欢
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多