MXC - 一个沙箱化代码执行系统
摘要
Microsoft 开源了 MXC(Microsoft eXecution Container),一个用于在 Windows、Linux 和 macOS 上沙箱化运行不可信代码(模型输出、插件、工具)的系统,提供多种隔离后端和 Rust/.NET/Node SDK。
查看缓存全文
缓存时间: 2026/10/09 09:21
microsoft/mxc
来源:https://github.com/microsoft/mxc
Microsoft eXecution Container (MXC)
MXC 是一个沙箱化代码执行系统,用于在 Windows、Linux 和 macOS 上运行不受信任的代码(模型输出、插件和工具)。它在统一的容器化模型和类型化 SDK 之下,提供了多种隔离后端,从操作系统原生进程沙箱到完整虚拟机。
特性
- 跨平台:支持 Windows、Linux 和 macOS,并针对各平台提供适当的隔离后端
- 基于 JSON 的配置:带版本管理的容器创建请求和安全策略
- 多种隔离后端:ProcessContainer、Windows Sandbox、LXC、Bubblewrap、Seatbelt、MicroVM (Nanvix)、Hyperlight、IsolationSession 和 WSLC
- 策略驱动的沙箱:
- 文件系统策略:只读、读写和拒绝访问的路径列表
- 网络策略:代理支持、出站控制,以及依赖后端的主机过滤
- UI 策略:剪贴板、显示和 GUI 访问控制
- 状态感知的生命周期:对持久容器进行预配、启动、执行、停止和取消预配
- Rust、.NET 和 Node SDK:提供带版本管理的 API,支持一次性执行和状态感知执行
- 诊断:帮助理解容器中访问被拒绝原因的工具
什么是 MXC?
MXC 是一个 SDK 依赖项,会编译到你的应用中。
flowchart LR
App["你的应用<br/>启动 API"] --> SDK["MXC SDK<br/>Rust / .NET / Node<br/>(进程内)"]
SDK --> Backend["所选后端<br/>(进程内)"]
Backend --> Container["隔离工作负载<br/>ProcessContainer / WSLC / Bubblewrap / ..."]
你的应用需要指定:
- 容器类型
- 容器化规则
- 工作负载命令
MXC 会验证请求、选择后端,并在生成的容器中启动工作负载。
支持哪些容器类型?
MXC 通过各平台适当的容器后端在 Windows、Linux 和 macOS 上运行工作负载。
| 运行平台 | 默认后端 | 其他后端 | 最低宿主操作系统 |
|---|---|---|---|
| Windows 11 x64 / ARM64 | processcontainer | windows_sandbox*、wslc、microvm*、hyperlight*、isolation_session | Windows 操作系统版本支持 |
| Linux x64 / ARM64 | bubblewrap | lxc、microvm、hyperlight | - |
| macOS ARM64 / x64 | seatbelt | - | - |
* 这些后端目前处于实验性阶段。
如何使用 MXC?
通过包管理器安装 SDK,无需克隆此仓库。
| SDK | 包 |
|---|---|
| Rust | https://crates.io/crates/mxc-sdk |
| .NET | https://www.nuget.org/packages/Microsoft.Mxc.Sdk |
| Node | https://www.npmjs.com/package/@microsoft/mxc-sdk |
Node 和 .NET 包包含原生运行时资源。Rust crate 会将 MXC SDK、引擎和所选后端编译到消费方应用中。
非 SDK 使用方式:平台特定的执行器二进制文件(如 wxc-exec.exe)接受由稳定 schema 定义的 JSON 容器创建请求。适用于测试场景,或无法将 SDK 嵌入应用的情况。
运行容器化工作负载
完整的 SDK 示例请参阅 Rust、.NET 和 Node 示例。
Node 示例片段
import { spawn, type ContainerRequest } from '@microsoft/mxc-sdk/v1';
const request: ContainerRequest = {
command: 'node -e "console.log(\'hello from container\')"',
network: { egress: { default: 'deny' } },
timeoutMs: 30_000,
};
const child = await spawn(request);
可运行的示例请参阅流式标准 I/O 示例,API 参考请参阅 SDK API 参考文档。
我的应用在沙箱中无法运行!
在你调整好容器化规则之前,应用在沙箱中运行时可能会遇到访问问题。我们随时提供帮助。
调试控制台模式
原生执行器通常会将标准输入、输出和错误保留给工作负载使用。使用 --debug 查看 MXC 诊断输出:
wxc-exec.exe --debug config.json
完整的开发者参考请参阅 MXC 诊断。
审计模式
警告:
--audit会关闭被分析工作负载的所有沙箱安全机制。切勿使用它来运行不受信任的代码。
审计模式帮助策略编写者找到访问被拒绝的问题,并重建一个 ProcessContainer 策略,授予受信任工具实际需要的文件和能力。
在受支持的 Windows 版本上运行:
wxc-exec.exe --audit policy.json
MXC 会记录观察到的访问行为,并生成策略编写产物。有关安全的拒绝并记录诊断、审计输出和支持的工作流程,请参阅记录访问被拒绝。
遥测
Microsoft 官方构建版本可以向 Microsoft 发送可选的诊断遥测数据。除非单次运行明确选择加入、Windows 用户已明确同意、管理策略允许收集,并且你的应用在容器化工作负载请求中启用了遥测选项,否则遥测默认关闭。管理员可以阻止遥测,但无法代替用户授权同意。
本地开源构建未配置将遥测数据发送到 Microsoft,在非 Windows 平台上遥测功能不会执行任何操作。
有关控制选项和隐私详情,请参阅遥测策略与同意。
从源码构建
在开发 MXC、修改原生运行时,或使用独立执行器二进制文件(而非打包 SDK)时,需要从源码构建。仓库构建会生成平台原生的运行时和执行器,并为 Node SDK 准备原生资源。
构建前置要求:
- Rust(https://rustup.rs/),由
src/rust-toolchain.toml固定为 1.93 版本 - Node.js 24 或更高版本及 npm
- 所选后端要求的平台工具链和前置依赖
构建
Windows
build.bat --all
# 为当前架构进行 Release 构建
Linux
./build.sh --all
# Release 构建
macOS
./build-mac.sh --all
# 为本机架构进行 Release 构建
文档
使用者文档
| 文档 | 仓库位置 | 用途 |
|---|---|---|
| SDK 示例 | samples/ | 可运行的 Rust、.NET 和 Node 场景 |
| SDK API 参考 | docs/api-reference/ | 支持的 V1 操作和类型 |
| 容器生命周期 | docs/container-lifecycle.md | 持久容器生命周期概述 |
| 记录访问被拒绝 | docs/logging-access-denied.md | 诊断被阻止的访问并编写策略 |
| 遥测 | docs/telemetry.md | 同意和管理控制 |
| 后端指南 | docs/backends/ | 平台和后端的前置要求及行为 |
仓库贡献者应先阅读 MXC 开发文档。
贡献
贡献指南请参阅 CONTRIBUTING.md。
许可证
详情请参阅 LICENSE.md。
相似文章
Mxc:Microsoft Execution Containers 1.0.0 版
Microsoft 通用发布了 Microsoft Execution Containers (MXC) 1.0.0,这是一个策略驱动的执行容器层,用于在 Windows 上对 AI 代理的文件、网络和应用访问进行运行时隔离与管控,防止代理越权操作。
@AravSrinivas:虽然沙箱已是标准化商品,但要在生产级流量下提供数百万个沙箱,仍需处理大量细节才能扩…
Perplexity 开源了其沙箱平台 SPACE(智能体代码执行沙箱平台),该平台基于 Firecracker 微虚拟机,为 Perplexity Computer 上运行的所有智能体提供隔离的代码执行环境,支持通过 HTTP API 管理沙箱生命周期。
@gerhart_x: "NVX 是一个超轻量级 micro-VM 沙箱,用于在硬件强制隔离下运行不受信任的工作负载。它基于……"
Microsoft 开源了 NVX,这是一个超轻量级的 micro-VM 沙箱,用于在硬件强制隔离下运行不受信任的工作负载,基于 OpenVMM 构建,支持以 Linux 作为客户机,并兼容 KVM、MSHV 和 Windows Hypervisor Platform。
WSL 容器、适用于 Windows 的 Coreutils 和代理
Microsoft 在 Build 2026 上宣布了面向 Windows 的新开发者功能,包括适用于 Windows 的 Coreutils、WSL 容器、智能终端以及用于安全代理执行的 Microsoft Execution Containers (MXC) SDK。
@QingQ77: 一个用 Rust 和 C 编写的开源项目,通过 JIT 编译技术在 macOS 上直接运行 Linux 容器。 https://github.com/ricccrd/dd 它不需要虚拟机、hypervisor 或 Linux 内核,而是将…
dd is an open-source tool written in Rust and C that runs Linux containers on macOS without a VM by using JIT compilation to translate container instructions and handle syscalls in userspace. It implements the Docker Engine API, supports arm64 and x86-64 Linux images, and offers performance comparable to or better than VM-based solutions.