smolmachines / smolvm:用于不受信任的 Python 和 JavaScript 的沙箱

Simon Willison's Blog 工具

摘要

研究表明,smolvm 利用硬件隔离的虚拟机,作为不受信任的 Python 和 JavaScript 代码执行的安全沙箱,效果显著,具备 CPU/内存限制、网络隔离和文件系统控制等功能。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/08/20 00:00

# 研究:smolmachines / smolvm 作为受信度低 Python 与 JavaScript 的沙箱环境 来源:https://simonwillison.net/2026/Aug/19/smolmachines-untrusted-sandbox/ 研究项目 (https://simonwillison.net/elsewhere/research/) —— smolmachines / smolvm 作为受信度低 Python 与 JavaScript 的沙箱环境 (https://github.com/simonw/research/tree/main/smolmachines-untrusted-sandbox#readme) —— 测试 smolvm 1.8.3 表明,其非常适合通过硬件隔离虚拟机(而非共享内核容器)来构建安全沙箱,用于执行不受信任的 Python 和 JavaScript 数据转换任务。离线本地镜像、无网络执行、CPU/内存限制、客户机强制超时、存储配额、只读输入挂载、可写输出挂载以及 `--unprivileged` 参数均按预期工作,冷启动时间约 0.6-1.5 秒,热执行时间约 50 毫秒。 我在 Claude Code for web 中部署的 Claude Fable 5 执行了以下研究任务: > `对 https://smolmachines.com 进行严格测试,将其作为快速安全的沙箱环境。探究如何利用该平台运行不受信任的 Python 与 JavaScript 代码,同时限制其 RAM 与 CPU 占用(防范 "while true" 无限循环),禁止网络访问,并仅允许访问指定文件系统` > `目标是通过该平台执行用户提交的任务,例如数据转换任务` 系统很快遇到一个问题:Claude Code for web 环境无法运行 smol machines (https://smolmachines.com/)。引用其生成的笔记 (https://github.com/simonw/research/blob/5e6861e54441472d194de96b49b901fd99ebc153/smolmachines-untrusted-sandbox/notes.md#environment-check): > - 当前 Claude Code 容器环境:Linux 6.18.5-fc-v20(自身即为 Firecracker 客户机),4 vCPU,15GB RAM。**无 /dev/kvm,无 vmx/svm CPU 标志**→ 不支持嵌套虚拟化。- `smolvm machine run` 如预期失败:"kvm not available"。- 备选方案 B:GitHub Actions ubuntu 运行器确实暴露 /dev/kvm → 通过该分支的临时工作流执行完整测试套件,收集日志,并在最终提交中移除工作流。 而这正是它所执行的备选方案 (https://github.com/simonw/research/blob/5e6861e54441472d194de96b49b901fd99ebc153/.github/workflows/smolvm-sandbox-test.yml)——在 GitHub Actions 运行器中直接安装 smolvm 并执行这些测试 (https://github.com/simonw/research/blob/5e6861e54441472d194de96b49b901fd99ebc153/smolmachines-untrusted-sandbox/run-tests.sh),针对该分支进行验证。 这一方案巧妙解决了 Claude Code for web 环境的限制。再次体现了 Fable 积极主动、持之以恒的特性 (https://simonwillison.net/2026/Jun/11/fable-is-relentlessly-proactive/)。

相似文章

使用crosvm创建开发沙箱

Lobsters Hottest

关于使用crosvm创建隔离开发沙箱的指南,通过在虚拟机中运行开发工具和测试来应对软件供应链风险。

mvm - 一个快速的 Go 虚拟机

Lobsters Hottest

mvm 是一个快速、可移植的 Go 虚拟机,支持直接从源码运行 Go 程序、嵌入 Go 解释器,并包含 REPL、调试器和标准库。