sandboxing

gVisor 对比 seccomp-bpf:为攻击工具做沙箱

让 agent 运行漏洞利用会逼出一个令人不安的问题:当它启动的工具本身是恶意的,或 agent 自己出错时,会发生什么?我们的第一个答案是 seccomp-bpf;第二个,面向更高风险的负载,是 gVisor。它们不竞争——而是叠加。

seccomp-bpf:廉价而锋利

seccomp-bpf 在内核层以近乎零成本过滤系统调用。非常适合已知工具:定义 nmap 或 ffuf 所需系统调用的白名单,其余以 SIGSYS 终结。问题在于:配置脆弱,多放行一个系统调用就可能成为逃逸通道。

seccomp:
  default_action: SCMP_ACT_ERRNO
  syscalls:
    - names: [read, write, openat, connect, socket]
      action: SCMP_ACT_ALLOW

gVisor:在你与真实内核之间的一层内核

gVisor 在一个用 Go 编写的用户态内核中拦截系统调用:二进制以为在与 Linux 对话,实则在与 Sentry 对话。暴露的真实内核面急剧缩小。你以性能为代价,换来对内核 0-day 的隔离。

我们如何选择

  • 可信工具、已知配置: seccomp-bpf。
  • 不可信二进制、第三方漏洞利用、分析中的恶意软件: gVisor,并在其内部叠加 seccomp-bpf。
  • 始终: 用 cgroups 限制 CPU/内存,并按范围实施网络策略。

我们交付什么

Gwaihir 按工具信任级别选择沙箱,而非全局默认。常见情形为速度运行于 seccomp-bpf;高风险落入 gVisor。纵深防御,而非一道墙。