RepoJacking: Repositorios de GitHub bajo amenaza

Una gran cantidad de repositorios de GitHub podrían ser vulnerados mediante el secuestro (hijacking) de repositorios de dependencias el cual se denomina “RepoJacking”. Esta modalidad tiene como objetivo el ataque a la cadena de suministros, lo que resulta en una gran cantidad de usuarios afectados.

Las observaciones realizadas a ataques de tipo RepoJacking cortesía de Nautilus, luego de que estos condujeran una investigación donde se analizaron muestras de 1.25 millones de repositorios de GitHub. La misma arrojaría que cerca de 2.95% de los repositorios analizados son vulnerables a ataques de RepoJacking.

¿Qué es RepoJacking?

Básicamente, un ataque de RepoJacking hace referencia al aprovechamiento, por parte de un actor malicioso, de un repositorio creado por un usuario legítimo que posteriormente cambia de nombre, permitiendo así, que los actores maliciosos hagan uso de la credibilidad del usuario/organización que creo el repositorio inicial, y mediante la adopción del nombre que se utilizó al inicio puede conducir ataques a la cadena de suministros.

El cambio de nombres de usuario y repositorios, son practicar recurrentes en GitHub y esto se puede deber a distintos factores como un cambio en la gerencia de la organización que creara el repositorio, o bien sencillamente, un cambio de marca.

GitHub por su parte, es consciente de este hecho por lo que el actor malicioso que desea conducir este ataque se topa con algunas restricciones (estas restricciones se encuentran bajo “nombres retirados”) que dificulta la reapertura de nombres de viejos repositorios. Sin embargo, esta medida se aplica a aquellos repositorios que en su momento fueron populares y luego cambiaron de nombre, sin embargo, y como se ha visto en distintas ocasiones, existen maneras de eludir estas restricciones.

Al momento de interpolar los porcentajes de las observaciones en la muestra de 1.25 millones de repositorios, los investigadores estiman que, de todos los repositorios existentes en GitHub (más de 300 millones) un aproximado de 9 millones de proyectos podrían ser afectados por esta modalidad.

Según las observaciones realizadas, se puede deducir que los actores maliciosos detrás de los ataques RepoJacking no tienen organizaciones específicas como objetivo, estos aprovechan cualquier victima que cumpla algunos criterios. Esto lo hacen con la ayuda de algunos sitios web, como es el caso de GHTorrent, el cual recopila cualquier evento publico que tiene lugar en Github y la amacena en una base de datos.

Escenarios

Un atacante puede explotar esta falla en GitHub, mediante la utilización de referencias publicas en internet de los nombres originales o previos, de un repositorio. La explotación de esta falla se puede dividir en dos categorías: automatizado y manual.

Una descarga automatizada de un repositorio RepoJacking sucede cuando un usuario sin deseo o conocimiento descarga algún recurso desde otor repositorio de GitHub.

Por otro lado, una descarga manual de un repositorio RepoJacking sucede cuando un usuario, activamente, inserta el enlace al repositorio RepoJacking.

Entre los repositorios analizados, se pudo observar casos explotables de repositorios gestionados por Google y Lyft.

Para el caso de la muestra analizada de Google (manual), se pudo observar en la sección de “readme” las instrucciones sobre la construcción del popular proyecto “Mathsteps” perteneciente a Socratic, la cual fuera una compañía adquirida y asimilada por Google en el 2018 y que actualmente ya no existe.

Debido a que el actor malicioso puede clonar el repositorio para romper el redireccionamiento, todos los usuarios que signa las instrucciones en el archivo “readme” podrían descargar en su lugar, código malicioso desde el repositorio corrupto. Y debido a la instalación npm, esto llevaría a la ejecución de código arbitrario en los usuarios.

Para la muestra analizada de Lyft (Automatizado) se pudo observar un script de instalación en el repositrio de la compañía el cual recupera un archivo .zip desde otro repositorio (https://github.com/YesGraph/Dominus), el cual es vulnerable a RepoJacking. Este script extrae un archivo comprimido y posteriormente ejecuta el script de Shell extraído.

El usuario que hace uso del script “install.sh” en el repositorio de Lyft recuperará, sin darse cuenta, un archivo y lo ejecutará desde otro repositorio. Siempre y cuando el redireccionamiento entre el nuevo y viejo repositorio funcione, todo estará bien. Sin embargo, ya que el repositorio es vulnerable a RepoJacking, un actor malicioso podría fácilmente abrir la organización “YesGraph”, por ejemplo, el cual se encuentra disponible y crear el repositorio “Dominus”, lo que conduciría a una ejecución de código arbitrario en el repositorio original del usuario.

Estas revelaciones dan una semana después de que se observaran repositorios en Github de supuestos PoC para vulnerabilidades “Zero-day” por parte de actores maliciosos que se hacen pasar por investigadores de ciber seguridad pertenecientes a una empresa de ciber seguridad inexistente (High Sierra Cyber Security). Esto resalta la importancia de los repositorios en esta plataforma como parte de ataques a la cadena de suministros e investigadores de ciber seguridad.

Por lo anterior, se recomienda que se haga un chequeo regular de los repositorios que una organización pudiera tener, cualquier enlace que pueda “ir a buscar” algún recurso a repositorios externos, así como asegurarse la pertenencia de cualquier repositorio que haya cambiado de nombre, incluso como marcador de posición, para evitar que los atacantes lo creen.

Related Post