Foram encontrados mais de 800 pacotes npm com discrepâncias, 18 exploráveis devido a 'Confusão de Manifesto'
22 de Março de 2024

Uma nova pesquisa descobriu mais de 800 pacotes no registro npm que apresentam discrepâncias em relação às suas entradas no registro, dos quais 18 foram encontrados para explorar uma técnica chamada confusão de manifestos.

As descobertas vêm da empresa de segurança cibernética JFrog, que disse que o problema poderia ser explorado por agentes de ameaças para enganar desenvolvedores a executar código malicioso.

"É uma ameaça real, já que os desenvolvedores podem ser enganados para baixar pacotes que parecem inocentes, mas cujas dependências ocultas são realmente maliciosas", disse o pesquisador de segurança Andrey Polkovnichenko ao The Hacker News.

A confusão de manifesto foi documentada pela primeira vez em julho de 2023, quando o pesquisador de segurança Darcy Clarke descobriu que as discrepâncias entre o manifesto e os metadados do pacote poderiam ser usadas para realizar ataques à cadeia de suprimentos de software.

O problema vem do fato de que o registro npm não valida se o arquivo de manifesto contido no tarball (package.json) corresponde aos dados de manifesto fornecidos ao servidor npm durante o processo de publicação via uma requisição HTTP PUT ao endpoint do pacote URI.

Como resultado, um ator de ameaça poderia aproveitar essa falta de verificação cruzada para fornecer um manifesto diferente contendo dependências ocultas que são processadas durante a instalação do pacote para instalar secretamente dependências maliciosas no sistema do desenvolvedor.

"O manifesto visível, ou 'falso', pode enganar os desenvolvedores e até mesmo as ferramentas de auditoria que dependem dos dados disponíveis no banco de dados do registro npm", disse a JFrog.

"Na realidade, o instalador pega o arquivo package.json do tarball, que pode ser diferente do visível fornecido na requisição HTTP PUT."

A empresa disse que identificou mais de 800 pacotes onde havia discrepância entre o manifesto no registro npm e o arquivo package.json dentro do tarball.

Embora muitas dessas discrepâncias sejam resultado de diferenças de especificação de protocolo ou variações na seção de scripts do arquivo de pacote, 18 delas são ditas para terem sido projetadas para explorar a confusão de manifesto.

Um pacote notável em questão é o yatai-web-ui, que é projetado para enviar uma solicitação HTTP para um servidor com informações sobre o endereço IP da máquina na qual o pacote foi instalado.

As conclusões mostram que o vetor de ataque nunca foi usado por atores de ameaças para realizar ataques de envenenamento.

Dito isso, é crucial que os desenvolvedores tomem medidas para garantir que os pacotes estejam livres de comportamentos suspeitos.

"Como esse problema não foi resolvido pelo npm, confiar apenas nos pacotes pela forma como aparecem no site do npm, pode ser arriscado", disse Polkovnichenko.

"As organizações devem introduzir procedimentos que verifiquem que todos os pacotes que entram na organização ou são usados por suas equipes de desenvolvimento são seguros e podem ser confiáveis.

Especificamente no caso da confusão de manifesto, é necessário que cada pacote seja analisado para ver se há alguma dependência oculta."

Publicidade

Pentest do Zero ao Profissional

O mais completo curso de Pentest e Hacking existente no Brasil, ministrado por instrutores de referência no mercado. Oferece embasamento sólido em computação, redes, Linux e programação. Passe por todas as fases de um Pentest utilizando ambientes realísticos. Se prepare para o mercado através da certificação SYCP. Saiba mais...