«Revival Hijack» en PyPI disfraza malware con nombres de archivos legítimos
Los investigadores de seguridad han descubierto una forma sencilla e inquietante para que los atacantes distribuyan cargas maliciosas a través del repositorio de paquetes PyPI.
Esta técnica simplemente vuelve a registrar un paquete malicioso con PyPI con el mismo nombre que cualquier paquete legítimo previamente registrado pero ahora eliminado del repositorio y luego espera a que las organizaciones lo descarguen. Debido a que PyPI no prohíbe la reutilización de nombres de paquetes eliminados, es fácil para los atacantes hacer pasar paquetes fraudulentos que alguna vez estuvieron disponibles en el registro como paquetes legítimos.
Secuestro de avivamiento
«Los atacantes pueden utilizar el método ‘Revival Hijack’ como un simple ataque a la cadena de suministro dirigido a organizaciones y penetrando en una variedad de entornos», dijeron investigadores de JFrog advirtió en un informe esta semana. «Los usuarios de PyPI deben permanecer atentos y asegurarse de que sus máquinas CI/CD no intenten instalar paquetes que ya han sido eliminados por PyPI», señalaron, después de descubrir recientemente un actor de amenazas que utiliza esta táctica en un aparente intento de difundir malware.
El método de ataque descubierto por JFrog es uno de varios que los atacantes han utilizado en los últimos años para inyectar malware en entornos corporativos a través de repositorios de código públicos como PyPI, npm, Maven Central, NuGet y RubyGems. Tácticas comunes incluidas Clonación e infección repositorios populares, envenenamiento de artefactos, y buscando y usar secretos filtrados como claves privadas y certificados de bases de datos en ataques.
Los actores de amenazas también han intentado engañar a los desarrolladores para que instalen accidentalmente paquetes maliciosos explotando errores tipográficos comunes o utilizando ligeras variaciones en el nombre de un paquete legítimo (por ejemplo, «g00gle» en lugar de «google»). Semejante Ataques tipográficos continúan sin cesar, a pesar de los esfuerzos de las organizaciones y los mantenedores de PyPI y otros registros para protegerse contra ellos.
El desafío con Revival Hijack es que la técnica no depende de que la víctima cometa un error, como suele ocurrir con la escritura en cuclillas y algunos otros métodos de ataque. “Muchos usuarios consideran que actualizar un paquete ‘que alguna vez fue seguro’ a la última versión es una operación segura (¡aunque no debería serlo!)”, señaló JFrog. «Muchas máquinas de CI/CD ya están configuradas para instalar estos paquetes automáticamente».
Reutilizar nombres de paquetes abandonados
Según JFrog, cuando un desarrollador elimina un proyecto de PyPI, los nombres de sus paquetes inmediatamente quedan disponibles para todos los demás. Esto significa que un atacante puede secuestrar fácilmente los nombres de los paquetes e infectar a cualquier usuario de los paquetes originales que intente actualizar a la última versión. Cualquier usuario que quiera instalarlo por primera vez y asuma que es el original se vería igualmente afectado.
Para probar la efectividad del vector de ataque, los investigadores de JFrog primero crearon un proyecto vacío y lo publicaron en PyPI como «Revival-Package Version 1.0.0» usando una cuenta de prueba «Origin_Author». Después de publicar el proyecto, los investigadores lo eliminaron de PyPI y casi inmediatamente publicaron otro paquete vacío con el mismo nombre en PyPI, pero de una cuenta diferente «New_Authr» y con un número de versión diferente 4.0.0.
El ejercicio mostró que PyPI simplemente mostraba el segundo paquete vacío de JFrog como una nueva versión del «paquete de reactivación» original de la compañía, sin ninguna indicación de que contenía un código muy diferente. Si el paquete original de JFrog hubiera sido en realidad el código legítimo que estaban usando los desarrolladores, un sistema CI/CD habría descargado la «nueva» versión, asumiendo que era una actualización.
“Habiendo demostrado que secuestrar paquetes legítimos es fácil, [we] Decidimos analizar cuántos paquetes en PyPI eran vulnerables al ‘secuestro de reactivación’, lo que significa que fueron eliminados previamente y ahora pueden ser reemplazados/secuestrados”, dijo JFrog.
Una amenaza clara y presente
La búsqueda de los investigadores de JFrog reveló la asombrosa cifra de 120.000 paquetes remotos que los atacantes podrían potencialmente secuestrar para enviar malware a PyPI. Cuando los investigadores filtraron los resultados para incluir sólo paquetes que habían estado activos durante al menos meses o que los usuarios habían descargado anteriormente más de 100.000 veces, ese número se redujo a alrededor de 22.000 paquetes.
Para evitar que los atacantes abusen de estos nombres de paquetes abandonados, los investigadores de JFrog “secuestraron” los más populares de estos paquetes y los reemplazaron por otros vacíos. También se aseguraron de que el número de versión de todos los paquetes vacíos sea 0.0.0.1 para garantizar que nadie que utilice los paquetes originales descargue accidentalmente el paquete vacío como una actualización.
A pesar de esta precaución, los paquetes vacíos de JFrog se descargaron automática y manualmente casi 200.000 veces durante un período de tres meses. Esto demuestra que la amenaza de Revival Hijack es muy real, dijo el proveedor de seguridad. «Esto parece indicar que hay trabajos y scripts obsoletos que todavía están buscando paquetes eliminados, o que los usuarios han descargado estos paquetes manualmente debido a errores tipográficos», dijo JFrog.
En un escenario de ataque real, un atacante probablemente habría adjuntado un número de versión alto a cada paquete secuestrado para que los sistemas CI/CD los descargaran automáticamente pensando que eran actualizaciones, dijo JFrog. La empresa ha recomendado que PyPI prohíba por completo la reutilización de nombres de paquetes abandonados. Las organizaciones que utilizan PyPI también deben ser conscientes de este vector de ataque cuando actualizan a nuevas versiones de paquetes, advirtió JFrog.
Este contenido de ciberseguridad nos ha llegado de: DarkReading
Encontrarás la noticia original en el siguiente enlace: https://www.darkreading.com/application-security/revival-hijack-on-pypi-disguises-malware-with-legitimate-file-names