Microsoft выпустила MXC — песочницу для запуска недоверенного кода

MXC - a sandboxed code execution system

Microsoft представила MXC (Microsoft eXecution Container) — кроссплатформенную систему изоляции для выполнения недоверенного кода: вывода моделей, плагинов и инструментов. Работает на Windows, Linux и macOS, поддерживает несколько бэкендов — от ProcessContainer и Bubblewrap до MicroVM и Hyperlight. Политики задают доступ к файловой системе, сети и UI. Есть SDK для Rust, .NET и Node, а также режим аудита для отладки запретов доступа.

Audit mode помогает автору политики найти отказы в доступе и восстановить политику ProcessContainer, которая предоставляет файлы и возможности, действительно необходимые доверенному инструменту.
  1. dannyw

    Выглядит на самом деле вполне прилично. Конечно, можно считать это фронтендом/SDK для bubblewrap/seatbelt/processcontainer; но настроить их согласованно — далеко не тривиально; а писать вручную — действительно плохая идея (говорю по опыту).

    Мне нравится режим «обучения» для выяснения, какие права/конфигурация нужны среде выполнения, лицензия MIT, чёткие необязательные уведомления о телеметрии и довольно лёгкая, но всё ещё читаемая документация.

    Независимо от вашего отношения к Microsoft, это выглядит довольно полезным; служит ясной цели и, судя по быстрому взгляду, похоже на высококачественный проект, даже если это всего лишь первая версия.

  2. epage

    Присматривался к песочницам, как низкоуровневым, так и более высокоуровневым, вроде этой.

    API для их Rust mxc-sdk выглядит неплохо, но

    - в их «sdk» есть бинарники, и в сборочном скрипте есть логика для них

    - их сборочные скрипты выполняют работу, эксклюзивную для Windows, на всех платформах

    - то, что некоторые бэкенды не спрятаны за фичами, приводит к большей работе сборочного скрипта (и эта работа сломается в будущих версиях Cargo)

    - по крайней мере, часть оставшейся работы сборочного скрипта не обязана быть сборочным скриптом

    - похоже, что он довольно тяжёл по зависимостям

  3. neobrain

    Есть ли у каких-либо из этих решений для песочниц динамический компонент, позволяющий выдавать разрешения, начиная с минимальной песочницы и асинхронно добавляя разрешения по мере необходимости? Инструменты пытаются делать это при доступе к папкам вне проекта, но это не всегда строго соблюдается и, как правило, не отзывается. Инструменты также блокируют выполнение агента до принятия решения, что требует постоянного мониторинга, чтобы гарантировать прогресс, когда агент мог бы легко сразу пойти альтернативным путём.

    Мне нравится идея минимальной песочницы, которая защищает от случайного `rm -rf` и от утечки личных данных, но такая настройка часто мешает выполнению конкретной задачи. В идеале песочница могла бы агрегировать заблокированные доступы и затем отображать их во внешней TUI-панели, где я мог бы включить доступ (не блокируя при этом никакого работающего агента, поскольку это чревато усталостью от «нажать ОК»).

    Существует ли уже что-то близкое к этому?

  4. eminence32

    Немного не по теме, может быть, но мне очень везёт с wasmtime и wasm32-wasip3 для написания плагинов в песочнице. Инструментарий довольно приятный, когда пишешь плагины на Rust, но я не знаю, как это выглядит для других языков на данный момент.

    wasip3 ещё не стабилен, но в нём много приятных изменений (по сравнению с wasip2) для интеграции с асинхронным кодом

  5. kernc

    350 000 в основном строк кода на Rust [1] ... И вышестоящие песочницы даже не вендорены!

    Я был бы гораздо увереннее, строя на чём-то, что могу охватить и понять. [2]

    [1]: https://ghloc.dev/microsoft/mxc

    [2]: https://github.com/sandbox-utils/sandbox-run

Ещё за этот день

2026-10-09