智能体的沙箱技术:代码执行、文件操作与权限隔离

让模型写代码就要让代码跑起来:沙箱是智能体的安全底座

2025 年之后,「能执行代码」从智能体的加分项变成了标配:数据分析要跑 Python,自动化要操作浏览器与文件,工程智能体要跑测试与构建。但执行能力是一把双刃剑——模型生成的代码本质上不可信,它可能出自提示注入的操纵、可能源于幻觉出的危险命令、可能在依赖安装时拖进恶意包。把不可信代码直接跑在生产服务器上,等于把 root shell 交给了概率性输出。因此沙箱(sandbox)成为智能体基础设施里投入最重的一块:E2B、Daytona 等专职代码沙箱服务在 2025 年相继拿到千万美元级融资,主流 Agent 平台全部把「安全执行环境」列为核心卖点。本文从风险模型出发,梳理沙箱的技术谱系、文件与网络的权限设计、工具分级机制与成本工程,给出一套选型与落地的参考框架。

智能体的执行风险模型:四类威胁与一个前提

先建立威胁模型。智能体执行环境面对的风险可以归为四类。文件系统破坏:删除或覆盖宿主数据,经典案例是模型在清理临时文件时执行过于宽泛的递归删除——2025 年多起公开事故里,Agent 在根目录跑递归删除导致数据丢失,「删除类命令必须白名单路径」由此成为多家厂商的硬规则。网络外联与数据外泄:执行环境一旦能出网,被注入的恶意指令就可能把环境内的密钥、用户数据发往攻击者服务器——这是提示注入最现实的变现路径,也是「沙箱默认断网」原则的由来。资源滥用:死循环、 fork 炸弹、借算力挖矿,吃光宿主资源拖垮同宿主的其他租户。供应链投毒:模型按记忆引入的包名可能是被抢注的恶意包(拼写式抢注攻击在 PyPI 上长期高发),pip install 的一瞬间恶意代码就进入了执行环境。这四类威胁共享一个前提:模型输出不可信。整个沙箱设计的出发点就是把「模型说要做什么」与「系统允许做什么」隔开——模型是建议者,权限系统才是决策者。凡是把模型输出当指令直接透传到宿主 shell 的架构,无论提示词写得多严密,都只是运气好还没出事。

沙箱技术谱系:容器、微虚拟机与 WASM 的三档隔离

当前可用的沙箱技术分三档,隔离强度与工程成本各有取舍。第一档是容器加系统调用过滤:Docker 提供命名空间与 cgroup 隔离,叠加 gVisor(Google 开源的用户态内核,拦截并过滤系统调用)或 seccomp 规则把系统调用面收窄,非 root 运行、只读根文件系统——这是目前最普及的方案,生态成熟、镜像复用方便,秒级启动,但共享内核的架构决定了它是三档里隔离最弱的,适合低中风险场景。第二档是微虚拟机:以 Firecracker(AWS Lambda 与 F2a 底座)为代表,硬件虚拟化级别的隔离,每个沙箱一个独立内核,攻击面大幅收窄,启动时间压缩到 125 毫秒量级,E2B 等商业沙箱服务即基于此类技术——处理不可信代码的默认推荐,代价是运维复杂度与内存开销高于容器。第三档是WASM 运行时(Wasmtime、Wasmer 等):进程内沙箱,能力由导入接口显式授予(没给的能力不存在),启动毫秒级、开销极低,缺点是生态兼容性受限——Python 科学计算栈、浏览器自动化这类重依赖场景跑不动,适合单文件数据处理、轻量计算类任务。明确不可作为安全边界的:语言级沙箱(如 Python 的受限执行库)、提示词层面的「请不要执行危险操作」、单纯的超时限制——它们可以与上述三档叠加作为纵深防御的一层,但绝不能单独承担隔离职责。选型的实用公式:风险越高选越重的隔离,频率越高选越轻的启动。

文件与网络的最小权限:挂载、配额与出口管控

沙箱内再按最小权限原则细分四条边界。文件系统:根文件系统只读,可写区域用白名单目录挂载(只挂载本任务的工作目录),磁盘配额封顶(如 1GB),防止写爆磁盘与越权触碰其他路径;任务结束按策略销毁或归档整个可写层。网络:默认关闭,确需联网的走出口代理并配域名白名单——既拦外泄(数据只能发往白名单域),也拦下载(只许访问包管理与指定源);对「必须全网访问」的浏览器类任务,则退一步用独立网络命名空间加流量审计。进程与资源:非 root 用户运行,CPU 与内存配额(如 1 核 2GB),进程数上限防 fork 炸弹,单次执行超时强制终止(常见 30 到 300 秒按任务类型设定)。输出捕获:标准输出与错误流限长截断(超长输出既占内存也可能把敏感数据带回上下文),产物文件走显式导出通道并做大小与类型校验。这套边界要在平台层固化成默认值,而不是每个业务自己配——安全默认值一旦留给业务自定义,就一定会被「临时方便」突破。配套的还有镜像治理:沙箱镜像最小化(不装用不到的工具)、定期重建换基线、依赖清单锁定版本并扫漏洞,把供应链风险压在镜像构建时而非运行时。

