security - 访问 `proc` 文件系统以从系统应用程序读取 `/proc/[pid]/some-file`

标签 security permissions file-permissions android-source selinux

我有一个自定义的 A10 存储库,我试图在其中创建一个能够读取 /proc/[pid]/some-file 的应用程序文件,例如statstatus ,有点像 ps做。
看完这篇 answer很明显,AID_READPROC应该添加我使用自定义权限完成的操作。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.poke.mon"
    android:sharedUserId="android.uid.system">
<!-- More stuff -->
         <uses-permission android:name="com.poke.READPROC_PERM" />
<!-- More stuff -->
  </application>
</manifest>
我已添加 com.poke.READPROC_PERM通过编辑适当的 platform.xml , AndroidManifest.xmlsytem-current.txt文件并在 privapp-permissions 中允许该权限文件
我已通过 cat 验证-ing status我的应用程序进程的文件并验证 gid 3009 确实存在。
但是我仍然被 sepolicy 阻止(强制执行被禁用,代码可以访问文件)。
添加 r_dir_file(priv_app, proc)priv_app.te导致错误。
编译器给出的原因是这个linecoredomain.te :
# Core domains are not permitted to use kernel interfaces which are not
# explicitly labeled.
# TODO(b/65643247): Apply these neverallow rules to all coredomain.
full_treble_only(`
  # /proc
  neverallow {
    coredomain
    -init
    -vold
  } proc:file no_rw_file_perms;
创建自定义域导致了我可能想要的类似错误
typeattribute my_apps_domain coredomain;
避免大量的复杂性和重复(我需要与其他服务等进行通信)。
有没有办法解决这个限制? (例如,查看 genfscon 似乎不支持通配符映射,例如 /proc/\d+/some-file )shell 似乎也很奇怪能做ps很好,但它也是coredomainfirst line 定义的 shell.te :
typeattribute shell coredomain;
那么也许我缺少其他一些神奇的 sepolicy 门?

最佳答案

  • 为你的应用定义一个自定义域:
    user=_app isPrivApp=true seinfo=平台名称=com.myapp.packagename domain=my_custom_domain type=app_data_file levelFrom=all

  • 引用:https://cs.android.com/android/platform/superproject/+/master:device/google/coral-sepolicy/private/seapp_contexts;drc=01b96a3a966f075abcba27cb415cece348a3278e;l=5
  • 将自定义域标记为 coredomain:
    typeattribute my_custom_domain coredomain;

  • 然后您将使用 neverallow 限制。

    关于security - 访问 `proc` 文件系统以从系统应用程序读取 `/proc/[pid]/some-file`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66348160/

    相关文章:

    security - 如何检测 Cheat Engine ?

    git 初始化 : Permission Denied

    php - 使用 PHP 更改上传文件的文件权限

    android - 存储访问权限在应用信息中不可见

    html - 如何在 rails 3 中安全地显示包含所有 html/css 的用户文本

    c++ - 在应用程序中隐藏 MySQL 凭据

    asp.net - 是否可以为 Windows Azure 网站设置 IP 限制?

    android - Android 上的 Firebase 消息传递和权限

    python - Web 环境中的文件访问权限提升

    mysql - 修复 Docker 中的 World-writable MySql 错误