- Foi confirmado que mais de 100 pacotes maliciosos voltados ao roubo de credenciais foram enviados ao repositório NPM sem serem detectados desde agosto, somando mais de 86 mil downloads
- A empresa de segurança Koi informou que uma campanha de ataque batizada de “PhantomRaven” distribuiu 126 pacotes maliciosos explorando o recurso Remote Dynamic Dependencies (RDD) do NPM
- O RDD é uma estrutura que permite que pacotes baixem dinamicamente código de dependências a partir de domínios não confiáveis, o que impede a detecção por ferramentas de análise estática
- Os invasores usaram esse recurso para baixar código malicioso por conexões HTTP, enquanto os metadados dos pacotes exibiam “0 Dependencies”, fazendo com que desenvolvedores e scanners de segurança não percebessem o problema
- Essa vulnerabilidade estrutural expõe os limites da gestão de segurança do ecossistema NPM e os riscos do mecanismo de instalação automática
Disseminação de pacotes maliciosos no repositório NPM
- Invasores aproveitaram uma fraqueza estrutural do repositório de código do NPM para enviar, desde agosto, mais de 100 pacotes voltados ao roubo de credenciais
- A maioria dos pacotes foi distribuída sem detecção, e o total acumulado de downloads passou de 86 mil
- A empresa de segurança Koi deu a esse ataque o nome de campanha PhantomRaven e analisou que um recurso específico do NPM foi explorado
- Segundo a Koi, cerca de 80 dos 126 pacotes maliciosos ainda permaneciam no NPM no momento da publicação da matéria
Estrutura vulnerável do Remote Dynamic Dependencies (RDD)
- O RDD é um recurso que permite que pacotes baixem dinamicamente código de dependências de sites externos
- Normalmente, as dependências são baixadas da infraestrutura confiável do NPM, mas o RDD também permite downloads por conexões não criptografadas, como HTTP
- Os responsáveis pelo ataque PhantomRaven usaram esse recurso para configurar o download de código a partir de URLs maliciosas (ex.:
http://packages.storeartifact.com/npm/unused-imports)
- Essas dependências ficam invisíveis para desenvolvedores e scanners de segurança e aparecem nas informações do pacote como “0 Dependencies”
- Por causa do recurso de instalação automática do NPM, esse código de dependência “invisível” é executado automaticamente
Limites de detecção das ferramentas de segurança
- Oren Yomtov, da Koi, afirmou que “o PhantomRaven é um caso de exploração sofisticada de um ponto cego das ferramentas de segurança existentes”
- O RDD não é detectado por ferramentas de análise estática
- Com isso, os invasores conseguiram contornar a validação de segurança e distribuir código malicioso
Fatores adicionais de vulnerabilidade
- A Koi explicou que as dependências baixadas via RDD são baixadas novamente do servidor do invasor a cada instalação
- Como não há cache nem controle de versão, existe a possibilidade de que códigos maliciosos diferentes sejam injetados a cada instalação do mesmo pacote
- Essa estrutura de download dinâmico dificulta a verificação de integridade dos pacotes
Estrutura e contexto do NPM
- O NPM é um gerenciador de pacotes para JavaScript, administrado pela npm, Inc., subsidiária do GitHub
- É o gerenciador de pacotes padrão do Node.js e é composto pelo cliente de linha de comando e pelo npm registry
- O registry armazena pacotes públicos e privados pagos, que podem ser pesquisados pelo site
- O caso é apontado como um exemplo de como a estrutura de gerenciamento automático de dependências do NPM pode ser explorada em ataques
Outras menções
- No fim da matéria, é mencionada a opinião de que a execução desnecessária de JavaScript deve ser bloqueada
- No entanto, ressalta-se que este ataque é um caso em que até mesmo código JavaScript essencial foi explorado
Ainda não há comentários.