本文将mark下Seccomp(SECure COMPuting) filtering的相关notes。

Seccomp filtering provides a means for a process to specify a filter for incoming system calls.

以下内容源于deepseek。

Overview

Seccomp filter 是 Linux 内核提供的一种安全机制,用于限制进程能够执行的系统调用(syscall),从而减少潜在的攻击面。它通过自定义过滤规则(基于 BPF 程序)动态允许或拦截系统调用,常用于沙箱、容器等需要严格隔离的场景。

核心概念

Seccomp 模式

  • Strict Mode:仅允许read, write,exit,sigreturn四个系统调用,其他调用会触发SIGKILL`。
  • Filter Mode(Seccomp-BPF):允许通过 BPF(Berkeley Packet Filter)规则自定义允许或拒绝的系统调用列表,提供更灵活的过滤。

BPF 规则

  • 使用类汇编的指令定义过滤逻辑(例如基于系统调用号、参数值等条件)。
  • 规则在内核中执行,确保高效和安全。

工作原理

规则设置

  • 进程通过 prctl()seccomp() 系统调用加载 BPF 规则。
  • 规则定义哪些系统调用被允许(ALLOW)、记录(LOG)或拒绝(KILL/ERRNO)。

执行流程

  • 当进程发起系统调用时,内核触发 Seccomp 过滤器。
  • BPF 规则对系统调用号、参数等进行检查。
  • 根据规则决定放行、终止进程,或返回错误(如 EPERM)。

主要用途

沙箱化应用

  • 浏览器(如 Chrome)用 Seccomp 限制渲染进程的权限。
  • 游戏反作弊系统防止用户态程序滥用内核功能。

容器安全

Docker 和 Kubernetes 默认启用 Seccomp,限制容器内进程的系统调用(如禁止 mountreboot)。

特权进程降权

服务启动后通过 Seccomp 丢弃不必要的系统调用权限。


参考资料:

  1. man seccomp
  2. Seccomp BPF (SECure COMPuting with filters)