Microsoft Execution Container (MXC) 概要

Microsoft Execution Container (MXC) は、信頼されていないコードをサンドボックス化するための統一された抽象化を提供します

Microsoft Execution Container (MXC) は、Windows、Linux、macOS 上で信頼されていないワークロード(具体的にはモデル出力、プラグイン、ツール)を実行するために設計された、サンドボックス化されたコード実行システムです。これはアプリケーションに直接統合される SDK 依存関係として機能し、開発者が統一された封じ込めモデルと Rust、.NET、Node.js 向けの型付き SDK を使用して、分離された環境内でワークロードを起動できるようにします。

ポリシー駆動の封じ込めモデル

MXC は JSON ベースの構成を使用して、セキュリティポリシーとコンテナ作成リクエストを定義します。これにより、開発者は基盤となるプラットフォーム固有のサンドボックス実装を管理することなく、コンテナタイプ、封じ込めルール、ワークロードコマンドを指定できます。

セキュリティポリシーの制御

MXC は次の領域に対してきめ細かい制御を提供します:

  • ファイルシステムポリシー:読み取り専用、読み取り/書き込み、拒否されたパスリストを定義します。
  • ネットワークポリシー:プロキシサポート、送信制御、ホストフィルタリングを含みます(ただし、機能はバックエンドによって異なります)。
  • UI ポリシー:クリップボード、ディスプレイ、GUI 要素へのアクセスを制御します。

ライフサイクル管理

MXC はコンテナの状態を認識したライフサイクルをサポートし、永続コンテナのプロビジョニング、開始、実行、停止、およびプロビジョニング解除を可能にします。

クロスプラットフォームのバックエンドサポート

MXC は複数の封じ込めバックエンドを抽象化し、ホストオペレーティングシステムに基づいて最も適切なものを選択します。

ランタイムプラットフォーム デフォルトバックエンド その他のバックエンド
Windows 11 processcontainer windows_sandbox、wslc、microvm、hyperlight、isolation_session
Linux bubblewrap lxc、microvm、hyperlight
macOS seatbelt なし

注:windows_sandbox、microvm、hyperlight は現在、実験的としてマークされています。

開発者ツールと診断

制限的なポリシーの作成を容易にするために、MXC にはアクセス拒否の失敗を特定して解決するツールが含まれています:

  • デバッグコンソールモード:ネイティブエグゼキュータで --debug フラグを使用すると、トラブルシューティング用の診断出力が提供されます。
  • 監査モード:--audit フラグ(サポートされている Windows リリースで利用可能)を使用すると、開発者は観察されたアクセスを記録して、信頼されたツールに必要な権限のみを付与する ProcessContainer ポリシーを再構築できます。警告: 監査モードはすべてのサンドボックスセキュリティを無効にするため、信頼されていないコードの実行に使用してはなりません。

コミュニティの洞察と技術的批評

MXC のリリース後、Hacker News での技術的な議論では、システムのいくつかの長所と短所が強調されました。

認識された有用性

一部の開発者は、MXC が Bubblewrap や Seatbelt などの既存ツールのフロントエンドとして機能する一方で、その価値は一貫した SDK とポリシー作成のための「学習」モードにあると指摘しました。あるユーザーは、Codex が Windows で既に MXC を利用していると述べました。

技術的な懸念

批評家は、実装とセキュリティに関していくつかの点を提起しました:

  • プラットフォームのパリティ:macOS のサポートは著しく制限されています。具体的には、macOS バックエンドにはきめ細かいネットワーキング(ホスト名/IP/CIDR フィルタリング)がありません。
  • コードベースの複雑さ:一部のユーザーは、Rust のソースコード行数が多いこと(約 350,000 SLOC)と、上流のサンドボックスがベンダリングされていないことを指摘し、システムの監査可能性について懸念を表明しました。
  • セキュリティ実装:一部の貢献者はサンドボックスエスケープを発見したと主張し、Bubblewrap 統合におけるケーパビリティドロップと setuid 処理が誤って実装されていると主張しました。
  • ビルドシステム:ビルドスクリプトがすべてのプラットフォームで Windows 専用の作業を実行し、特定のバイナリに大きく依存しているという点で批判がなされました。

代替アプローチ

議論の参加者は、WASI P3 を備えた Wasmtime などの WebAssembly(Wasm)ランタイムが、OS レベルのサンドボックス化と比較して、本質的なプラットフォーム独立性とより強力な分離特性により、サンドボックス化されたプラグインに対してより効率的である可能性があると示唆しました。

Sources

関連

  • Dispatch
  • プロジェクト
  • プロジェクト
  • Dispatch
  • プロジェクト