Lilith Shell

Ejecuta comandos de terminal a través de una interfaz de shell segura utilizando un asistente de IA.

Documentación

Lilith Shell

Servidor MCP experimental que expone la ejecución de comandos de shell local a un asistente de IA.

Estado Actual

Este repositorio debe tratarse como un prototipo, no como un servidor shell seguro.

La implementación actual expone una herramienta MCP, execute_command, que ejecuta una cadena de comando proporcionada por el llamador a través de subprocess.run(..., shell=True). Tiene un tiempo de espera fijo de cinco minutos, captura stdout y stderr, y acepta un directorio de trabajo opcional. Actualmente no implementa los controles de seguridad descritos anteriormente en este README.

Acción de perfil recomendada: archivar o desanclar este repositorio hasta que el modelo de seguridad sea reconstruido y probado.

Advertencia de Seguridad

No ejecutes esto contra un host, cuenta o directorio que contenga credenciales, datos de producción, código fuente privado, claves SSH, tokens de nube u otro material sensible.

Brechas conocidas en el código actual:

  • Sin aplicación de listas de permitidos o denegados de comandos
  • Sin modos estricto, permisivo o de bloqueo
  • Sin aplicación de límites del directorio de trabajo
  • Sin filtrado de entorno
  • Sin saneamiento de salida
  • Sin registro de auditoría
  • Sin selección de shell mediante configuración
  • Sin salida en streaming
  • Sin ruta de ejecución específica para Windows
  • shell=True se usa con entrada de herramienta no confiable

Estas brechas hacen que el proyecto no sea adecuado para uso en producción y sea arriesgado incluso en una estación de trabajo de desarrollo normal.

Lo que funciona hoy

El servidor MCP registra una herramienta:

  • execute_command
    • entrada: cadena command
    • entrada opcional: cadena directory, con valor predeterminado ~
    • comportamiento: ejecuta el comando en el directorio solicitado y devuelve el código de salida, stdout y stderr

Lo que se excluyó del alcance

El README anterior afirmaba soporte para listas de permitidos de comandos, detección de comandos peligrosos, modos configurables, saneamiento de salida, registro de auditoría, confinamiento del directorio de trabajo, selección de shell multiplataforma y salida en streaming. Esas capacidades no están presentes en el árbol de código fuente actual.

Plan de parche mínimo antes de republicar

Antes de que esto se presente como un servidor MCP orientado a la seguridad:

  1. Reemplazar la ejecución de cadena shell=True con ejecución basada en argv.
  2. Agregar un modo estricto obligatorio por defecto, con listas de permitidos de comandos explícitas.
  3. Canonicalizar y aplicar una raíz de espacio de trabajo configurada antes de cada comando.
  4. Crear pruebas para el análisis de comandos, comandos bloqueados, traversal de rutas, escapes de enlaces simbólicos, comportamiento de tiempo de espera y límites de salida.
  5. Redactar patrones de secretos comunes de la salida devuelta.
  6. Agregar manejo de salida limitada para que los comandos grandes no agoten la memoria ni inunden las respuestas de MCP.
  7. Agregar registros de comandos auditables con marcas de tiempo, cwd, código de salida y motivo de bloqueo.
  8. Documentar exactamente qué shells, plataformas y límites de amenazas son compatibles.

Desarrollo

pip install -e ".[dev]"
pytest

Licencia

MIT