Una vulnerabilidad que permitía lanzar actualizaciones para cualquier paquete en el repositorio NPM.

La empresa GitHub ha revelado información sobre dos incidentes en la infraestructura del repositorio de paquetes NPM. El 2 de noviembre, investigadores de seguridad externos (Kajetan Grzybowski y Maciej Piechota) informaron sobre la existencia de una vulnerabilidad en el repositorio de NPM que permitía publicar una nueva versión de cualquier paquete utilizando una cuenta no autorizada para realizar tales actualizaciones en el marco del programa Bug Bounty.

La vulnerabilidad fue causada por una verificación incorrecta de los permisos en el código de los microservicios que gestionan las solicitudes a NPM. El servicio de autorización realizaba la verificación de acceso a los paquetes en base a los datos enviados en la solicitud, pero otro servicio que subía actualizaciones al repositorio determinaba el paquete a publicar basándose en el contenido de los metadatos del paquete subido. De esta manera, un atacante podía solicitar la publicación de una actualización para su paquete, al que tenía acceso, pero especificar en el propio paquete la información de otro paquete que sería actualizado.

El problema fue resuelto seis horas después de que se informara sobre la vulnerabilidad, pero la vulnerabilidad estuvo presente en NPM durante más tiempo del que abarcan los registros de telemetría. GitHub afirma que no se han registrado signos de ataques utilizando esta vulnerabilidad desde septiembre de 2020, pero no hay garantías de que el problema no se haya explotado antes.

El segundo incidente ocurrió el 26 de octubre. Durante trabajos técnicos en la base de datos del servicio replicate.npmjs.com, se detectó la presencia de datos confidenciales en la base de datos accesible para solicitudes externas, que revelaban información sobre los nombres de paquetes internos mencionados en el registro de cambios. La información sobre tales nombres puede ser utilizada para llevar a cabo ataques en las dependencias de proyectos internos (en febrero, un ataque similar permitió ejecutar código en como en entornos de nube públicos o privados. PayPal, Microsoft, Apple, Netflix, Uber y otras 30 empresas).

Además, debido al aumento de incidentes de secuestro de repositorios de grandes proyectos y la propagación de código malicioso mediante la comprometedora de cuentas de desarrolladores, GitHub ha decidido implementar la autenticación de dos factores obligatoria. Este cambio entrará en vigencia en el primer trimestre de 2022 y se aplicará a los mantenedores y administradores de paquetes que estén en la lista de los más populares. Se informa adicionalmente de la modernización de la infraestructura, en la que se implementará un monitoreo automatizado y análisis de nuevas versiones de paquetes para la detección temprana de cambios maliciosos.

Recordemos que, de acuerdo con un estudio realizado en 2020, solo el 9.27% de los mantenedores de paquetes utilizan autenticación de dos factores para proteger el acceso, y en el 13.37% de los casos, al registrar nuevas cuentas, los desarrolladores intentaron reutilizar contraseñas comprometidas que aparecieron en filtraciones conocidas. Durante la verificación de la fiabilidad de las contraseñas utilizadas, se logró acceder al 12% de las cuentas en NPM (13% de los paquetes) debido al uso de contraseñas predecibles y triviales, como '123456'. Entre los problemas encontrados, había 4 cuentas de usuarios de los 20 paquetes más populares, 13 cuentas cuyos paquetes se descargaron más de 50 millones de veces al mes, 40 con más de 10 millones de descargas al mes y 282 con más de 1 millón de descargas al mes. Teniendo en cuenta la carga de módulos mediante cadenas de dependencias, la compromisión de cuentas poco confiables podría haber afectado hasta el 52% de todos los módulos en NPM.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster