是否可以在 seccomp 过滤器中获取当前 PID?

问题描述

当通过 SECCOMP_RET_USER_NOTIF 处理 seccomp 用户空间通知 (https://www.kernel.org/doc/html/latest/userspace-api/seccomp_filter.html) 时,我发现 PID 作为 seccomp_notif 结构的一部分对于某些过滤决策非常有用。 在 ebpf 过滤器辅助函数中,如 bpf_get_current_pid_tgid(),可用于获取此类信息。但是由于 seccomp 似乎只支持经典的 BPF,我想知道是否还有其他方法。 据我所知,在 seccomp 过滤器中只能访问 seccomp_data 结构。 有没有办法直接获取 seccomp 过滤器中的 PID 等特定信息?

解决方法

不,除非它是系统调用参数的一部分,否则您无法从 seccomp 过滤器本身获取该信息。要检索 PID,您必须例如将控制权交给用户空间 ptracer 进程或依赖于您提到的 SECCOMP_RET_USER_NOTIF