Vulnerabilidade que permitia liberar atualizações para qualquer pacote no repositório NPM

A empresa GitHub revelou informações sobre dois incidentes na infraestrutura do repositório de pacotes NPM. Em 2 de novembro, pesquisadores de segurança externos (Kajetan Grzybowski e Maciej Piechota) relataram, como parte do programa Bug Bounty, a existência de uma vulnerabilidade no repositório NPM que permitia a publicação de uma nova versão de qualquer pacote, utilizando uma conta não autorizada para realizar tais atualizações.

A vulnerabilidade foi causada pela verificação inadequada de permissões no código dos microserviços que processam as solicitações ao NPM. O serviço de autorização realizava a verificação de direitos de acesso aos pacotes com base nos dados transmitidos na solicitação, mas outro serviço, que carregava a atualização no repositório, determinava o pacote a ser publicado com base no conteúdo dos metadados no pacote carregado. Assim, o invasor poderia solicitar a publicação de uma atualização para seu próprio pacote, ao qual tinha acesso, mas indicar no próprio pacote as informações de outro pacote que seria, na verdade, atualizado.

O problema foi resolvido em 6 horas após o surgimento da informação sobre a vulnerabilidade, mas a vulnerabilidade esteve presente no NPM por mais tempo do que os logs de telemetria cobrem. O GitHub afirma que não foram registrados indícios de ataques utilizando essa vulnerabilidade desde setembro de 2020, mas não há garantias de que o problema não foi explorado anteriormente.

O segundo incidente ocorreu em 26 de outubro. Durante trabalhos técnicos com a base de dados do serviço replicate.npmjs.com, foi identificado a presença de dados confidenciais acessíveis a consultas externas na base de dados, revelando informações sobre os nomes de pacotes internos mencionados no registro de mudanças. Informações sobre esses nomes podem ser usadas para realizar ataques a dependências em projetos internos (em fevereiro, um ataque similar permitiu a execução de código em servidores PayPal, Microsoft, Apple, Netflix, Uber e mais 30 empresas).

Além disso, devido ao aumento dos casos de sequestro de repositórios de grandes projetos e à promoção de códigos maliciosos por meio da compromissão de contas de desenvolvedores, a empresa GitHub decidiu implementar a autenticação em duas etapas obrigatória. A mudança entrará em vigor no primeiro trimestre de 2022 e se aplicará a mantenedores e administradores de pacotes incluídos na lista dos mais populares. Também foi anunciado uma atualização na infraestrutura, que incluirá monitoramento e análise automatizados de novas versões de pacotes para identificação precoce de alterações maliciosas.

Vale lembrar que, de acordo com uma pesquisa realizada em 2020, apenas 9,27% dos mantenedores de pacotes utilizam autenticação em duas etapas para proteger o acesso, e em 13,37% dos casos, ao registrar novas contas, os desenvolvedores tentaram reutilizar senhas comprometidas que figuram em conhecidos vazamentos. Durante a verificação da segurança das senhas utilizadas, foi possível acessar 12% das contas no NPM (13% dos pacotes) devido ao uso de senhas previsíveis e triviais, como "123456". Dentre os problemas, estavam 4 contas de usuários entre os 20 pacotes mais populares, 13 contas cujos pacotes eram baixados mais de 50 milhões de vezes por mês, 40 com mais de 10 milhões de downloads por mês e 282 com mais de 1 milhão de downloads por mês. Considerando o download de módulos por meio de cadeias de dependências, a compromissão de contas pouco confiáveis poderia ter afetado até 52% de todos os módulos no NPM.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster