Skip to content

perf(tracepoint): establish permission boundary for PERF_TYPE_TRACEPOINT #2170

Description

@sparkzky

跟踪自 PR #2154 review: #2154 (comment)

问题

DragonOS 的 PERF_TYPE_TRACEPOINT 路径当前缺少与 Linux 等价的权限边界:

  • 没有 perf_event_paranoid 控制
  • 没有 CAP_PERFMON / CAP_SYS_ADMIN 校验
  • 没有 target-task 可见性检查
  • TracepointPerfEvent 存储了请求的 pid/cpu 但忽略了它们

影响

这是框架级缺陷,影响所有 tracepoint(fuse/vfs/syscalls/sched),不限于 sched_process_exec。任意无特权进程可以 attach eBPF 程序到任意 tracepoint,观测其他进程的 exec/fork/文件操作等事件——存在信息泄漏风险。

建议修复方向

在 perf/tracefs 入口点集中实现权限边界:

  1. perf_event_open(PERF_TYPE_TRACEPOINT) 路径加入 perf_event_paranoid + capability 校验
  2. 落实 pid/cpu 过滤(TracepointPerfEvent 已存储但未使用)
  3. tracefs 文件(events/<sys>/<evt>/enabletracetrace_pipe)的访问权限收紧

关联

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions