← 返回信息流
GitHub 热榜GitHub Trending · 日·2 小时前

microsoft/mxc:基于策略的分层隔离与沙箱环境

原标题:microsoft/mxc
Rust456 stars+57 今日

速览

该项目通过分层架构实现细粒度的资源隔离与进程控制,确保恶意或不可信代码在受限环境中运行而不影响宿主机。适用于需要高安全性隔离的场景,如浏览器沙箱、恶意软件分析或可信执行环境。

AI 深度解读

这是什么

Microsoft MXC (Microsoft Execution Containers) 是一个由微软开源的沙箱化代码执行系统,主要使用 Rust 编写。该项目旨在为运行不受信任的代码(如模型输出、插件、工具)提供一个安全、跨平台的执行环境。

MXC 的核心价值在于它通过统一的 JSON 配置架构TypeScript SDK (@microsoft/mxc-sdk),屏蔽了底层多种隔离后端(Containment Backends)的差异。这些后端涵盖了从操作系统原生的进程沙箱到完整的虚拟机(VM),支持 WindowsLinuxmacOS 三大主流平台。

注意:该项目目前处于早期预览阶段(Early Preview),底层沙箱策略仍在持续开发中,部分生成的策略可能过于宽松,目前不应将其视为严格的安全边界。

解决的问题

在现代 AI 应用和软件架构中,执行不可信代码已成为常态,但也带来了显著的安全风险:

  1. 不可信代码执行风险:大语言模型(LLM)生成的代码、第三方插件或用户提供的工具脚本可能存在恶意行为或漏洞。直接在宿主环境中运行这些代码可能导致数据泄露、系统崩溃或横向移动攻击。
  2. 跨平台隔离复杂性:开发者需要在不同操作系统上实现代码隔离,但各平台的原生隔离技术(如 Windows Sandbox、Linux LXC/Bubblewrap、macOS Seatbelt)差异巨大,维护成本高且难以统一策略。
  3. 沙箱生命周期管理繁琐:传统的沙箱使用往往涉及复杂的配置、启动、执行、清理流程。MXC 提供了标准化的状态感知生命周期(State-aware Lifecycle),简化了从预置(Provision)到销毁(Deprovision)的全过程管理。
  4. 策略配置碎片化:不同后端对文件、网络、UI 的权限控制方式各异。MXC 通过版本化的 JSON Schema 统一了执行参数和安全策略的定义方式。

核心功能

1. 多后端隔离支持 (Multiple Containment Backends)

MXC 抽象了多种底层隔离技术,开发者可根据需求选择:

  • 进程级沙箱ProcessContainer
  • Linux 专用LXCBubblewrap
  • Windows 专用Windows SandboxWSLC (Windows Subsystem for Linux Containers)、IsolationSession
  • macOS 专用Seatbelt
  • 轻量级/实验性MicroVM (基于 NanVix)、Hyperlight

2. 策略驱动的安全控制 (Policy-driven Sandboxing)

通过 JSON 配置精细控制沙箱行为:

  • 文件系统策略:定义只读路径 (readonlyPaths) 和读写路径 (readwritePaths)。
  • 网络策略:支持代理设置,允许/阻止出站连接,以及主机过滤(注:Windows 上网络策略尚不完全支持)。
  • UI 策略:控制剪贴板、显示和 GUI 访问权限。

3. 状态感知生命周期 (State-aware Lifecycle)

提供多步骤的沙箱生命周期管理,适用于需要长期运行的会话型沙箱: provision (预置) → start (启动) → exec (执行) → stop (停止) → deprovision (销毁)

4. 统一 SDK 与 CLI

  • TypeScript SDK:提供 @microsoft/mxc-sdk npm 包,支持一次性执行 API 和状态感知 API。
  • CLI 工具:提供 wxc-exec (Windows)、lxc-exec (Linux)、mxc-exec-mac (macOS) 命令行工具,支持直接传入 JSON 配置或 Base64 编码的配置进行执行。

