1 pontos por foundcake21 2026-04-13 | Ainda não há comentários. | Compartilhar no WhatsApp

Olá. Sou um universitário que está cursando Segurança da Informação.

Eu costumava usar bastante o kali-mcp para trabalhos de pentest / testes de tráfego / automação de CTF, mas acabei enfrentando gargalos em um ambiente com vários agentes conectados ao mesmo tempo e resolvi reimplementá-lo eu mesmo em Go.

GitHub: https://github.com/found-cake/kali-mcp-go


Estrutura e limitações do kali-mcp original

O original foi implementado em Flask + Python, e a classe CommandExecutor cria um subprocess.Popen a cada requisição e depois sobe mais 2 daemon threads para ler stdout/stderr separadamente.

Para um único agente isso é suficiente, mas quando muitas requisições chegam ao mesmo tempo em um ambiente multi-agent, surgem problemas como estes:

  • Worker único padrão do Flask — os agentes acabam bloqueando uns aos outros
  • Overhead de criar processo + thread a cada requisição
  • O agente confunde atraso na resposta com timeout e tenta repetir a mesma tarefa

Principais mudanças

Servidor

  • Antes: Flask (worker único padrão)
  • Mudança: Fiber v3 / fasthttp — concorrência total

Coleta de saída

  • Antes: loop de readline com 2 daemon threads
  • Mudança: 2 goroutines + WaitGroup para sincronização, alinhando claramente o momento da coleta de stdout/stderr e processando sem perda de saída

timeout/cancel

  • Antes: process.wait(timeout=...) + kill forçado
  • Mudança: baseado em context — até os pipes são fechados corretamente

Arquivo temporário do Metasploit

  • Antes: /tmp/mks_msf_resource.rc fixo no código — possibilidade de race condition em requisições simultâneas
  • Mudança: os.CreateTemp — tratamento seguro com nome de arquivo único para cada requisição

Suporte a tshark

  • Antes: não havia
  • Mudança: adição de um endpoint dedicado

Arquitetura

Mantive a mesma estrutura em 2 camadas do original, mas troquei a implementação interna.

[AI Client]  →(MCP stdio)→  [mcp-client]  →(HTTP + Bearer token)→  [kali-server]  →(exec)→  [nmap, tshark, ...]  

Ainda não há comentários.

Ainda não há comentários.