【问题标题】:insmod in android lollipop with SE Linux enforced强制执行 SE Linux 的 android 棒棒糖中的 insmod
【发布时间】:2014-11-24 11:02:54
【问题描述】:

我正在尝试使用一些模块参数执行 insmod abc.ko, 然而,这些模块参数需要动态计算。所以我正在启动一个应用程序 /system/bin/my_app 来计算这些参数,然后在 my_app 中执行 insmod。

问题: 当 my_app 在启动时使用 init.hammerhead.rc 脚本启动时,它无法执行 insmod 并给出以下错误

type=1400 audit(0.0.4): avc: denided {sys_module} for path="system/bin/my_app" dev="mmcblk0p25" ino=170 scontext=u:r:init:s0 tcontext=u:r:init.s0 tclass=file

我怎样才能让 my_app 能够 insmod ?

感谢任何解决此问题的指针

【问题讨论】:

  • 应用程序无法插入模块 - 您需要一个 setuid 帮助程序来执行此操作。从理论上讲,您可以使用要传递的参数来运行它。

标签: android linux-kernel android-5.0-lollipop selinux insmod


【解决方案1】:

insmod 模块的能力与运行 do_insmod() 的代码的权限相关联。在您的情况下,问题是没有描述允许您的软件访问模块的策略。 我不是 sepolicy 方面的专家,但有一个为什么要从日志中生成适当的策略文件:这是一篇很好的文章:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/SELinux_Users_and_Administrators_Guide/Security-Enhanced_Linux-The-sepolicy-Suite-sepolicy_generate.html

希望对您有所帮助。 艾门。

【讨论】:

    【解决方案2】:

    终于找到了解决办法。 my_app 应该被赋予新的策略,允许它执行 insmod。

    [1] 在 ///sepolicy/my_app.te 中创建 my_app.te [2] 将以下策略添加到 my_app.te 。

    type my_app, domain;
    type my_app_exec, exec_type, file_type;
    
    allow my_app self:capability sys_module;
    allow my_app self:capability { setuid setgid };
    allow my_app self:capability sys_admin;
    allow my_app shell_exec:file rx_file_perms;;
    init_daemon_domain(my_app)
    
    permissive_or_unconfined(my_app)
    

    [3] 将 my_app.te 添加到 BoardConfig.mk 文件中的 BOARD_SEPOLICY_UNION。 [4] 在 sepolicy/file_contexts 中添加以下内容

    /system/bin/my_app u:object_r:my_app_exec:s0

    更多信息或问题:订阅 seandroid-list-join@tycho.nsa.gov

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-21
      • 2016-02-28
      • 2016-02-11
      • 1970-01-01
      • 2015-08-12
      • 1970-01-01
      相关资源
      最近更新 更多