
Seu Servidor MCP Não Tem Rastro de Auditoria — Uma Lista de Verificação de Segurança
Seu Servidor MCP Não Tem Rastro de Auditoria — Uma Lista de Verificação de Segurança
Mês passado, um agente de IA deletou em massa um ambiente de produção. A equipe passou 3 dias tentando entender o que aconteceu — logs stderr, timestamps parciais, nenhuma prova de qual agente ou quais parâmetros. Nenhum rastro de auditoria.
Isso não é raro. Amazon Kiro deletou um ambiente de produção. O agente do Replit derrubou um banco de dados ao vivo. Supabase MCP vazou tokens via injeção de prompt. Em todos os casos: zero evidência criptográfica do que aconteceu.
MCP está se tornando o padrão para comunicação entre agentes e ferramentas. Claude Code, Cursor, Windsurf e dezenas de ferramentas o utilizam. Mas a especificação MCP vem com:
- ❌ Sem assinatura de requisição
- ❌ Sem log de auditoria
- ❌ Sem verificação de identidade do chamador
- ❌ Sem proteção contra repetição
- ❌ Sem checagens de integridade de parâmetros
Seu servidor MCP aceita qualquer requisição de qualquer processo, confia completamente e não mantém registro verificável. Aqui está uma lista de verificação prática para corrigir isso.
O Modelo de Ameaça
Antes da lista de verificação, entenda contra o que você está se defendendo:
| Ataque | Como funciona | Impacto |
|---|---|---|
| Manipulação de parâmetros | Agente envia create_issue("fix bug"), algo no pipeline muda para delete_repo("production")
|
Perda de dados |
| Repetição | deploy_to_prod legítimo capturado e reproduzido 50 vezes |
Efeitos colaterais repetidos |
| Imitação | Processo malicioso envia requisições afirmando ser seu agente confiável | Ações não autorizadas |
| Encaminhamento entre servidores | Requisição destinada ao staging é encaminhada para produção | Ambiente errado |
| Manipulação de logs | Logs de texto editados após um incidente para encobrir rastros | Sem resposta a incidentes |
| Gap de conformidade | SOC 2 / HIPAA / GDPR requerem rastros de auditoria; "a IA fez isso" não é suficiente | Risco regulatório |
Lista de Verificação
✅ 1. Use TLS para transportes HTTP
Se seu servidor MCP usa HTTP (SSE ou HTTP Streamable), sempre termine TLS. Isso protege os dados em trânsito, mas não protege contra:
- Clientes comprometidos enviando requisições ruins
- Ataques de repetição (TLS protege o canal, não a mensagem)
- Manipulação de logs após o fato
Para transportes stdio (a maioria dos servidores MCP locais), TLS não se aplica — a superfície de ataque é diferente (qualquer processo local pode se conectar).
# exemplo nginx
location /mcp {
proxy_pass http://localhost:3001;
proxy_set_header X-Forwarded-For $remote_addr;
}
Cobre: Dados em trânsito.
Não cobre: Integridade da requisição, identidade, auditoria.
✅ 2. Valide entradas na fronteira
Cada manipulador de ferramenta deve validar seus argumentos. O MCP passa JSON arbitrário — trate-o como entrada do usuário.
server.setRequestHandler(CallToolRequestSchema, async (request) => {
const { name, arguments: args } = request.params;
if (name === "create_issue") {
if (typeof args?.title !== "string" || args.title.length > 200) {
return { content: [{ type: "text", text: "Título inválido" }], isError: true };
}
// prosseguir...
}
});
Use Zod ou similar para validação em tempo de execução. Nunca confie em args cegamente.
Cobre: Entrada malformada, injeção.
Não cobre: Quem enviou, se é uma repetição, rastro de auditoria.
✅ 3. Adicione autenticação (chaves de API ou mTLS)
Para transportes HTTP, exija uma chave de API ou use TLS mútuo:
// Verificação simples de chave de API
server.setRequestHandler(CallToolRequestSchema, async (request, extra) => {
const apiKey = extra.requestHeaders?.["x-api-key"];
if (apiKey !== process.env.MCP_API_KEY) {
return { content: [{ type: "text", text: "Não autorizado" }], isError: true };
}
A ausência de trilhas de auditoria em servidores MCP pode levar a sérios problemas de segurança para empresas brasileiras, especialmente em ambientes de produção. Implementar as recomendações do artigo é crucial para garantir a conformidade regulatória e proteger dados sensíveis.


