MicrosoftがMXCを公開、信頼できないコードをWindows・Linux・macOSで安全に実行
MXC - a sandboxed code execution system
Microsoftが、AIの出力やプラグインなど信頼できないコードをサンドボックス内で実行するシステム「MXC」をGitHubで公開した。Windows、Linux、macOSに対応し、ProcessContainerやBubblewrap、Seatbelt、MicroVMなど複数の隔離バックエンドを統一モデルで扱う。ファイルシステムやネットワーク、UIアクセスをポリシーで制御でき、Rust、.NET、Node向けSDKも提供する。
MXCは、信頼できないコード(モデル出力、プラグイン、ツール)をWindows、Linux、macOS上で実行するためのサンドボックス化されたコード実行システムである。
HNでの議論
78- dannyw
これは実際かなりまともそうに見える。確かにbubblewrap/seatbelt/processcontainerのフロントエンド/SDKと見ることもできるが、それらを一貫してセットアップするのは決して簡単ではないし、手でやるのは本当に悪いアイデアだ(経験から言っている)。
ランタイムが必要とするパーミッション/設定を把握するための「学習」モード、MITライセンス、明確で任意のテレメトリ開示、そしてやや軽くてそれでも読めるドキュメントが気に入った。
Microsoftに対する見方はともかく、これはかなり有用そうに見える。明確な目的に貢献しており、ざっと見た限りでは、たとえ最初のバージョンであっても高品質なプロジェクトのように見える。
- epage
サンドボックス化について、低レベルなものも、これのような高レベルなものも見てきた。
彼らのRust mxc-sdkのAPIは良さそうに見えるが、
- 彼らの「sdk」にはバイナリが含まれており、ビルドスクリプトにそれらのためのロジックがある
- ビルドスクリプトが全プラットフォームでWindows専用の処理を行っている
- 一部のバックエンドをfeatureの背後に置かないことで、ビルドスクリプトの作業が増えている(そしてその作業は将来のCargoバージョンで壊れる)
- 少なくとも残りのビルドスクリプト作業の一部はビルドスクリプトである必要がない
- 依存関係がかなり重いように見える
- neobrain
これらのサンドボックス化ソリューションには、最小限のサンドボックスから始めて、必要になった時点で非同期にパーミッションを追加できるような動的コンポーネントを持つものはあるのだろうか?ハーネスはプロジェクト外のフォルダにアクセスする際にこれをやろうとするが、常に厳密に強制されるわけではなく、一般的に取り消しもできない。またハーネスは決定が下されるまでエージェントの実行をブロックするため、エージェントがすぐに代替手段で進められる場合でも進行を保証するために常時監視が必要になる。
偶発的な`rm -rf`や個人データの漏洩から守る最小限のサンドボックスというアイデアは好きだが、そうした設定はしばしば実行すべき特定のタスクの邪魔になる。理想的には、サンドボックスがブロックされたアクセスを集約し、それを外部のTUIダッシュボードに表示して、そこでアクセスを有効化できるようにする(実行中のエージェントをこれでブロックすることなく、それは「OKを押す」疲労を招きやすいから)。
これに近いものは既に存在するのだろうか?
- eminence32
少し的外れかもしれないが、サンドボックス化されたプラグインを書くのにwasmtimeとwasm32-wasip3で大きな成功を収めている。Rustでプラグインを書く場合のツールはかなり良いが、他の言語では今どうなっているのか分からない。
wasip3はまだ安定していないが、非同期コードと統合するための(wasip2と比べて)多くの良い変更がある。
- kernc
ほとんどがRustの35万SLOC[1]……しかも上流のサンドボックスはベンダリングすらされていない!
自分が把握して理解できるものの上に構築する方がずっと自信が持てる。[2]