Uma vulnerabilidade que permitiu o lançamento de uma atualização para qualquer pacote no repositório NPM

O GitHub divulgou dois incidentes em sua infraestrutura de repositório de pacotes NPM. Em 2 de novembro, pesquisadores de segurança terceirizados (Kajetan Grzybowski e Maciej Piechota), como parte do programa Bug Bounty, relataram a presença de uma vulnerabilidade no repositório NPM que permite publicar uma nova versão de qualquer pacote usando sua conta, que não está autorizado a realizar tais atualizações.

A vulnerabilidade foi causada por verificações incorretas de permissão no código dos microsserviços que processam solicitações ao NPM. O serviço de autorização executou verificações de permissão do pacote com base nos dados passados ​​na solicitação, mas outro serviço que carregou a atualização no repositório determinou o pacote a ser publicado com base no conteúdo de metadados do pacote carregado. Assim, um invasor poderia solicitar a publicação de uma atualização para seu pacote, ao qual ele tem acesso, mas especificar no próprio pacote informações sobre outro pacote, que eventualmente seria atualizado.

O problema foi corrigido 6 horas após a vulnerabilidade ter sido relatada, mas a vulnerabilidade estava presente no NPM por mais tempo do que a cobertura dos logs de telemetria. O GitHub afirma que não há vestígios de ataques usando esta vulnerabilidade desde setembro de 2020, mas não há garantia de que o problema não tenha sido explorado antes.

O segundo incidente ocorreu em 26 de outubro. Durante os trabalhos técnicos com a base de dados do serviço replicate.npmjs.com, foi revelada a presença de dados confidenciais na base de dados acessíveis a solicitações externas, revelando informações sobre os nomes dos pacotes internos que foram mencionados no log de alterações. Informações sobre esses nomes podem ser usadas para realizar ataques de dependência em projetos internos (em fevereiro, um ataque semelhante permitiu a execução de código nos servidores do PayPal, Microsoft, Apple, Netflix, Uber e outras 30 empresas).

Além disso, devido ao número crescente de casos de sequestro de repositórios de grandes projetos e promoção de códigos maliciosos através do comprometimento de contas de desenvolvedores, o GitHub decidiu introduzir a autenticação obrigatória de dois fatores. A mudança entrará em vigor no primeiro trimestre de 2022 e valerá para mantenedores e administradores de pacotes incluídos na lista mais popular. Além disso, é informado sobre a modernização da infraestrutura, na qual será introduzido monitoramento e análise automatizados de novas versões de pacotes para detecção precoce de alterações maliciosas.

Lembremos que, segundo estudo realizado em 2020, apenas 9.27% dos mantenedores de pacotes utilizam autenticação de dois fatores para proteger o acesso, e em 13.37% dos casos, ao registrar novas contas, os desenvolvedores tentaram reutilizar senhas comprometidas que apareceram em vazamentos de senha conhecidos. Durante uma revisão de segurança de senha, 12% das contas NPM (13% dos pacotes) foram acessadas devido ao uso de senhas previsíveis e triviais, como “123456”. Entre as problemáticas estavam 4 contas de usuários dos 20 pacotes mais populares, 13 contas com pacotes 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. Tendo em conta o carregamento de módulos ao longo de uma cadeia de dependências, o comprometimento de contas não confiáveis ​​poderia afetar até 52% de todos os módulos no NPM.

Fonte: opennet.ru

Adicionar um comentário