A escala do PolinRider é vasta e está crescendo rapidamente:
A campanha se espalhou muito além do npm, seu vetor inicial:
dev-log-core, logger-base, logkitx, pino-debugger, debug-fmt e debug-glit .vscode/tasks.json maliciosos e pipelines de CI injetados A campanha também comprometeu a biblioteca Axios do npm (versões 1.14.1 e 0.30.0) em abril de 2026 através de uma dependência maliciosa chamada plain-crypto-js, afetando cerca de 100 milhões de downloads semanais .
A cadeia de infecção do PolinRider é um processo cuidadosamente orquestrado em quatro etapas, projetado para maximizar o sigilo e minimizar a necessidade de interação da vítima.
Os atacantes anexam JavaScript altamente ofuscado ao final de arquivos de configuração legítimos, como postcss.config.mjs, tailwind.config.js, eslint.config.mjs e next.config.mjs . As linhas maliciosas são preenchidas com espaços em branco excessivos, empurrando o código para além da largura de visualização padrão do IDE, tornando-o invisível durante uma revisão de código casual
.
O PolinRider emprega três técnicas principais de ocultação:
.woff2 falsos: O JavaScript ofuscado é disfarçado como um arquivo de fonte web, um formato binário que a maioria dos desenvolvedores nunca inspeciona Arquivos .vscode/tasks.json maliciosos são injetados nos repositórios. Quando um desenvolvedor clona um repositório comprometido e o abre no VS Code, a tarefa é executada automaticamente sem qualquer interação adicional do usuário. Isso elimina completamente a etapa de engenharia social usada em campanhas anteriores do Contagious Interview .
O loader JavaScript desofuscado recupera seu payload de próximo estágio lendo dados criptografados embutidos em transações de blockchain de criptomoedas. A campanha usa as redes TRON, Aptos e BSC (BNB Smart Chain) como canais de C2 do tipo "dead-drop" . Esta técnica, conhecida como "etherhiding", torna a remoção extremamente difícil, pois os dados do C2 existem imutavelmente em blockchains públicas.
O PolinRider entrega um conjunto de payloads maliciosos, cada um com capacidades específicas:
A principal família de malware entregue é uma nova variante do BeaverTail, um malware JavaScript conhecido associado a operações da RPDC. Ele atua como um dropper de primeiro estágio e coletor de credenciais .
A cadeia de infecção entrega um RAT baseado em JavaScript rastreado como DEV#POPPER.js. Ele fornece capacidade total de execução remota de código (RCE), acesso persistente e a capacidade de executar comandos arbitrários na estação de trabalho do desenvolvedor comprometida. A Unidade de Resposta a Ameaças (TRU) da eSentire o detectou em atividade no setor de Energia, Utilidades e Resíduos em fevereiro de 2026 .
Implantado junto com o DEV#POPPER, o OmniStealer visa agressivamente credenciais de carteiras de criptomoedas, chaves privadas, credenciais armazenadas em navegadores, tokens de sessão, chaves de API e segredos de CI/CD .
O PolinRider é uma evolução operacional direta da campanha Contagious Interview. Enquanto o Contagious Interview historicamente dependia de iscas de entrevistas de emprego falsas e engenharia social para enganar desenvolvedores a instalarem projetos trojanizados, o PolinRider representa uma mudança para o comprometimento de cadeia de suprimentos totalmente automatizado e livre de engenharia social .
As principais diferenças e sobreposições incluem:
Com base em orientações do OpenSourceMalware, Socket Security, Sonatype e outros pesquisadores, as organizações devem tomar as seguintes medidas:
package.json, go.mod e arquivos de bloqueio (lockfiles) postcss.config.mjs, tailwind.config.js, eslint.config.mjs, next.config.mjs e similares em busca de JavaScript ofuscado anexado .vscode/ em busca de tasks.json inesperados com configurações de execução automática .woff2 e outros ativos binários em busca de JavaScript embutido npm auditsocket.dev) antes da instalação