Unha vulnerabilidade que permitiu lanzar unha actualización para calquera paquete do repositorio de NPM

GitHub revelou dous incidentes na súa infraestrutura de repositorio de paquetes NPM. O 2 de novembro, investigadores de seguridade de terceiros (Kajetan Grzybowski e Maciej Piechota), como parte do programa Bug Bounty, informaron da presenza dunha vulnerabilidade no repositorio de NPM que che permite publicar unha nova versión de calquera paquete usando a túa conta, que non está autorizado para realizar tales actualizacións.

A vulnerabilidade foi causada por verificacións de permisos incorrectas no código dos microservizos que procesan solicitudes a NPM. O servizo de autorización realizou comprobacións de permisos do paquete en función dos datos pasados ​​na solicitude, pero outro servizo que subiu a actualización ao repositorio determinou que o paquete se publicase en función do contido dos metadatos do paquete cargado. Así, un atacante podería solicitar a publicación dunha actualización do seu paquete, ao que ten acceso, pero especificar no propio paquete información sobre outro paquete, que eventualmente sería actualizado.

O problema solucionouse 6 horas despois de que se informara da vulnerabilidade, pero a vulnerabilidade estivo presente en NPM máis tempo que o que cobren os rexistros de telemetría. GitHub afirma que non houbo rastros de ataques usando esta vulnerabilidade desde setembro de 2020, pero non hai garantía de que o problema non fose explotado antes.

O segundo suceso ocorreu o 26 de outubro. Durante o traballo técnico coa base de datos do servizo replicate.npmjs.com, revelouse a presenza de datos confidenciais na base de datos accesible a solicitudes externas, revelando información sobre os nomes dos paquetes internos que se mencionaron no rexistro de cambios. A información sobre estes nomes pódese utilizar para realizar ataques de dependencia en proxectos internos (en febreiro, un ataque similar permitiu executar código nos servidores de PayPal, Microsoft, Apple, Netflix, Uber e outras 30 empresas).

Ademais, debido ao crecente número de casos en que se secuestran repositorios de grandes proxectos e se promove código malicioso mediante contas de desenvolvedores comprometidas, GitHub decidiu introducir a autenticación obrigatoria de dous factores. O cambio entrará en vigor no primeiro trimestre de 2022 e aplicarase aos mantedores e administradores dos paquetes incluídos na lista máis popular. Ademais, infórmase sobre a modernización da infraestrutura, na que se introducirá un seguimento automatizado e análise de novas versións de paquetes para a detección precoz de cambios maliciosos.

Lembremos que, segundo un estudo realizado en 2020, só o 9.27% dos mantedores de paquetes usan a autenticación de dous factores para protexer o acceso, e no 13.37% dos casos, ao rexistrar novas contas, os desenvolvedores tentaron reutilizar contrasinais comprometidos que apareceron en fugas de contrasinais coñecidas. Durante unha revisión de seguranza do contrasinal, accedeuse ao 12% das contas de NPM (o 13% dos paquetes) debido ao uso de contrasinais predicibles e triviais como "123456". Entre as problemáticas figuraban 4 contas de usuarios dos 20 paquetes máis populares, 13 contas con paquetes descargados máis de 50 millóns de veces ao mes, 40 con máis de 10 millóns de descargas ao mes e 282 con máis de 1 millón de descargas ao mes. Tendo en conta a carga de módulos ao longo dunha cadea de dependencias, o compromiso de contas non fiables pode afectar ata o 52% de todos os módulos en NPM.

Fonte: opennet.ru

Engadir un comentario