智能体沙箱与安全代码执行:根据风险匹配隔离深度
大多数发布具备代码执行能力的 LLM 智能体(Agent)的团队都犯了同样的错误:他们将沙箱化视为一种二元属性。要么完全跳过隔离(“我们信任我们的用户”),要么部署 Docker 容器并认为问题已解决。这两种立场在进入生产环境后都经不起考验。
现实情况是,沙箱化存在于一个包含五个不同级别的光谱上,每一级都提供不同的隔离保证、性能配置和运营成本。所选隔离级别与实际风险概况之间的不匹配是大多数智能体安全事件的根本原因 —— 而不是根本没有沙箱。
这篇博文将带你了解沙箱光谱、每个沙箱都必须解决的四个维度的能力限制、从业者经常忽视的逃逸向量,以及根据你的智能体实际行为来匹配沙箱深度的决策框架。
隔离光谱
将智能体沙箱化视为一个刻度盘,而不是一个开关。
级别 0:无沙箱。 直接在宿 主操作系统上进行 exec() 或子进程调用。零开销,零隔离。LLM 生成的代码以进程的全权权限运行。这仅适用于开发人员工具,即你在离线环境中执行自己的静态脚本 —— 这类场景几乎没有生产级智能体存在。
级别 1:容器隔离 (Docker/LXC)。 Linux 命名空间(pid、net、mnt、uts、ipc)加上用于资源限制的 cgroups。启动时间以毫秒计,几乎零内存开销。关键弱点是共享内核:主机上的所有容器都运行在同一个 Linux 内核上,这意味着一个未修复的内核 CVE 漏洞会同时危害主机上的每个容器。容器隔离不等于虚拟机隔离。请在单租户、内部环境中的可信代码中使用它。
级别 2:seccomp-BPF + 强化策略。 在进程启动时附加的 seccomp-bpf 过滤器限制了进程可以进行的系统调用。默认的 Docker 配置阻止了大约 44 个系统调用;强化的 AI 智能体配置应该更进一步 —— 阻止 ptrace、mount、unshare、带有 CLONE_NEWUSER 的 clone、keyctl、perf_event_open 和 bpf。将其与 --cap-drop=ALL、--security-opt no-new-privileges 以及 AppArmor/SELinux 强制访问控制配合使用。开销微乎其微(过滤器评估以纳秒计),但你仍然处于共享内核之上 —— seccomp 减少了攻击面,它并不能消除它。
级别 3:gVisor (用户态内核)。 Google 的开源项目在一个名为 Sentry 的 Go 进程中重新实现了 Linux 系统调用界面。客户机系统调用在到达宿主内核之前被拦截,并在用户态进行处理。为了逃逸,攻击者必须首先突破 Sentry,然后击败保护 Sentry 进程本身的强化 seccomp 配置 —— 这是两个独立的层级。在计算密集型任务上性能开销接近于零,在 I/O 密集型工作负载上为 10–30%。启动时间为毫秒级。启用它只需要更改一个 daemon.json 来使用 runsc 运行时。GPU 支持已在 2024/2025 年添加。gVisor 是在无法使用嵌套虚拟化的 Kubernetes 上运行多租户 SaaS 工作负载的正确选择。
级别 4:微型虚拟机 (Firecracker)。 每个沙箱都有自己专用的 Linux 内核。AWS 使用 KVM 用约 50,000 行 Rust 代码构建了 Firecracker。冷启动时间不到 125 毫秒。每个虚拟机的内存开销低于 5 MiB。与裸机相比,计算开销不到 5%。攻击面的减少是巨大的:Firecracker 仅暴露四个虚拟设备(virtio-block、virtio-net、serial、keyboard),而 QEMU 暴露数百个。Jailer 伴随程序通过降低权限和应用 cgroups 作为第二道防线。通过快照/恢复,沙箱配置时间可通过写时复制(copy-on-write)覆盖层恢复预热的内存镜像,降至约 28 毫秒。这就是 AWS Lambda 运行的方式 —— 每月调用量达数十万亿次 —— 也是 e2b 等托管平台用于 AI 代码执行的方式。对于处理用户提供或 LLM 生成的代码的多租户部署,微型虚拟机是当前的标准。
级别 5:WebAssembly (Wasm/WASI)。 编译为 WebAssembly 的代码运行在基于能力的沙箱中,默认情况下无法访问文件系统、网络或操作系统。每个导入必须由宿主明确授权。亚毫秒级启动,接近裸机的计算性能。局限性:并非所有语言都能干净地编译为 Wasm。Python 需要 Pyodide(编译为 Wasm 的 CPython),它可以工作但冷加载时间较长。Wasm 是插件沙箱、浏览器端代码执行以及在边缘环境中运行的智能体工具的正确选择。它不能取代用于通用代码执行的微型虚拟机隔离,因为 Spectre 类瞬态执行攻击可能会破坏 Wasm 的内存隔离 —— 这是一个在更高安全级别中很重要的已知局限。
