Lilith Shell

Execute comandos de terminal através de uma interface de shell segura usando um assistente de IA.

Documentação

Lilith Shell

Servidor MCP experimental que expõe a execução local de comandos shell a um assistente de IA.

Status Atual

Este repositório deve ser tratado como um protótipo, não como um servidor shell seguro.

A implementação atual expõe uma ferramenta MCP, execute_command, que executa uma string de comando fornecida pelo chamador por meio de subprocess.run(..., shell=True). Ela possui um tempo limite fixo de cinco minutos, captura stdout e stderr, e aceita um diretório de trabalho opcional. Atualmente, não implementa os controles de segurança descritos anteriormente neste README.

Ação recomendada para o perfil: arquivar ou desafixar este repositório até que o modelo de segurança seja reconstruído e testado.

Aviso de Segurança

Não execute isso em um host, conta ou diretório que contenha credenciais, dados de produção, código-fonte privado, chaves SSH, tokens de nuvem ou outros materiais sensíveis.

Lacunas conhecidas no código atual:

  • Sem aplicação de lista de permissões ou bloqueio de comandos
  • Sem modos estrito, permissivo ou de bloqueio total
  • Sem imposição de limite de diretório de trabalho
  • Sem filtragem de ambiente
  • Sem sanitização de saída
  • Sem log de auditoria
  • Sem seleção de shell via configuração
  • Sem saída em streaming
  • Sem caminho de execução específico para Windows
  • shell=True é usado com entrada de ferramenta não confiável

Essas lacunas tornam o projeto inadequado para uso em produção e arriscado até mesmo em uma estação de trabalho de desenvolvedor comum.

O Que Funciona Hoje

O servidor MCP registra uma ferramenta:

  • execute_command
    • entrada: string command
    • entrada opcional: string directory, com padrão ~
    • comportamento: executa o comando no diretório solicitado e retorna o código de saída, stdout e stderr

O Que Foi Removido do Escopo

O README anterior afirmava suporte para lista de permissões de comandos, detecção de comandos perigosos, modos configuráveis, sanitização de saída, registro de auditoria, confinamento de diretório de trabalho, seleção de shell multiplataforma e saída em streaming. Essas capacidades não estão presentes na árvore de código atual.

Plano Mínimo de Correção Antes de Republicar

Antes de apresentar isso como um servidor MCP orientado à segurança:

  1. Substituir a execução de string shell=True por execução baseada em argv.
  2. Adicionar um modo estrito obrigatório por padrão, com listas de permissões de comandos explícitas.
  3. Canonicalizar e impor uma raiz de workspace configurada antes de cada comando.
  4. Construir testes para análise de comandos, comandos bloqueados, travessia de caminho, escapes de symlink, comportamento de tempo limite e limites de saída.
  5. Redigir padrões comuns de segredos da saída retornada.
  6. Adicionar tratamento de saída limitada para que comandos grandes não esgotem a memória ou inundem as respostas do MCP.
  7. Adicionar logs de comandos auditáveis com carimbos de data/hora, cwd, código de saída e motivo do bloqueio.
  8. Documentar exatamente quais shells, plataformas e limites de ameaças são suportados.

Desenvolvimento

pip install -e ".[dev]"
pytest

Licença

MIT