Incidente · servidor MCP malicioso

A porta dos fundos do postmark-mcp: como um servidor MCP malicioso aparece em um Mac e por que o Kilobat não o teria visto

Em setembro de 2025, um pacote npm não oficial que permitia que assistentes de IA enviassem e-mail pelo Postmark acrescentou uma linha ao código: a partir da versão 1.0.16, cada e-mail enviado incluía uma cópia oculta para um endereço no domínio do próprio publicador. É um caso útil justamente porque o Mac nunca se conectou a nada incomum.

Quando: setembro de 2025Fontes verificadas: 1º de novembro de 2026

Em resumo

  • Protection: Não ajudaria

    O Mac só se comunicou com a API do Postmark. As cópias foram entregues pelos servidores de e-mail do Postmark como mensagens comuns.

  • Agent guard: Não ajudaria

    Nenhum site de colagem, túnel, endereço direto ou grande upload para um novo host. Enviar e-mail por uma API de e-mail era a função da ferramenta.

  • Registro de rede de agentes: Limitado

    Ele teria listado o servidor MCP no agente que o iniciou, comunicando-se com api.postmarkapp.com, o que é esperado. O destinatário extra fica dentro da requisição criptografada.

O que aconteceu

Os pesquisadores da Koi Security que o descobriram descrevem um pacote npm chamado postmark-mcp, criado a partir do código de um repositório de mesmo nome mantido pela dona do Postmark, a ActiveCampaign, e publicado por outra pessoa. Era um servidor MCP: um pequeno programa que um assistente de IA como Claude Desktop, Cursor ou Claude Code inicia para chamar suas ferramentas, neste caso sendEmail e sendEmailWithTemplate.

As primeiras quinze versões funcionavam conforme anunciado. A versão 1.0.16 adicionou a cada mensagem enviada um campo Bcc com um endereço fixo no domínio giftshop[.]club, copiando redefinições de senha, faturas e qualquer outro conteúdo enviado pelo assistente. A Koi calculou cerca de 1.500 downloads por semana e estimou que milhares de e-mails eram copiados diariamente. Quando a Koi contatou o publicador, o pacote foi excluído do npm, o que não afeta cópias já instaladas.

O Postmark disse que o pacote não era seu, que não havia publicado um servidor MCP no npm e que sua API e seus serviços não foram afetados. A Snyk publicou o código do pacote e a diferença de uma linha entre a versão limpa 1.0.15 e as posteriores.

Linha do tempo

  1. 15 de set. de 2025

    postmark-mcp 1.0.0 é publicado no npm (linha do tempo da Snyk).

  2. 15–17 de set. de 2025

    Seguem-se várias versões; a 1.0.16 adiciona a cópia oculta, e a 1.0.18 é a última versão registrada.

  3. Fim de setembro de 2025

    O mecanismo de risco da Koi sinaliza a mudança de comportamento; a Koi publica suas descobertas e o pacote desaparece do npm.

  4. 25 de set. de 2025

    O Postmark informa que o pacote não é seu e recomenda trocar credenciais enviadas por e-mail; a Snyk publica sua análise e indicadores.

Como apareceu na rede

No Mac, o servidor MCP é um processo node iniciado pelo assistente, frequentemente por npx. Para enviar um e-mail, ele chamava a API do Postmark em api.postmarkapp.com por HTTPS, usando a própria biblioteca Node do Postmark, exatamente como as versões limpas. O endereço de cópia oculta era mais um campo dentro da requisição criptografada e o tamanho da mensagem quase não mudou.

A cópia seguiu o caminho de qualquer e-mail: os servidores do Postmark a entregaram ao servidor de e-mail de giftshop[.]club. Nenhuma conexão do Mac foi a um destino novo e nenhum padrão de tráfego mudou entre as versões 1.0.15 e 1.0.16.

Indicadores

Conforme documentados pelas fontes. Os domínios aparecem como texto, nunca como links, e são neutralizados ([.]) quando a fonte os neutraliza. A maior parte dessa infraestrutura já deixou de existir: os indicadores ajudam a verificar registros, arquivos e contas antigos, não a bloquear campanhas atuais.

