Um link chega à caixa de entrada ou a uma janela de chat apontando para unpkg.com, o CDN que milhões de desenvolvedores usam todos os dias para buscar código JavaScript direto do registro do npm. Ele parece exatamente o que diz ser, um arquivo hospedado por um serviço conhecido por servir código aberto, não páginas de phishing. Ao clicar, aparece um CAPTCHA da Cloudflare, com visual convincente o suficiente para passar despercebido numa olhada rápida. É falso. Por trás dele existe uma cadeia de redirecionamento construída por um atacante que nunca precisou registrar um domínio parecido, comprar hospedagem, nem enviar um único e-mail que falsificasse a identidade de ninguém. Os pesquisadores Moshe Siman Tov Bustan e Vitalii Chepurko, da OX Security, encontraram 24 pacotes do npm responsáveis exatamente por isso, todos compartilhando o mesmo bloco de código malicioso, nenhum projetado para infectar o desenvolvedor que os instala.
Publicar Malware Como Pacote Nunca Foi o Objetivo
Cada um dos 24 pacotes era inofensivo ao ser instalado. Isso foi deliberado. O alvo real do atacante nunca foi a máquina de um desenvolvedor, e sim a rede de réplicas que copia automaticamente os pacotes públicos do npm para outros domínios: unpkg, npmmirror, o CDN do Yarn, o espelho da Tencent. Basta publicar um pacote contendo um arquivo HTML para que, em questão de horas, esse arquivo passe a ser servido, byte a byte, a partir de um domínio com reputação estabelecida e um certificado TLS que ninguém questiona. Cada pacote acumulava entre 50 e 300 downloads semanais antes de o npm perceber e removê-lo, uma vida útil curta o suficiente para escapar de escrutínio prolongado, mas longa o bastante para servir milhares de carregamentos de página. O HTML em si renderiza uma tela falsa de verificação da Cloudflare, o mesmo padrão de engenharia social usado em toda a família mais ampla de ataques ClickFix, que induzem a vítima a colar comandos fornecidos pelo atacante na sua própria caixa de diálogo Executar ou em um terminal. O destino do redirecionamento pode ser reconfigurado depois do fato, o que significa que a página de destino inofensiva de hoje pode virar amanhã um coletor de credenciais ou um distribuidor de malware sem que um novo pacote precise ser publicado.
O DMARC Foi Construído Para Responder Uma Pergunta Que Este Ataque Nunca Levanta
DMARC, SPF e DKIM existem para responder uma única pergunta: se o domínio no cabeçalho From realmente tem autoridade para enviar aquela mensagem. Nada dessa engrenagem é acionado aqui, porque este ataque não exige a falsificação de nenhum domínio de envio. A página de phishing vive em unpkg.com, um domínio que o atacante nunca controla nem precisa falsificar, já que o próprio comportamento de replicação do CDN faz a hospedagem por ele. Um link para ela pode viajar por e-mail, por uma mensagem no Slack, por um SMS, ou por um comentário em uma issue pública no GitHub, e em cada um desses canais ele chega parecendo tráfego de desenvolvedor perfeitamente normal. Os protocolos de autenticação foram projetados sob a suposição de que uma identidade forjada é o que precisa ser detectado. Esta técnica nunca forja identidade nenhuma. Ela toma emprestada uma identidade real que nunca deveria hospedar nada malicioso.
O Modelo de Registro Aberto Continua Produzindo o Mesmo Ponto Cego
Esta não é a primeira vez que o modelo público e de baixa fricção de publicação do npm é transformado em infraestrutura de phishing gratuita, e não será a última. Um pesquisador de segurança já havia sinalizado em julho uma versão menor do mesmo truque, um único pacote que usava uma página falsa da Cloudflare para redirecionar visitantes para outro lugar. O que torna esse padrão duradouro é estrutural: qualquer pessoa pode publicar um pacote em minutos, as réplicas copiam o conteúdo desse pacote de forma automática e sem nenhum critério, e remover o original não elimina cada cópia que já está circulando nas réplicas. Um defensor que bloqueia o pacote original do npm mas deixa intacta a réplica no unpkg.com não fechou nada. A abertura do registro é a característica que o torna útil para milhões de desenvolvedores legítimos, e é exatamente essa mesma característica que um atacante está explorando aqui.
O Que Isso Significa Para o Seu Programa
Não estenda confiança automática a domínios de CDN e réplicas só porque a reputação deles é antiga e o TLS é válido. unpkg.com, jsdelivr e serviços semelhantes são infraestrutura legítima que um atacante determinado ainda pode usar como camada de hospedagem que nunca precisou pagar nem proteger.
Trate isso como uma lacuna de conscientização em segurança, não apenas como um problema técnico. Uma página falsa de CAPTCHA hospedada em um domínio reconhecível voltado a desenvolvedores vai passar pelo filtro mental que um link para um domínio descartável teria acionado. Treine as pessoas para desconfiar de solicitações de verificação inesperadas, não importa onde estejam hospedadas.
Lembre-se de que o limite do DMARC não é uma falha, é um escopo. Ele autentica quem tem permissão para enviar como um domínio. Não diz nada sobre para onde aponta um link dentro de uma mensagem legitimamente autenticada, nem sobre qual página é carregada quando alguém clica. A inspeção de links e conteúdo precisa acompanhar a autenticação, não substituí-la.
Se a sua organização publica pacotes do npm, monitore sua própria presença nas principais réplicas. Um pacote comprometido ou com typosquatting em nome da sua organização é replicado de forma tão automática quanto um malicioso construído do zero, e a cópia na réplica pode sobreviver à sua capacidade de remover o original.
A Conclusão
Vinte e quatro pacotes, um bloco de código compartilhado, e um CDN fazendo exatamente aquilo para o qual foi criado, replicar conteúdo de forma rápida e confiável, somaram-se para criar infraestrutura de phishing descartável que não custou nada ao atacante e não carregou o peso reputacional que um domínio novo traria. O DMARC nunca iria detectar isso, não porque falhou, mas porque todo o ataque está fora da pergunta que o DMARC foi construído para responder. A lição é a mesma que esse padrão continua ensinando: a autenticação protege o envelope, não tudo aquilo para onde o envelope pode apontar.
O DMARC diz se um domínio tinha o direito de enviar. Ele não pode dizer se um link dentro de uma mensagem autenticada leva a algum lugar confiável. A Excello Mail transforma seus relatórios agregados de DMARC em um registro claro e contínuo de cada serviço que envia como seu domínio, para que a parte da sua postura de segurança que a autenticação realmente cobre nunca fique sem vigilância. Cadastre-se gratuitamente na Excello Mail e mantenha essa camada coberta enquanto sua equipe cuida do resto.