工具分级与人工确认:权限模型的业务层

沙箱解决「代码跑在哪」,权限模型解决「智能体被允许做什么」。成熟平台普遍采用工具风险分级:只读工具(搜索、查询、读文件)自动放行;沙箱内写操作(在工作目录建文件、跑脚本)按策略自动放行或抽样审计;触碰真实世界的工具(发邮件、提交代码评审、调用支付 API、操作生产数据库)必须逐次或按会话批量人工确认。人工确认的交互设计有讲究:确认框要展示完整命令与影响面(执行什么、动哪些文件、花多少钱),支持「本次允许」「本会话允许」「永远拒绝」三档粒度——粒度太细用户会疲劳后无脑点允许,太粗则形同虚设。Claude Code 的权限模式(默认询问、可切换自动接受范围)、Cursor 的命令逐条确认都是这个思路的产品化。企业场景再叠一层身份与审计:沙箱会话与用户身份绑定,操作留痕到「谁的任务在何时执行了什么命令、产出什么变更」,满足合规审计;对多租户平台,租户间沙箱必须强隔离(微虚拟机档位),共享任何内核或文件系统都构成跨租户泄露面。值得强调的判断是:权限模型不是沙箱的替代品,两者是纵深防御的内外两层——沙箱限制「即便失控能破坏什么」,权限模型减少「失控发生的机会」,缺一不可。

成本工程:沙箱池、预热快照与会话复用

沙箱的隐形成本常被低估:一次冷启动从镜像拉取到就绪可能要数秒到数十秒,高并发场景下创建销毁的开销和资源闲置足以左右平台毛利。工程上的成熟解法有三。池化与预热:预先拉起一批就绪沙箱待命,请求到达即分配,用完回收重置——把冷启动移出关键路径,P95 延迟从秒级压到百毫秒级。快照恢复:Firecracker 支持把初始化完成的虚拟机状态做成快照,恢复即起沙箱,跳过引导过程;进一步把常用依赖环境(Python 栈、常用库)预装进快照,让「带依赖就绪」的成本也从关键路径消失。会话粘性与复用:同一用户或同一任务链的多次执行复用同一沙箱实例(保留已安装依赖与中间文件),空闲超时才销毁——交互式场景下,复用把平均每次执行成本降一个量级,但要配套严格的租户隔离校验与状态清理策略,防止上一任务的残留数据泄给下一任务。成本核算要按「每次执行的完整开销」算账:启动、运行、存储、回收都摊进去,才能真实反映单价并定价。2025 年的公开信息显示,头部代码沙箱服务把单次执行成本压到了美分级,靠的正是池化加快照加复用的组合拳——沙箱从「安全功能」演化为「成本竞争力」就是这个过程的注脚。

flowchart TD
    A["模型请求执行代码"] --> B["权限模型判定"]
    B -->|"只读工具"| C["直接放行"]
    B -->|"沙箱内写操作"| D["策略放行或抽样审计"]
    B -->|"触碰真实世界"| E["人工确认 影响面展示"]
    C --> F["从池中分配预热沙箱"]
    D --> F
    E -->|"批准"| F
    E -->|"拒绝"| G["记录并返回拒绝原因"]
    F --> H["受限运行 只读根 白名单挂载 断网或代理出口"]
    H --> I["超时强杀 资源配额 输出截断"]
    I --> J["产物导出校验 审计留痕"]
    J --> K["沙箱回收重置 归池待命"]

小结

沙箱是智能体基础设施里「不出事没人注意、出了事就是头条」的那一层,值得在最早期就按生产标准建设。核心结论五条:第一,威胁模型从「模型输出不可信」出发,文件破坏、网络外泄、资源滥用、供应链投毒四类风险对号入座;第二,隔离档位按风险与频率选——低中风险容器加系统调用过滤,不可信代码默认微虚拟机,轻量计算可上 WASM,语言级限制与提示词约束永远不算安全边界;第三,最小权限落到文件、网络、进程、输出四个具体边界上,安全默认值由平台固化不留业务自定义;第四,权限模型在沙箱之外再套一层,工具按风险分级、高危操作人工确认、全链路审计留痕;第五,成本工程靠池化、快照与会话复用把沙箱单价压到可规模化商用的水平。展望后继趋势:机密计算(CPU 的可信执行环境)开始与沙箱融合,让「租户数据连平台方也看不到」成为可能;浏览器沙箱与代码沙箱的统一编排也在成为平台标配。沙箱技术的竞争焦点正在从「隔离得住」转向「隔离得住且便宜且快」——这是基础设施成熟期的典型信号。

← 返回资讯列表

读者留言

COMMENTS 暂无
仅本站原创文章开放留言 · 请勿留下手机号、邮箱等个人信息

还没有留言,来说第一句?