Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
mcpshield — Correção plug-and-play para a falha de injeção de comandos MCP STDIO ainda não corrigida (família CVE-2026-30623) | Kitploit
Ferramentas/GitHubGitHub/csinexus/mcpshield
Análise de VulnerabilidadesAnálise de CódigoTestes de Segurança de APIsDevSecOpsComando e ControleConfiguração Incorreta
GitHubcsinexus/mcpshield

mcpshield

Correção plug-and-play para a falha de injeção de comandos MCP STDIO ainda não corrigida (família CVE-2026-30623)

Ver Repositório
3há 1 mêsAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

mcpshield

Python 3.10+ License: MIT

Um substituto direto para a falha não corrigida de injeção de comandos MCP STDIO (a família CVE-2026-30623, divulgada pela OX Security em abril de 2026 como "by design" -- nenhum patch de SDK virá). Importe uma linha, e todo servidor stdio MCP que sua aplicação Python iniciar terá seu comando/args/env validado antes de o SO criar qualquer processo.

Se você está chegando agora, leia Escopo primeiro; depois, Instalação e Começando deixarão você protegido em menos de dois minutos.

Índice

  • Status do projeto
  • Escopo
  • Instalação
  • Começando
    • Opção A: o autopatch (hosts Python MCP)
    • Opção B: verificação estática (qualquer linguagem, zero execução)
    • Opção C: supervisor de execução (hosts não Python)
  • O que é bloqueado vs. o que é apenas um aviso
  • As saídas de emergência
  • Referência da CLI
  • Limitações conhecidas
