Microsoft lanza MXC, un sistema de ejecución de código en sandbox con aislamiento por capas
MXC - a sandboxed code execution system
MXC es un SDK de Microsoft para ejecutar código no confiable —salida de modelos, plugins y herramientas— en Windows, Linux y macOS. Ofrece múltiples backends de contención, desde sandboxes de procesos nativos hasta microVMs, con políticas de filesystem, red y UI, y SDKs para Rust, .NET y Node. Incluye modos de diagnóstico y auditoría para ajustar las reglas de acceso.
MXC es un sistema de ejecución de código en sandbox para ejecutar código no confiable (salida de modelos, plugins y herramientas) en Windows, Linux y macOS.
- dannyw
Esto en realidad se ve bastante decente. Claro, podrías considerarlo un frontend/SDK para bubblewrap/seatbelt/processcontainer; pero configurarlos de manera consistente está lejos de ser trivial; y hacerlo a mano es una idea realmente mala (hablo por experiencia).
Me gusta el modo 'learning' para averiguar qué permisos/configuración necesita un runtime, la licencia MIT, las divulgaciones claras de telemetría opcional, y una documentación algo ligera pero aún legible.
Independientemente de tus opiniones sobre Microsoft, esto parece bastante útil; cumple un propósito claro, y a simple vista, parece un proyecto de alta calidad aunque sea solo la primera versión.
- epage
He estado mirando el sandboxing, tanto de bajo nivel como de alto nivel como este.
La API de su mxc-sdk de Rust se ve bien, pero
- su "sdk" tiene binarios y el script de compilación tiene lógica para ellos
- sus scripts de compilación hacen trabajo exclusivo de Windows en todas las plataformas
- no poner algunos de los backends detrás de features causa más trabajo en el script de compilación (y ese trabajo se romperá en futuras versiones de Cargo)
- al menos parte del trabajo restante del script de compilación no necesita ser un script de compilación
- parece bastante pesado en dependencias
- neobrain
¿Alguna de estas soluciones de sandboxing tiene un componente dinámico que te permita otorgar permisos, comenzando con un sandbox mínimo y agregando permisos de forma asíncrona a medida que se vuelven necesarios? Los harness intentan hacer esto al acceder a carpetas que no son del proyecto, pero no siempre se aplica estrictamente y generalmente no es revocable. Los harness también bloquean la ejecución del agente hasta que se toma una decisión, lo que requiere monitoreo constante para asegurar que el progreso pueda ocurrir cuando el agente podría proceder fácilmente con un método alternativo de inmediato.
Me gusta la idea de un sandbox mínimo que proteja contra un `rm -rf` accidental y contra la fuga de datos personales, pero tal configuración a menudo se interpone en el camino de la tarea específica a realizar. Idealmente, el sandbox podría agregar los accesos bloqueados y luego exponerlos en un panel TUI externo, donde pueda habilitar el acceso (sin bloquear ningún agente en ejecución, ya que eso es propenso a la fatiga de "presionar okay").
¿Existe algo cercano a esto ya?
- eminence32
Un poco fuera de tema, tal vez, pero he tenido mucha suerte con wasmtime y wasm32-wasip3 para escribir plugins en sandbox. Las herramientas son bastante agradables cuando escribes plugins en rust, pero no sé cómo se ve para otros lenguajes en este momento.
wasip3 aún no es estable, pero tiene muchos cambios agradables (en comparación con wasip2) para integrarse con código asíncrono
- kernc
350,000 SLOC en su mayoría de Rust [1] ... ¡Y los sandboxes upstream ni siquiera están vendored!
Tendría mucha más confianza construyendo sobre algo que pueda captar y entender. [2]