TGViewer
开发者工具箱|编程·开发工具·资源 开发者工具箱|编程·开发工具·资源 @devtoolboxhub · 780 subscribers
Post #1574 10
Vercel Sandbox 实战:安全运行 AI 生成代码

Vercel Sandbox 用 Firecracker 微虚拟机隔离执行不受信任的代码,包括模型刚生成的脚本。每个沙箱独立、临时、有硬超时,无法回读应用的环境变量。作者把所有「让模型写代码并执行」的功能从 child_process 迁到了 Sandbox。

为什么不能直接在 Vercel Function 里跑 AI 生成的代码?Function 与其余应用共享进程、文件系统和环境。用 child_process.exec 或 eval 执行不受信任的字符串,会把 API 密钥、数据库 URL 等全部秘密暴露给模型写的代码。生成的代码能读环境变量、外联窃取数据,或占满 CPU 拖垮同进程的其他请求。

Vercel Sandbox 底层为每个沙箱启动一个 Firecracker 微虚拟机,与 AWS Lambda 租户隔离用的是同一类虚拟化技术,而非命名空间或 cgroup 容器。逃逸容器的难度是跨内核命名空间边界,逃逸微虚拟机则需要针对一个无其他负载共享的内核找到 hypervisor 级漏洞。

创建沙箱只需一次调用:Sandbox.create({ runtime: 'node22', timeout: 60000, resources: { vcpus: 2 } })。runtime 选基础镜像,timeout 是硬上限,resources.vcpus 控制 CPU。执行 LLM 生成的代码时,先把代码写入沙箱内文件,再作为子进程运行,绝不把模型输出传给 eval 或 Function 构造器。

沙箱默认无状态,每次 create 都是全新文件系统,stop 或超时即彻底销毁。需要跨运行记住状态(如多轮代码解释器对话)时,状态必须存在沙箱外。runCommand 支持 detached 选项,可边运行边把 stdout 流式传回浏览器,默认 Node.js 运行时即可,无需 edge runtime。


沙箱适合模型生成或用户提交的不受信任代码,不适合自己写的可信代码或完整 CI 构建流程——后者应留在部署管道里。沙箱的隔离边界正是它的价值所在。

#开发者 #工具 #Vercel #Sandbox #Firecracker #AI安全 #Nodejs #微虚拟机
@DevToolboxHub
More from @devtoolboxhub
  1. Sep 26, 2026PostgreSQL 复制槽上限参数 max_replication_slots 解析 max_replication_slots 决定共享内存中复制槽数组的长度,仅此而已。它不决…
  2. Sep 26, 2026五仓库架构踩坑:Gitlink 与双 CI Flude 团队复盘了多仓库架构的实践代价。项目从第一分钟起就选择拆分成独立仓库,Pipeline、engine、design-docs…
  3. Sep 26, 2026Xeno Core:TypeScript 后端架构框架 Node.js 复杂系统的架构选型往往决定代码的长期命运。开发者常在两条路之间纠结:要么依赖重度使用实验性装饰器和反射(如…
  4. Sep 25, 2026用 SLO 给 AI Agent 的行为定个预算 Grafana Labs 提出把可靠性工程里的错误预算(error budget)思路用到 AI Agent 上。延迟、token…
  5. Sep 25, 2026Xcode 27.2 改用 JSON 项目格式 Xcode 27.2 用基于 JSON 的 project.xcproj 取代了沿用多年的 project.pbxproj。新建项目…
  6. Sep 25, 2026PostgreSQL 的 max_prepared_transactions 该不该开 prepared transaction 是脱离会话独立存在的两阶段提交事务。执行 PREP…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →