Hackers usam espelhos do npm para hospedar phishing

Escrito por
Jardeson Márcio
Jardeson Márcio é Jornalista e Mestre em Tecnologia Agroalimentar pela Universidade Federal da Paraíba. Com 8 anos de experiência escrevendo no SempreUpdate, Jardeson é um especialista...

Entenda como hackers usam o npm e o UNPKG para hospedar páginas falsas de phishing.

Os espelhos do npm estão sendo usados por cibercriminosos como uma nova forma de hospedar páginas de phishing em infraestrutura considerada confiável. Em vez de tentar comprometer diretamente o computador de um desenvolvedor durante a instalação de um pacote, os invasores estão explorando o próprio ecossistema de distribuição de software para armazenar e entregar páginas HTML maliciosas.

A descoberta foi feita pela OX Security, que identificou 24 pacotes npm contendo essencialmente o mesmo código malicioso. Os pacotes eram pequenos e, em muitos casos, não apresentavam comportamento perigoso quando simplesmente instalados. O objetivo era outro: aproveitar a replicação automática para serviços como UNPKG, transformando esses servidores em uma espécie de hospedagem gratuita para páginas fraudulentas.

Essa mudança de estratégia é importante. O npm não está sendo usado apenas como vetor tradicional de ataques à cadeia de suprimentos, nos quais um pacote executa código malicioso durante a instalação. Agora, o repositório e seus espelhos podem funcionar como infraestrutura de hospedagem, redirecionamento e persistência, aproveitando a reputação de domínios legítimos para dificultar a detecção.

Como funciona o abuso dos servidores espelho do npm

O ataque começa de maneira relativamente simples. Os criminosos criam um pacote no npm contendo poucos arquivos, normalmente um index.html e um package.json. Em vez de incluir um malware tradicional, o HTML contém uma página projetada para enganar quem acessá-la diretamente.

O package.json pode definir o arquivo HTML como ponto de entrada do pacote, enquanto o conteúdo da página implementa uma falsa tela de verificação de segurança. A OX Security encontrou pacotes que apresentavam uma interface imitando verificações do Cloudflare Turnstile, criando a impressão de que o usuário precisava confirmar que era humano antes de continuar.

Essa abordagem também explica por que a instalação do pacote, isoladamente, pode não produzir um comportamento obviamente malicioso. O arquivo HTML pode simplesmente permanecer armazenado no pacote. O verdadeiro ataque acontece quando alguém acessa esse arquivo através de um dos servidores espelho do npm.

O diferencial está justamente na distribuição automática. Serviços como UNPKG, além de outros espelhos públicos, replicam arquivos publicados no npm para facilitar sua entrega global. Assim, um arquivo que originalmente pertence a um pacote suspeito pode acabar sendo disponibilizado através de uma infraestrutura legítima e amplamente utilizada por desenvolvedores.

Imagem malware BeaverTail em pacotes npm

O papel das CDNs e do UNPKG na renderização direta

O UNPKG é uma CDN voltada para conteúdos publicados no npm. Seu funcionamento legítimo permite acessar diretamente arquivos de um pacote por meio de URLs estruturadas com o nome, versão e caminho do arquivo. O próprio serviço explica que os arquivos publicados no npm ficam disponíveis no UNPKG poucos minutos após a publicação.

Isso é extremamente útil para projetos legítimos, mas cria uma superfície de abuso. Quando um pacote contém um HTML, esse arquivo pode ser acessado diretamente pelo navegador.

Na prática, isso transforma uma estrutura semelhante a:

npm → pacote → arquivo HTML

em:

npm → espelho/CDN → navegador → página HTML renderizada

O detalhe mais relevante é que a página aparece sob o domínio unpkg.com, e não sob um domínio recém-criado pelo criminoso. Para o usuário, a barra de endereço pode indicar um serviço conhecido e legítimo.

Esse mecanismo pode dificultar sistemas de segurança que dependem excessivamente da reputação do domínio. Um bloqueador pode identificar e impedir o acesso a um domínio malicioso recém-registrado, mas o mesmo controle pode hesitar diante de uma requisição para uma CDN conhecida utilizada diariamente por desenvolvedores.

A investigação da OX Security mostrou justamente esse cenário: páginas HTML maliciosas armazenadas em pacotes passaram a ser renderizadas diretamente a partir de espelhos confiáveis.

Redirecionamentos dinâmicos e técnicas de evasão

A página hospedada no espelho não precisa necessariamente conter todo o ataque. Ela pode funcionar como uma ponte, exibindo uma falsa verificação e depois encaminhando o visitante para outro endereço.

Uma das técnicas observadas envolve JavaScript ofuscado, dificultando a análise superficial do código. A página pode simular uma verificação do Cloudflare e, posteriormente, realizar um redirecionamento.

