问题标签 [seandroid]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
210 浏览

android - 为什么 AOSP 7.1.2 上出现 getpidcon() 错误?

我正在制作基于 AOSP Nougat 最新源的定制 bsp。

Android 服务进程要求服务管理器查找或添加服务。服务管理器尝试通过调用 svc_can_register() 或 svc_can_find() 来检查 mac 权限,后者调用 check_mac_perms(),后者调用 getpidcon()。

让我们看看 svc_can_find()

check_mac_perms_from_lookup() 是这样的:

它调用 check_mac_perms()。check_mac_perms() 像这样:

它调用 getpidcon()。getpidcon() 在 external/selinux/libselinux/src/procattr.c 中定义

getpidcon() 定义如下:

"getpidattr_def(pidcon, current)" 扩展为 getpidcon() 函数定义并调用 getprocatrcon()

getprocattrcon() 是这样的:

很简单吧?只需打开一些文件并读取内容并通过函数参数返回。

它在 openattr() 处失败。我已经通过在 openattr() 中插入一些日志函数来确认这一点。openattr() 也是一个简单的函数。

失败点是“fd = open(path, flags | O_CLOEXEC);”

即使文件存在,几乎总是打开失败。我不明白这一点,想知道是什么导致了问题。我通过插入一些日志打印代码、检查 android log(adb logcat) 并从 android shell(adb shell) 读取文件来确认失败,例如“cat /proc/412/attr/current”。'cat ...' 读取成功,但日志显示打开文件失败。奇怪的是,如果 'pid' 为 0,它就成功了。

如果打开失败,将无法启动服务,导致系统无法正常启动。如果我忽略失败并从 getpidcon() 返回成功,系统会正确启动,但这显然不是正确的做法。

我正在将 bsp 测试为 selinux 许可模式。

谁能有我这样的经历?如果有人,请分享经验和问题的解决方案。

谢谢你。李三永。

0 投票
1 回答
860 浏览

android - SEPolicy for Android Native binder 客户端

我是 Android 世界的新手

我想知道如何 为本机 binder 客户端程序设置 SEPolicy (以及设置什么......)

我正在使用来自Using Binde-IPC 的供应商绑定器(vndservicemanager)参考

我为所需的 SEPolicy 添加了一些文件


现在我有两个内置的可执行文件——my_binder_servicemy_client

它们都在 /vendor/bin/ 下

my_binder_service在启动时启动,它会将服务添加到 vendor servicemanager

my_client是一个使用 binder IPC 从my_binder_service执行某些功能的程序

这是我在init.rc中的设置

到目前为止我有什么:

  1. my_binder_service在引导时成功启动
  2. 它可以向供应商服务管理器添加服务
  3. my_client在permissive 模式下表现良好

以上内容在强制模式下通过ps -AZvndservice list命令进行验证


但是,my_client在强制模式下遇到分段错误

我通过以下方式检查被拒绝的消息

但是我在许可和强制模式下都没有找到任何消息

我还通过ps -AZ检查了这两个正在运行的进程的上下文:

我发现没有为my_client正确设置进程上下文

我认为这可能是my_client在强制模式下的问题

我认为my_binder_service设置正确是因为 init.rc 文件中的seclabel命令

但我不知道在哪里为 my_client 设置进程上下文

这里是my_client.te的内容(my_binder_service.te和这个类似)

并且文件上下文在file_context文件中指定

SEPolicy 部分是否缺少任何内容?

或者这不是关于 SEPolicy 的问题?

0 投票
0 回答
984 浏览

android - 非初始化进程/文件的 SElinux 域转换(Android Natvie)

我正在编写 Android Native 程序并设置它们的 SEPolicy

我想知道如何为非init程序设置进程上下文,看来域转换不起作用

我写了 2 个程序并将构建的可执行文件放在/vendor/bin

一个程序my_service作为初始化守护程序服务运行;

而另一个my_client是一个非初始化程序,必须手动执行

这 2 个程序使用 Binder IPC 进行通信。

但是我在尝试为my_client设置进程上下文时遇到了麻烦,这是一个非初始化程序


对于 my_service,它的 selinux 上下文主要设置在 2 个文件中

  1. 我的服务.te
  2. 文件上下文

而且我还在init.rc文件中使用了 seclabel

我检查了my_service的文件上下文和进程上下文,它们被设置为我所期望的


对于 my_client 的SEPolicy,一切都与my_service类似,只是它没有写在init.rc文件中,因为它不是一个 init 程序

但是,对于my_client,只有文件上下文设置为my_client_exec

我尝试运行 my_client 并查看了进程上下文:

进程上下文是su,而我希望它是my_client

此外,我在te_macros中获得了有关init_daemon_domain(XX)的信息

我认为它会进行域转换:当 init 运行带有 XX_exec 上下文的文件时,它会将其进程上下文转换为 XX!

所以我将规则更改为:

但这违反了一些预定义的策略。


顺便说一句,这两个程序之间的活页夹 IPC 似乎工作。

令人困惑的是,即使进程上下文不是my_client ,以下规则仍然有效?

有没有办法为非初始化程序进行域转换?

或者我对 SEPolicy 有什么误解?因为我找到的所有资源都是关于为 init 程序设置 SEPolicy

0 投票
1 回答
73 浏览

java - setenforce 0 后无法打开设备节点

我试图从/dev/graphics/fb0服务路径中的设备文件中获取一些数据,U 具有 root 权限并执行chmod 777命令,然后出现“权限被拒绝”错误。
然后我执行setenforce 0了:,错误消失了,但文件的大小仍然为零

0 投票
1 回答
371 浏览

android - 在 Android 10 上的 SElinux 中添加新的安全策略

我希望女巫/dev/i2c-1设备不在 Android 10 上的 SELinux 安全策略范围内。

我有 Android 10 的源代码。我尝试.te/device/thales/mt8768q/sepolicy/edgelab.te

在 foo.te 中,我向该站点添加了一个类似的示例:https ://source.android.com/security/selinux/customize 。

但是,在编译中,这一行会产生错误。

更新:

我在以下位置添加新行/device/manufacturer/device-name/BoardConfig.mk

错误是:

也许i2c-1_device不是一个有效的名称,但我不知道如何/dev/i2c-1.te文件中引用。

0 投票
2 回答
103 浏览

compiler-errors - SEAndroid:转储状态是否违反了永远不允许的规则

在构建 AOSP S(12) 时,我遇到了一个奇怪的问题,但可能只在有时/某些机器上。error.log如下

然后我检查规则。系统/sepolicy/private/property.te:46 说:

和 system/sepolicy/public/dumpstate.te:278 说:

我的问题是,这是否违反了从不允许规则并导致此错误?如果是,为什么有时不会弹出此错误。如果不是,我的错误的原因是什么?

提前致谢。