MXC - 一个沙箱化代码执行系统

Hacker News Top 工具

摘要

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 / ARM64processcontainerwindows_sandbox*、wslc、microvm*、hyperlight*、isolation_sessionWindows 操作系统版本支持
Linux x64 / ARM64bubblewraplxc、microvm、hyperlight-
macOS ARM64 / x64seatbelt--

* 这些后端目前处于实验性阶段。

如何使用 MXC?

通过包管理器安装 SDK,无需克隆此仓库。

SDK包
Rusthttps://crates.io/crates/mxc-sdk
.NEThttps://www.nuget.org/packages/Microsoft.Mxc.Sdk
Nodehttps://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 版

Hacker News Top

Microsoft 通用发布了 Microsoft Execution Containers (MXC) 1.0.0,这是一个策略驱动的执行容器层,用于在 Windows 上对 AI 代理的文件、网络和应用访问进行运行时隔离与管控,防止代理越权操作。

WSL 容器、适用于 Windows 的 Coreutils 和代理

Lobsters Hottest

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 内核,而是将…

X AI KOLs Timeline

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.