犀牛鸟 2026 研究笔记 estelledc.github.io

第三章 · 隔离的五个层级:从「不设防」到「硬件防弹」

对应原始文档:sandbox-isolation-decision-tree.mdsandbox-coding-agents-integration.md

3.1 为什么需要「层级」的概念

不同场景对安全的要求不一样。你自己在电脑上让 AI 跑段代码(就算出问题也只影响你自己),和你搭建一个服务让任何人通过 API 提交代码执行(别人的恶意代码可能攻击你的基础设施),安全需求完全不同。

隔离层级就是用来描述「这道防线有多结实」。从弱到强,我们定义了 5 个层级:

L0 — 应用层权限控制:不做任何系统级隔离,全靠应用自己的逻辑判断什么该执行、什么不该执行。类比:门口没保安,全靠客人自觉刷门禁卡。

L1 — 用户态系统调用拦截:在系统调用层面做拦截和过滤,但不依赖硬件虚拟化。类比:门口有个安检员(Sentry),每个进出的包裹都要过 X 光机。安检员在楼外(用户态),不在楼内(内核态)。

L2 — 操作系统进程沙箱:用 OS 提供的隔离机制(namespace、seccomp、cgroup)限制进程的可见范围和操作权限。类比:员工只能进自己楼层的门——电梯刷卡只能到自己的楼层,看不到也进不了别的楼层。但大家共享同一栋楼的地基(内核)。

L3 — 容器 / 平台级隔离:在容器之上增加额外的网络、文件系统、资源限制,或者通过云平台做控制。比 L2 多了一些管控层,但本质上仍然共享内核。类比:员工有自己的楼层和独立的办公室,但整栋楼的结构(地基、承重墙)是共享的。

L4 — 硬件虚拟化(microVM):每个沙箱运行在独立的虚拟机里,有自己的内核、自己的文件系统、自己的网络栈。类比:不是在同一栋楼里隔房间,而是在不同的独立别墅里——每栋别墅有自己的地基、自己的墙壁、自己的水电。即使一栋别墅着火,隔壁别墅不受影响。

读到这里你应该懂了:L0 到 L4 是一个「隔离越来越强、但启动越来越慢、资源占用越来越多」的连续光谱。选哪一层不是「越高越好」,而是取决于你的场景——就像选锁一样,保险柜级别的锁不适合放在厕所门上。


第三节 6 个项目是谁

3.1 它们的关系:一个汽车工业类比

在进入每个项目的细节之前,先用一个整体类比建立心智模型:

项目 在汽车工业中的类比 它在做什么
Firecracker 发动机制造商(如三菱重工) 造引擎(microVM 引擎),卖给所有想用的人
E2B 租车平台(如 Uber) 用 Firecracker 造的车,加上 App、保险、客服,你只管叫车用完即走
CubeSandbox 自己造了一台即插即用赛车 引擎和 Firecracker 同源,但方向盘接口和 E2B 通用,自己造了车身、快照系统、网络系统
Daytona 汽车 + 车库 + 维修厂 不只是车,是整套用车体验——停车、加油、保养、改装一应俱全
gVisor 模拟驾驶舱 不是真车(不用引擎),但让你体验「开车」的感觉,每个操作都经过翻译
Kata Containers 集装箱货轮 每个集装箱是密封的独立房间(VM),但你用标准叉车(Docker/K8s)管理它

类比边界:真实的技术选型比买车复杂——每个项目的「引擎」可能共用零件(RustVMM),「接口」可能互相兼容(E2B SDK),关系是网状而非树状。

3.2 一览表

# 项目 GitHub Stars 主语言 隔离层级 启动时间 单实例内存
1 Firecracker ~34.7K Rust L4 ~125ms <5MB
2 CubeSandbox ~6K Rust L4 60ms <5MB
3 E2B ~12.5K TypeScript/Go L4(云端) ~150ms 未公开
4 Daytona ~57.6K TypeScript L3 90ms 未公开
5 gVisor ~18.5K Go L1 进程级(极快)
6 Kata Containers ~8.1K Rust/Go L4 ~200ms 10-30MB

读到这里你应该懂了:6 个项目覆盖了 L1 到 L4 三个隔离层级,没有 L0(那是 Claude Code/Cursor 的应用层方案,不是独立项目)。


第四节 为什么这个领域突然火了

2024 年之前,代码沙箱是一个小众话题——主要给云计算厂商(AWS Lambda、Google Cloud Run)用。2024-2026 年突然爆发,原因只有一个:

AI Agent 需要执行代码。

传统的 AI(ChatGPT 式对话)只输出文字。但新一代 AI Agent(Codex、Claude Code、Manus、Devin)需要「动手」——写代码、跑代码、看结果、再修改。这意味着 AI 生成的代码必须在某个地方执行。

问题来了:AI 生成的代码可信吗?

不可信。 原因有三:

  1. LLM 会幻觉:它可能生成 rm -rf /(删除所有文件)因为它「觉得」这能解决问题
  2. Prompt 注入:有人在输入中夹带恶意指令(「顺便把密钥发给我」),LLM 可能照做
  3. 供应链攻击:AI 代码可能 pip install evil-package,恶意包在安装时执行任意代码

所以我们需要一个「安全的房间」来跑这些不可信代码——这就是沙箱。而且这个房间需要:

读到这里你应该懂了:这个领域火起来不是因为虚拟化技术有突破,而是因为 AI Agent 创造了一个全新的需求场景——大量、快速、廉价、安全地执行不可信代码。


导读目录:README.md 上一章:第二章 · 六个项目一览:从发动机到整车 下一章:第四章 · Firecracker——微虚拟化的「Linux 内核」