5. 诊断与调试

  • 支持详细的调试日志。
  • Windows 平台支持 ETW (Event Tracing for Windows) 用于故障排查。

亮点 / 与同类相比

  1. 真正的跨平台统一抽象: 大多数沙箱工具仅专注于单一平台(如仅 Linux 的 Docker 或仅 Windows 的 Sandbox)。MXC 最大的亮点在于用一套 JSON Schema 和 SDK 覆盖了 Windows、Linux 和 macOS,并自动映射到平台最合适的后端(例如在 Linux 上默认使用 Bubblewrap 或 LXC,在 Windows 上使用 Windows Sandbox)。

  2. Rust 编写的高性能与安全性: 核心组件使用 Rust 开发,利用其内存安全性和零成本抽象特性,减少了沙箱本身可能引入的安全漏洞。Rust 工具链版本锁定在 1.93,确保构建一致性。

  3. 灵活的隔离粒度: 从轻量级的进程隔离(ProcessContainer)到接近原生 VM 性能的微虚拟机(MicroVM / Hyperlight),MXC 提供了丰富的选择。特别是 HyperlightMicroVM 的支持,使得在资源受限环境下也能实现高强度的隔离。

  4. 与 AI 工作流深度集成: 项目明确提到针对“模型输出”和“插件”的执行优化。其 SDK 提供了 getAvailableToolsPolicygetTemporaryFilesPolicy 等辅助函数,方便 AI Agent 快速生成符合安全规范的执行配置。

  5. 实验性后端支持: 除了稳定的后端,MXC 还积极集成前沿技术,如 NanVix 微虚拟机和 Hyperlight,为未来更细粒度的隔离提供探索空间。

适合谁用 / 上手

适合谁用

  • AI 应用开发者:需要安全执行 LLM 生成的代码(Code Interpreter 功能)或运行不受信任的 AI Agent 插件。
  • SaaS 平台工程师:需要为多租户用户提供代码执行环境(如在线 IDE、代码评测系统),且用户群体分布在多种操作系统上。
  • 安全研究人员:希望研究不同操作系统下的沙箱逃逸与防御机制(需注意当前版本策略可能过于宽松,仅用于研究)。
  • 插件/工具链开发者:需要一种标准化的方式来隔离和运行第三方工具。

如何上手

1. 环境准备

  • Rust 工具链:版本锁定为 1.93(通过 src/rust-toolchain.toml 自动选择)。
  • Node.js:≥ 18。
  • npm:用于构建 SDK 和 CLI。
  • 平台特定依赖
    • Linux:需安装 bwrap (Bubblewrap) 或 lxc 工具集。
    • Windows/macOS:需启用实验性后端支持。

2. 构建项目

# 克隆仓库后,进入项目目录

# 构建 Rust 二进制文件 (以 Linux 为例)
cargo build --release -p lxc

# 构建 TypeScript SDK
cd sdk/
npm install && npm run build

3. 快速使用 CLI

创建一个 config.json 定义执行策略,然后运行:

# Linux
./lxc-exec config.json

# Windows
wxc-exec.exe --debug config.json

# macOS (需实验模式)
./mxc-exec-mac --experimental config.json

4. 使用 TypeScript SDK

npm install @microsoft/mxc-sdk
import { spawnSandboxFromConfig, createConfigFromPolicy } from '@microsoft/mxc-sdk';

// 1. 获取默认策略
const tools = getAvailableToolsPolicy(process.env);
const temp = getTemporaryFilesPolicy();

// 2. 创建配置
const config = createConfigFromPolicy({
  version: '0.6.0-alpha',
  filesystem: {
    readonlyPaths: tools.readonlyPaths,
    readwritePaths: temp.readwritePaths,
  },
  network: { allowOutbound: false },
  timeoutMs: 30_000,
});

// 3. 设置要执行的命令
config.process!.commandLine = 'python -
查看原文 →github.com