Estrutura do projeto
  • Desenvolvimento
  • Status do projeto

    Pré-1.0, em desenvolvimento ativo.

    • O mecanismo de validação, o autopatch e a CLI (check/launch/rules) estão implementados e cobertos por uma suíte de testes automatizada que roda contra os binários reais instalados na máquina de teste (python, node, npx) -- não mocks -- incluindo um handshake MCP genuíno de ponta a ponta por meio de um fixture de servidor real iniciado, e um teste genuíno de nível de subprocesso para launch.
    • Ainda não está no PyPI -- veja Instalação.
    • Veja SECURITY.md para exatamente o que está e o que não está coberto.

    Escopo

    No escopo: validar a execução de um servidor MCP stdio (comando + args + env) antes que ela chegue à camada de criação de processos do SO, especificamente para fechar o caminho de injeção de comando/argumento descrito em SECURITY.md.

    Explicitamente fora do escopo: escanear as ferramentas declaradas de um servidor em busca de capacidades arriscadas (esse é um problema diferente -- veja AgentGuard), isolar em sandbox o processo iniciado e transportes MCP não-stdio (SSE/HTTP).

    Instalação

    root@kitploit:~
    git clone <this-repo>
    cd mcpshield
    pip install -e .          # core CLI: click + rich only
    pip install -e ".[mcp]"   # if you also want the Python autopatch (needs the `mcp` SDK)
    

    Verifique se funcionou:

    root@kitploit:~
    mcpshield --version
    mcpshield --help
    

    Começando

    Opção A: o autopatch (hosts Python MCP)

    Se seu aplicativo é escrito em Python e constrói StdioServerParameters / chama mcp.client.stdio.stdio_client diretamente, adicione um import bem no topo do seu entrypoint -- antes de qualquer outra coisa importar mcp.client.stdio:

    root@kitploit:~
    import mcpshield.autopatch  # side-effect import; must come first
    
    from mcp import ClientSession, StdioServerParameters
    from mcp.client.stdio import stdio_client
    # ... use stdio_client exactly as before -- it's now validated
    

    Uma execução insegura agora levanta mcpshield.core.errors.UnsafeConfigurationError (uma subclasse de ValueError) em vez de jamais criar um processo.

    Opção B: verificação estática (qualquer linguagem, zero execução)

    Audite um arquivo de configuração no estilo mcpServers sem executar nada:

    root@kitploit:~
    mcpshield check claude_desktop_config.json
    
    root@kitploit:~
    +---------------------------------------------------------------+
    | Server           | Status  | Command | Detail                 |
    |------------------+---------+---------+------------------------|
    | filesystem       | OK      | npx     | -                      |
    | evil-server      | BLOCKED | npx     | Argument '...' contains|
    |                  |         |         | shell metacharacter    |
    +---------------------------------------------------------------+
    
      1 ok, 0 warned, 1 blocked
    

    Encerra com código de saída não zero se qualquer item estiver BLOCKED (adicione --strict para também falhar em WARN) -- coloque isso direto no CI.

    Opção C: supervisor de execução (hosts não Python)

    Para um cliente MCP (Node, Java, Rust, ...) que não pode usar o autopatch Python, aponte a configuração dele para mcpshield em vez do comando real:

    root@kitploit:~
    {
      "command": "mcpshield",
      "args": ["launch", "--", "npx", "-y", "some-mcp-server"]
    }
    

    launch valida e depois executa o comando real com o mesmo stdio que seu cliente MCP espera (passagem transparente) -- ou recusa com um erro claro se a execução for insegura.

    O que é bloqueado vs. o que é apenas um aviso

    VerificaçãoBinário nativo (ex.: python.exe)Interpretável por shell (.cmd/.bat/script shebang)
    Metacaracteres de shell (&, |, ;, backtick, $(...), ...) em um argumentoPermitidoBloqueado
    Byte NUL / nova linha em um argumentoBloqueadoBloqueado
    Comando resolve via path traversal relativo (..)BloqueadoBloqueado
    Comando não resolve para um arquivo realBloqueadoBloqueado
    LD_PRELOAD / NODE_OPTIONS / etc. no envRemovido (aviso)Removido (aviso)
    PYTHONPATH no envSinalizado (aviso), não removidoSinalizado (aviso), não removido

    Binários nativos recebem verificações de argumento mais flexíveis porque fazem exec diretamente -- não há shell para reinterpretar a lista de argumentos. Comandos interpretáveis por shell (mais comumente npx.cmd/npx.bat no Windows) recebem verificações rigorosas porque esse é exatamente o mecanismo que a CVE subjacente explora.

    As saídas de emergência

    Ambas as opções são opt-ins deliberados, por valor -- nunca uma flag genérica de "desativar verificações":

    • allow_raw_args=["--some-value-with-a-pipe"] (biblioteca) isenta valores de argumento específicos que você revisou e nos quais confia.
    • allow_env=["SOME_VAR"] permite que uma variável de ambiente normalmente removida passe sem modificações.

    Referência da CLI

    ComandoO que faz
    mcpshield check <config> [--format table|json] [--strict]Auditoria estática de uma configuração mcpServers. Nunca executa nada. Saída não zero em qualquer BLOCKED (ou também WARN, com --strict).
    mcpshield launch -- <command> [args...]Valida e depois executa o comando real com stdio em modo passagem.
    mcpshield rules listMostra a lista de bloqueio ativa de metacaracteres de shell, as listas de variáveis de ambiente e os binários de inicialização seguros conhecidos.

    Limitações conhecidas

    • Ainda não está no PyPI -- a instalação exige git clone.
    • O autopatch corrige apenas mcp.client.stdio.stdio_client conforme resolvido no momento da correção. Código que já mantém sua própria referência (via from mcp.client.stdio import stdio_client executado antes de import mcpshield.autopatch) vai contorná-lo -- importe mcpshield.autopatch primeiro, sempre.
    • A verificação de metacaracteres de shell é baseada em lista de negação, aplicada somente quando o comando resolvido é detectado como interpretável por shell. Não é um parser completo de gramática de shell -- veja SECURITY.md para o limite exato do escopo.
    • check resolve comandos usando a máquina em que é executado. Uma configuração que resolveria de forma diferente na máquina em que é realmente implantada (um PATH diferente, ferramentas instaladas diferentes) pode relatar de forma diferente lá.

    Estrutura do projeto

    root@kitploit:~
    mcpshield/
      autopatch.py           # one-line-import fix for Python MCP hosts
      core/
        validate.py           # the validation engine (command/args/env checks)
        rules.py               # blocklist/allowlist data
        errors.py               # UnsafeConfigurationError
      cli/
        main.py
        commands/ (check.py, launch.py, rules.py)
    tests/
      fixtures/                 # real benign MCP server + sample/malicious configs
    

    Desenvolvimento

    root@kitploit:~
    pip install -e ".[dev,mcp]"
    pytest
    

    A suíte de testes valida contra os binários reais python/node/npx instalados na máquina em que é executada (resolvidos da mesma forma que o próprio mecanismo os resolve), e inclui um handshake MCP genuíno de ponta a ponta por meio de um fixture de servidor real iniciado -- não mocks.

    Baixar ferramenta