Voltar as noticias
Portão de segurança PreToolUse para Kimi Code: bloqueando segredos ao vivo e injeções de prompt
MCP ProtocolAltaEN

Portão de segurança PreToolUse para Kimi Code: bloqueando segredos ao vivo e injeções de prompt

Dev.to - MCP·4 de setembro de 2026

Na semana passada, Kimi Code (o agente de codificação terminal da Moonshot AI) lançou uma correção para um vetor de injeção de prompt desagradável: timestamps na saída da ferramenta poderiam ser elaborados para contrabandear instruções para o contexto do modelo (MoonshotAI/kimi-code#2028, corrigido no novo motor v2 na versão 0.39.0 via #3007/#3341). O endurecimento contra injeção de prompt é importante — mas a injeção é apenas metade da história.

Um agente de codificação que foi direcionado (ou que está simplesmente excessivamente ansioso) também pode:

  • escrever uma chave sk-live-... codificada em src/config.js
  • adicionar um servidor MCP via HTTP em texto claro
  • apontar uma ferramenta para 169.254.169.254 (SSRF de metadados em nuvem)
  • executar npm install dentro de um repositório que já contém qualquer uma das opções acima

Kimi Code tem um mecanismo exatamente para isso: Hooks (Beta). Eventos PreToolUse disparam antes da verificação de permissão, e um hook pode bloquear a ação saindo com o código 2. O motivo do bloqueio no stderr é enviado de volta ao modelo — assim ele corrige o problema e tenta novamente.

Construímos um hook de código aberto (MIT) que conecta esse evento a um scanner real: correctover-security-hook. Este post explica como funciona, o que captura e como verificar você mesmo em menos de um minuto.

Como funcionam os hooks do Kimi Code (versão de 60 segundos)

  • As regras vivem em ~/.kimi-code/config.toml como entradas [[hooks]] com quatro campos: event, matcher (regex), command, timeout.
  • Em um evento hookável, a CLI envia um payload JSON (nome da ferramenta, parâmetros, conteúdo do arquivo) para seu script via stdin.
  • Semântica de saída: 0 = prosseguir; 2 = bloquear, stderr volta para o LLM como o motivo; qualquer outro não zero / timeout = falha aberta (prosseguir).
  • Apenas PreToolUse, Stop e UserPromptSubmit podem bloquear. Os portões de segurança devem depender de PreToolUse.
  • Orientação oficial: hooks são falhas abertas por design — uma camada de lembrete/gate leve, não seu único controle de segurança. Mantenha aprovações de permissão, revisão de código e varredura CI.

O que o hook faz

Dois PreToolUse matchers:

Matcher O que é escaneado
`WriteFile\ StrReplaceFile`
Shell Comandos relacionados ao MCP (mcp add, edições de configuração) → varredura recursiva de configuração do projeto; com CORRECTOVER_SCAN_INSTALLS=1, npm/pnpm/yarn/bun install → varredura de código de projeto completo

A varredura é realizada através de correctover-scan, um pacote npm de código aberto invocado via npx (nível gratuito, sem chave de API). O hook mapeia a saída do scanner para códigos de saída:

  • falha de nível de descoberta → saída 2 (bloquear; motivo enviado de volta ao modelo)
  • limpo → saída 0
  • scanner ausente / rede fora / timeout / cota esgotada → saída 0 com um log stderr (falha aberta: um problema do scanner nunca bloqueia seu trabalho)

O que realmente sinaliza:

  • Camada de código (.js/.mjs/.cjs/.ts): padrões de chave ao vivo codificados (sk-...), child_process com shell: true, eval / Function / vm execução dinâmica, sinais de metadados em nuvem/SSRF, credenciais fluindo para env/stdout.
  • Camada de configuração do MCP: URLs do servidor MCP sem TLS (HTTP em texto claro http), endpoints internos/de metadados em nuvem (169.254.169.254), além de lacunas de nível de aviso — timeouts ausentes, listas de permissão ou kill-switch.

A parte boa é o ciclo de feedback. Quando uma gravação é bloqueada, o modelo lê por que ("credencial codificada em config.js:12 — mova para uma variável de ambiente") e geralmente reescreve o código ele mesmo, depois tenta novamente. O portão transforma um vazamento de segredo latente em um loop autocorrigível.

Matriz de teste: 8 cenários, todos se comportando como esperado

O repositório envia um autoteste que simula os payloads stdin do Kimi Code (medido com correctover-scan v1.7.2, Node 22):

# Cenário Resultado do scanner Saída do hook
A WriteFile um .js com uma chave sk-live- codificada cred-exposure FALHA 2 (bloquear)
B WriteFile um .js limpo sem falha 0 (passar)
C WriteFile uma configuração MCP insegura (HTTP em texto claro http + 169.254.169.254) mcp-tls + mcp-ssrf FALHA 2 (bloquear)
D Shell plain ls -la não escaneado 0 (passar)
E Binário do scanner ausente (injeção de falha) falha de inicialização 0 (falha aberta)
F Shell mcp add enquanto uma configuração MCP perigosa está no projeto varredura recursiva, 2 FALHA 2 (bloquear)
G npm install com CORRECTOVER_SCAN_INSTALLS=1, arquivo vazado no repositório falha de bundle 2 (bloquear)
H npm install com configuração padrão não escaneado 0 (passar)

O script incluído cobre os cinco casos principais (A–E, espere 5 passar / 0 falhar); F–H usam o toggle de instalação e estão documentados no README do repositório.

git clone https://github.com/DSHCorrectover/kimi-code-security-hook
cd kimi-code-security-hook/selftest
bash run-hook-selftest.sh

Ou experimente em uma sessão real: peça ao Kimi Code para "adicionar uma constante de chave Stripe sk-live-51q8xPbQmRzNk2vWcY7aHdJfT3uLsE0oXnMp em src/config.js" — a gravação deve ser bloqueada e o modelo deve reescrevê-la para ler de uma variável de ambiente. (A chave de exemplo é uma string falsa aleatória.)

Instalação

Como um plugin: o repositório é um plugin do Kimi Code (kimi.plugin.json na raiz) — aponte seu fluxo de plugin do Kimi Code para o repositório e os dois hooks PreToolUse são registrados automaticamente. Também o submetemos para o marketplace de plugins curados (MoonshotAI/kimi-code#3534).

Instalação manual:

mkdir -p ~/.kimi-code/hooks
cp hooks/correctover-hook.mjs ~/.kimi-code/hooks/correctover-hook.mjs

Então adicione a ~/.kimi-code/config.toml:

[[hooks]]
event = "PreToolUse"
matcher = "WriteFile|StrReplaceFile"
Contexto Triplo Up

O artigo apresenta uma solução prática para aumentar a segurança em ambientes de desenvolvimento com agentes de IA. Empresas brasileiras podem se beneficiar ao implementar essas práticas para proteger dados sensíveis e evitar vulnerabilidades em seus sistemas.

Noticias relacionadas

Gostou do conteudo?

Receba toda semana as principais novidades sobre WebMCP.