IndicadorTipoOnde apareceObservação
postmark-mcp 1.0.16 and laterPacote npmConfigurações de clientes MCP, cache do npmNão é do próprio Postmark. Removido do npm em setembro de 2025, mas cópias instaladas continuam funcionando.
phan@giftshop[.]clubEndereço de e-mailAtividade de mensagens do PostmarkO destinatário fixo em cópia oculta. Ele nunca aparece no tráfego de rede do Mac.
giftshop[.]clubDomínioRegistros de e-mailA Snyk sugere bloqueá-lo na saída enquanto você verifica; ele recebe e-mails, não conexões do Mac.
api.postmarkapp.comHost (legítimo)Seu MacO único host que o servidor MCP acessava, como nas versões limpas.

O que o Kilobat teria mostrado ou bloqueado

  • Registro de rede dos agentes. Servidores MCP iniciados por um agente fazem parte de sua árvore de processos, então a sessão listaria node, o servidor MCP, conectando-se a api.postmarkapp.com, com os bytes enviados. Isso é o esperado de uma ferramenta de e-mail. Ele seria sinalizado como primeira vez apenas no primeiro dia em que qualquer agente do Mac usasse o Postmark, nunca para o destinatário oculto.
  • Protection. Nada a bloquear e nada que devesse ser bloqueado. O Postmark é um serviço legítimo e, quando verificamos em 1º de novembro de 2026, giftshop[.]club não estava nas listas de ameaças do Kilobat, o que não faria diferença aqui: o Mac nunca se conecta a ele.
  • Agent guard. Nenhuma de suas regras se aplica. O bloqueio de upload vale para mais de 10 MB enviados a um host que nenhum agente usou antes, e requisições de e-mail são pequenas.

Onde o Kilobat não teria ajudado

  • O roubo ocorreu dentro de uma requisição permitida a um serviço permitido. Nenhuma ferramenta que monitora conexões no Mac ou na rede pode ver um campo dentro de HTTPS criptografado.
  • As cópias foram entregues pelos servidores de e-mail do Postmark, a partir da rede do Postmark, não do Mac.
  • O servidor MCP fez exatamente o que o assistente pediu, e mais uma coisa. O assistente também não tinha como ver o destinatário extra.
  • O Kilobat nunca lê o que os apps enviam, por decisão de projeto; por isso, não consegue distinguir um e-mail comum de um e-mail copiado.

Verifique seu Mac agora

  1. Liste os servidores MCP que o Claude Code está configurado para iniciar.

    claude mcp list
  2. Procure o pacote nas configurações MCP dos outros assistentes.

    grep -n "postmark-mcp" ~/Library/Application\ Support/Claude/claude_desktop_config.json ~/.cursor/mcp.json ~/.codeium/windsurf/mcp_config.json 2>/dev/null
  3. Procure cópias instaladas globalmente pelo npm ou mantidas em cache para npx.

    npm ls -g postmark-mcp; find ~/.npm/_npx -maxdepth 3 -type d -name "postmark-mcp"
  4. Se você o usou, remova-o de todas as configurações, troque o token do servidor Postmark ao qual ele tinha acesso e procure, na atividade desse servidor no Postmark, mensagens com uma cópia oculta para giftshop[.]club.

  5. Considere que tudo o que foi enviado por ele foi lido por outra pessoa: altere senhas e revogue links ou tokens que saíram por e-mail. Use os servidores MCP indicados pela documentação oficial de cada serviço.

  6. Com o Kilobat, veja quais hosts cada servidor MCP acessa. Um servidor que acessa hosts sem relação com sua função merece atenção, embora este não tenha feito isso.

    kilobat agent-log --all

Perguntas

O Kilobat poderia ter detectado isso?

Não. Todas as conexões eram necessárias para a função da ferramenta. Esse é o tipo de ataque que só uma revisão de código, verificações de reputação do pacote ou os próprios registros do serviço de e-mail podem revelar.

Servidores MCP são mais arriscados que outros pacotes npm?

Eles são executados com todo o acesso que você concede ao assistente, e o assistente os chama muitas vezes sem que uma pessoa confira cada chamada. A Koi mostrou que bastou uma linha alterada.

Fontes

Verificado em 1º de novembro de 2026.

Veja a que seus agentes e apps se conectam

O Kilobat é um app para a barra de menus do Mac que identifica o app, processo e agente por trás de cada conexão, mantém essas conexões longe de hosts reconhecidamente maliciosos e registra o que cada sessão de agente acessou.

Baixar para Mac ↓
brew install seifip/kilobat/kilobat