El sandbox de OpenShell
El Módulo 3 proporcionó a OpenClaw contexto persistente y activadores sin supervisión. Las reglas del prompt y las comprobaciones del entorno de ejecución aún influyen en lo que intenta hacer; OpenShell sitúa la decisión final de permitir o denegar en un sandbox que el agente no puede reescribir.
En esta página enviarás comandos reales a tu launchable, leerás cada veredicto y lo relacionarás con la regla que lo produjo. Después examinarás un segundo límite: el plano de control del operador situado por encima del sandbox.
- OpenClaw es el framework del agente. Decide qué herramienta utilizar y qué acción intentar.
- OpenShell es el runtime de seguridad. Limita los archivos, destinos de red y operaciones del sistema operativo disponibles para esa acción.
- NemoClaw es el stack de referencia que empaqueta OpenClaw y OpenShell con comandos de ciclo de vida, preajustes de políticas, guía de inferencia y configuraciones de despliegue predeterminadas.
OpenShell no depende de un agente específico. El mismo límite puede contener OpenClaw, Hermes, LangChain deepagents u otro proceso que necesite contención a nivel del sistema operativo.
Dónde interviene cada capa de defensa
Supongamos que un contenido no confiable le ordena a un agente leer una credencial y enviarla fuera del sistema. Tres capas distintas tienen la oportunidad de detener esa acción, y cada una responde a una pregunta diferente:
- El prompt orienta la intención. Una regla como «no reveles credenciales» describe el comportamiento esperado. Aun así, el contenido recuperado malicioso, la salida de una herramienta u otro agente pueden engañar al modelo. Esta capa influye en la decisión, pero el agente conserva la autoridad que el entorno de ejecución le haya otorgado.
- El entorno de ejecución valida la solicitud. OpenClaw o Hermes pueden rechazar una forma de shell no admitida, una llamada a herramienta prohibida o un argumento con formato incorrecto antes de que la solicitud llegue al sistema operativo. Esa comprobación determinista resulta útil, pero sigue siendo lógica de aplicación que puede estar mal configurada, desactualizada o comprometida.
- El sandbox limita el resultado. OpenShell solo concede al proceso la autoridad permitida por la política. Si fallan tanto el prompt como el entorno de ejecución, el sistema operativo aún puede denegar una operación de archivo, red o proceso antes de que se complete.
El trabajo práctico de esta página mide esa capa final. Intentarás una acción, observarás el veredicto de permitir o denegar, y conectarás ese veredicto con el mecanismo que lo ejecutó.
Cómo responden los mecanismos del sandbox a preguntas verificables
Este launchable combina cuatro mecanismos del sistema operativo. Cada uno responde a una pregunta que puede comprobar, y juntos aplican la política en más de un límite. Lee la política activa más adelante en la página antes de considerar universal cualquier garantía.
1 · ¿Dónde puede conectarse este proceso?
Un espacio de nombres de red (netns) proporciona al agente una red aislada. El acceso saliente comienza cerrado. Un proxy HTTP CONNECT ofrece la única ruta de salida. Open Policy Agent (OPA) compara con la política el binario solicitante, el host, el puerto y la ruta. Quien edite esa política decide qué conexiones están permitidas.
2 · ¿Qué archivos puede alcanzar?
Landlock es un módulo de seguridad de Linux que restringe el acceso futuro al sistema de archivos. Aquí limita las nuevas operaciones de archivos a las rutas otorgadas por la política. Es una aplicación estricta, pero el modo de compatibilidad, OverlayFS y los descriptores abiertos antes de la restricción siguen siendo importantes. Revisa la política en vivo y prueba la ruta que pretendes exponer.
3 · ¿Qué operaciones del núcleo puede solicitar?
Una llamada al sistema, o syscall, pide al kernel de Linux que realice una operación. seccomp filtra las syscalls; su filtro BPF compara cada solicitud con una lista de permitidos. Una llamada denegada devuelve EPERM, «operación no permitida», antes de ejecutar la operación. Este launchable excluye primitivas peligrosas como ptrace, mount y setuid.
4 · ¿Con qué autoridad comienza?
El agente se ejecuta como un proceso que no es root mediante el usuario sin privilegios sandbox. Por tanto, un exploit que tenga éxito comienza con menos autoridad. Esa autoridad inicial menor reduce el alcance del impacto, pero no demuestra que sea imposible escalar privilegios. El host, la configuración del contenedor y la política de syscalls siguen formando parte del límite de seguridad.
Da forma primero al runtime
Antes de que controles el sandbox tú mismo, asegúrate de que el agente esté en un estado óptimo recuperando el entorno de ejecución si está degradado; así, cada celda en vivo de abajo tendrá un agente funcional con el que comunicarse.
El diagrama traza lo que ocurre en cada llamada a una herramienta, y las celdas siguientes permiten realizar esas llamadas y leer la respuesta del kernel.
El mismo runtime de Kickstart. Cada celda controla al agente OpenClaw conectado en esa página.
Observa cómo decide el kernel
Los cuatro mecanismos anteriores se están ejecutando en el entorno de pruebas, por lo que puedes hacer que cada uno decida por sí mismo en lugar de confiar ciegamente en el diagrama.
La celda siguiente ejecuta un comando a la vez. Planteas una pregunta, la celda ejecuta el comando correspondiente en el sandbox y devuelve tres datos:
- el veredicto que devolvió el kernel,
- el mecanismo que lo decidió
- y la línea de evidencia que sustenta la decisión.
El catálogo inicial recorre las preguntas que plantearías sobre un entorno como este, desde el acceso abierto a Internet hasta la modificación de la personalidad del agente. Puedes editar cualquier comando o añadir tu propia sonda.
Profundo · Trayectoria¿Ejecutar una trayectoria de varios comandos en el sandbox?
Avanza: una trayectoria completa
Un agente real encadena varios comandos para alcanzar un objetivo que ninguna celda aislada intenta por sí sola. Describe uno en el siguiente campo y el agente planificará toda la secuencia de comandos que el shell ejecutaría para alcanzarlo antes de ejecutar cada comando en el sandbox y mostrar los resultados. Observa el plan y el punto donde el kernel impide continuar porque la contención detiene la trayectoria.
La misma regla de los comandos aislados sigue vigente. Un secreto que se imprime en cualquier paso ya quedó expuesto, aunque se deniegue un intento posterior de egress. Después de observarlo, edita el objetivo o el prompt de planificación y prueba otra trayectoria.
Lee la política activa del launchable y visualízala como un mapa
Los veredictos observados proceden de un archivo de políticas. Léelo desde el launchable antes de confiar en sus garantías. La celda siguiente llama a helpers.policyGet(), que ejecuta openshell policy get mediante la terminal del operador y analiza el resultado.
La página ahora realiza los cálculos a partir de la política de tu máquina en lugar de usar un ejemplo predefinido. La celda mantiene su código en un menú desplegable, donde puedes inspeccionar la llamada exacta sin convertirla en la lección principal.
Con tu política en mano, la celda la dibuja como un mapa interactivo a continuación, donde cada nodo de la derecha es un endpoint nombrado por tu política junto con algunos que ninguna política permite. Cambia el binario solicitante y observa cómo cambian las conexiones. El kernel decide según el binario, no solo el host: integrate.api.nvidia.com puede estar disponible para openclaw y denegado para curl.
Haz clic en cualquier objetivo para abrir la regla que lo gobierna, los binarios que permite y la justificación del veredicto. Ver el código fuente de la política muestra el mismo YAML que obtuviste en el paso anterior.
Demuestra dónde se mantiene el sandbox y confírmalo en vivo
No tienes que aceptar una garantía de robustez sin pruebas. openshell policy prove comprueba una propiedad de la política o devuelve un contraejemplo, mientras el proxy toma una decisión determinista de permitir o denegar en cada conexión. La celda calcula esa misma decisión en el navegador desde la política real del launchable, luego ejecuta la acción en el sandbox activo y comprueba que el veredicto del kernel coincide con la predicción.
Este ejercicio pone a prueba la identidad de un binario. La política concede egress por programa, no por host, así que el proxy comprueba qué binario abrió la conexión antes de evaluar el destino. Por ello, openclaw puede alcanzar el endpoint de inferencia mientras se deniega un curl al mismo destino. Elige una acción para ver de inmediato el veredicto estático y su confirmación activa; la acción del endpoint de inferencia muestra con mayor claridad este cambio de resultado para un mismo host.
openshell sandbox exec. Mantén el launchable abierto en otra pestaña para conservar la sesión de acceso.Por encima del sandbox: el plano de control
Hasta ahora has medido lo que puede hacer el agente. La pregunta más amplia es quién puede reconfigurarlo a través del plano situado por encima del sandbox. La forma de acceder a ese plano depende del sistema, y en esta máquina dicho plano es un único gateway al que accedes con el mismo OPENCLAW_GATEWAY_TOKEN del Módulo 3, con alcance operator.admin. Ninguna de esas operaciones pasa por el sandbox del agente.
Ese token permite:
agents.files.gety agents.files.set leen y establecen directamente archivos de personalidad, como SOUL.md y AGENTS.md.cron.addycron.listcontrolan tareas que pueden activarse después de terminar la conversación.config.getyconfig.patchcontrolan toda la configuración del agente: el modelo, las herramientas e inclusotoolSearch.chat.sendenvía un mensaje a mitad de la tarea que redirige al agente mientras sigue pareciendo que está trabajando en tu solicitud original.sessions.resetydeleteborran memoria;gateway.restart.requestreinicia el runtime.
Encadenadas, esas llamadas se convierten en una ruta de escalada de privilegios. Un atacante que pueda leer la personalidad puede implantar una tarea cron que se active mucho después de que termine la conversación y parchear la configuración en ejecución para ampliar lo que el agente tiene permitido hacer. Un turno a mitad de la tarea lo redirige, y un reinicio del runtime hace que la nueva configuración surta efecto.
El sandbox gobierna las syscalls del agente, pero estas operaciones pertenecen al plano de control y no son llamadas al sistema iniciadas por el agente. La solidez del sandbox y el alcance administrativo son propiedades distintas. Un equipo puede restringir el primero y dejar abierto el segundo; evalúa ambos límites.
Enumera ese alcance en el launchable. La celda solo realiza lecturas y no cambia la configuración.
Lo que el sandbox no puede capturar
Todo lo visto hasta ahora eran las propias acciones del agente, y el kernel mantuvo la línea de defensa. Sin embargo, dos tipos distintos de daños aún logran evadirlo. El primero es el plano de control que acabas de enumerar, que reconfigura al agente desde arriba del punto de control. El segundo utiliza un conjunto autorizado: cada acción aislada está permitida, pero su composición causa el daño.
La entrada no confiable, el acceso a datos privados y la comunicación externa forman la tríada letal.
- Datos privados son información que el agente puede leer, pero no debe divulgar: archivos del workspace, correos electrónicos, tokens, memoria o registros internos.
- Entrada no confiable es contenido no escrito por el operador que el modelo puede interpretar como instrucción: una página web, un issue, un documento, el resultado de una herramienta o la respuesta de otro agente.
- Comunicación externa es cualquier ruta capaz de transportar bytes al exterior: HTTP, pull request, chat, línea de log, carga de imagen o enlace que abre el usuario.
El riesgo surge de la composición. La política puede autorizar correctamente un endpoint, pero la conexión sigue siendo bidireccional: la solicitud sale y la respuesta regresa como una entrada nueva. El contenido hostil puede dirigir al modelo para que lea datos privados y los envíe mediante un canal permitido. Un control situado por encima del sandbox debe interrumpir al menos una de esas tres condiciones.
Estas brechas existen en una configuración estándar, y las políticas de red y del sistema de archivos no pueden resolverlas por sí solas:
- Manipulación de la personalidad. SOUL.md pertenece al agente y se puede escribir; un agente confundido o comprometido puede reescribir su propia identidad. El propietario puede revertir
chmod. Unchattr +iaplicado por root fuera del sandbox crea un límite más sólido. - Plano de control con privilegios de identidad. Quien posea
OPENCLAW_GATEWAY_TOKENpuede leer la personalidad, crear una tarea cron e introducir un turno por encima del punto de aplicación del kernel. - Inyección mediante entradas. Bloquear egress por patrones evita algunas fugas, pero no elimina las instrucciones maliciosas que llegan por un canal autorizado. Esta es la inyección indirecta de prompts descrita por Greshake et al. Mitigarla exige procedencia, clasificación de entradas y evaluación del comportamiento.
- Exfiltración por canal permitido. Un endpoint autorizado todavía puede transportar datos indebidos. La política prueba que el canal está permitido; no determina si el contenido es benigno.
- Intención oculta. El gateway reenvía acciones sin exponer el razonamiento del modelo. Un agente comprometido puede ejecutar un flujo de trabajo dañino compuesto por acciones que, aisladas, parecen válidas.
- Preservación entre pares. En una flota, el contexto social puede alterar el criterio de un agente al evaluar o detener a otro. Las pruebas de regresión del comportamiento deben detectar ese cambio.
Elige el control por el modo de fallo
Un sandbox limita lo que puede alcanzar un proceso comprometido. La aplicación y las prácticas operativas aún deben tomar decisiones cuyo significado resulta invisible para el kernel.
| Modo de fallo | Lo que el sandbox contribuye | Control aún necesario |
|---|---|---|
| Secuestro de objetivos o inyección de prompts | Limita los archivos, procesos y destinos alcanzables después de desviar el modelo | Procedencia de entradas, aprobación de acciones con consecuencias y evaluación del comportamiento |
| Uso indebido de herramientas | Restringe el sistema operativo y el conjunto de accesos de red donde se ejecuta la herramienta | Autorización por herramienta, validación de argumentos, límites de frecuencia y confirmación de llamadas irreversibles |
| Abuso de identidad o privilegios | Inicia el proceso sin root y bloquea algunas rutas de escalada | Identidades por carga de trabajo, alcances mínimos, tokens de corta duración, rotación y auditoría |
| Cadena de suministro o ejecución inesperada de código | Reduce los archivos, syscalls y egress disponibles para el código instalado | Dependencias fijadas y verificadas, política de instalación y supervisión de la integridad |
| Envenenamiento de memoria o contexto | Puede proteger archivos específicos cuando la política los establece como solo lectura | Procedencia de escrituras, historial auditable, etiquetas de confianza y restauración a un estado conocido |
Las categorías se corresponden con el OWASP Top 10 para aplicaciones de agentes. Utiliza la tabla para elegir un punto de aplicación de políticas en lugar de pedirle a una sola capa que reconozca cada tipo de daño.
Referencias
- Simon Willison, The lethal trifecta (2025). Define la combinación de acceso a datos privados, contenido no confiable y comunicación externa que representa el diagrama de la tríada letal.
- Greshake et al. (2023) Not what you've signed up for. Trabajo de referencia sobre inyección indirecta de prompts: ataques entregados mediante contenido recuperado o renderizado en el que el modelo confía.
- Saltzer y Schroeder, The Protection of Information in Computer Systems (1975). Trabajo que definió el principio de mínimo privilegio, base de la contención que deniega de forma predeterminada.
- seccomp filter y Landlock. Primitivas del kernel para listas de syscalls permitidas y control de acceso al sistema de archivos, utilizadas por los mecanismos 2 y 3 de
openshell. - Open Policy Agent. Mecanismo de política como datos que evalúa el proxy CONNECT y controla cada conexión de salida.
- NeMo Guardrails. Complemento en la capa de aplicación para la contención en el núcleo; detecta violaciones de política que el núcleo no puede interpretar.
- OWASP Top 10 for Agentic Applications. Taxonomía actual de secuestro de objetivos, uso indebido de herramientas, abuso de identidad, compromiso de la cadena de suministro, ejecución inesperada de código y envenenamiento de memoria.
Lista completa en Para ir más lejos · Referencias.