Há ainda uma técnica mais interessante: algumas variantes utilizaram a API de um serviço de armazenamento de pares chave-valor, identificado na investigação como api.keyval.org. Nesse modelo, o HTML hospedado no npm consulta remotamente um valor, realiza operações de decodificação no navegador e utiliza o resultado como destino do redirecionamento.

O benefício para o invasor é significativo. O pacote não precisa ser republicado cada vez que o destino muda. Basta alterar o valor armazenado remotamente.

Isso cria uma separação entre a infraestrutura persistente e o destino operacional. Um mesmo pacote pode continuar disponível no espelho enquanto o endereço para o qual os visitantes são enviados muda conforme o interesse do criminoso.

A técnica também aumenta a capacidade de evasão. Se um domínio de phishing for bloqueado, o invasor pode substituir o destino remoto sem necessariamente alterar o arquivo HTML armazenado no npm.

É importante destacar uma nuance: a análise publicada pela OX Security descreve a infraestrutura como potencialmente capaz de direcionar usuários para ClickFix, phishing ou outros conteúdos maliciosos, mas isso não significa que todo acesso aos arquivos analisados tenha executado um ataque ClickFix. A investigação do BleepingComputer, por exemplo, encontrou uma variante que redirecionava para um site legítimo durante sua análise.

O problema da persistência dos arquivos excluídos nos espelhos

Um dos aspectos mais preocupantes dos espelhos do npm é que a remoção de um pacote do registro oficial não necessariamente significa que o conteúdo desapareceu imediatamente de toda a internet.

Serviços de espelhamento e cache possuem mecanismos próprios de replicação e armazenamento. Depois que um pacote é disponibilizado, seus arquivos podem ter sido copiados para diferentes pontos da infraestrutura.

Isso significa que existe uma diferença entre remover o pacote da origem e eliminar todas as cópias que já foram distribuídas.

A OX Security alertou especificamente para a possibilidade de pacotes removidos do npm continuarem acessíveis através de espelhos.

Para os defensores, isso muda a forma de pensar sobre um processo de takedown. Bloquear o pacote no npm continua sendo essencial, mas não necessariamente encerra a campanha.

Um endereço que aponta para um arquivo HTML de uma versão antiga pode continuar sendo relevante mesmo depois da remoção do pacote original. Em outras palavras, o espelhamento transforma o tempo de exposição em um problema independente da publicação original.

Esse comportamento também cria dificuldades para ferramentas de reputação. Um domínio pode continuar sendo classificado como legítimo enquanto uma determinada URL dentro dele entrega conteúdo abusivo. Por isso, a análise baseada apenas no domínio pode ser insuficiente.

Impactos para a segurança e recomendações

A campanha mostra que a confiança em serviços legítimos precisa ser contextual. npm, UNPKG e outras CDNs não são serviços maliciosos. O problema está no uso abusivo de recursos legítimos para entregar conteúdo criado por terceiros.

Para desenvolvedores, isso reforça a necessidade de analisar pacotes não apenas pelo comportamento durante a instalação, mas também pelo conteúdo publicado, pelos arquivos presentes e pela finalidade real do pacote.

Pacotes extremamente pequenos, com nomes suspeitos e contendo apenas arquivos HTML, especialmente quando não possuem uma justificativa técnica clara, merecem atenção adicional.

Para administradores de sistemas e equipes de segurança, a recomendação da OX Security é particularmente relevante: requisições diretas para arquivos .html hospedados em domínios de espelhos npm devem entrar nas rotinas de monitoramento e análise de risco. Logs de proxy, DNS e navegação podem ajudar a identificar esse padrão.

Também é recomendável evitar políticas excessivamente baseadas em listas de bloqueio de domínios. O fato de uma URL pertencer a uma CDN confiável não significa que todo conteúdo acessado através dela seja necessariamente confiável.

O caso dos espelhos do npm representa, portanto, uma evolução importante no abuso da infraestrutura de software aberto. O atacante não precisa necessariamente comprometer o computador do desenvolvedor. Pode simplesmente transformar uma plataforma legítima em parte da própria cadeia de entrega do phishing.

Para empresas, isso significa ampliar a visibilidade sobre requisições HTTP, reputação de URLs, conteúdo HTML e comportamento de redirecionamentos, inclusive dentro de domínios normalmente considerados confiáveis.

A fronteira entre hospedagem legítima e infraestrutura de ataque está ficando cada vez mais difícil de distinguir. Para desenvolvedores e administradores, compreender essa mudança é fundamental para construir controles que não dependam apenas da confiança atribuída ao domínio.

Compartilhe este artigo
Jardeson Márcio é Jornalista e Mestre em Tecnologia Agroalimentar pela Universidade Federal da Paraíba. Com 8 anos de experiência escrevendo no SempreUpdate, Jardeson é um especialista em Android, Apple, Cibersegurança e diversos outros temas do universo tecnológico. Seu foco é trazer análises aprofundadas, notícias e guias práticos sobre segurança digital, mobilidade, sistemas operacionais e as últimas inovações que moldam o cenário da tecnologia.