Cómo hacer Repojacking al repositorios de GitHub, para realizar ataques a la cadena de suministro

Los investigadores han descubierto una nueva vulnerabilidad en GitHub que podría permitir a un atacante aprovechar una situación de carrera en el proceso de crear un repositorio en GitHub o cambiar un nombre de usuario en la plataforma. Este enfoque se puede utilizar para llevar a cabo un ataque conocido como repojacking. La explotación exitosa de esta vulnerabilidad tiene un efecto negativo en la comunidad de código abierto, ya que permite el secuestro de más de 4.000 paquetes de código escritos en lenguajes como Go, PHP y Swift, así como actividades en GitHub. Un adversario podría obtener el control de un repositorio de vulnerabilidades en GitHub mediante el uso de una técnica conocida como “repo jacking”. Esta técnica implica aprovechar una falla lógica que hace visibles a los usuarios vulnerables con cuentas renombradas.

Cuando un hacker apunta a GitHub, quiere adquirir el control de un espacio de nombres válido que se utiliza mucho. El nombre de usuario y el nombre del repositorio se combinan para generar un espacio de nombres. Un adversario podría obtener el control de un repositorio de vulnerabilidades en GitHub mediante el uso de una técnica conocida como “repo jacking”. Esta técnica implica aprovechar una falla lógica que hace visibles a los usuarios vulnerables con cuentas renombradas.

Cuando se cambia el nombre de usuario inicial de un espacio de nombres utilizando la opción “cambio de nombre de usuario” de GitHub, aumenta la vulnerabilidad del espacio de nombres al repojacking. El proceso de cambiar un nombre de usuario es sencillo y rápido. Una advertencia hace muy evidente que el nuevo repositorio recibirá todo el tráfico que se envió previamente a la URL del repositorio anterior.

Es importante tener en cuenta que la siguiente consecuencia se describe en la documentación que GitHub proporciona para esta función: “Después de cambiar su nombre de usuario, su antiguo nombre de usuario estará disponible para que cualquier otra persona lo reclame”. “Una vez que se cambia el nombre del nombre de usuario, un atacante puede reclamar el nombre de usuario anterior, abrir un repositorio con el nombre del repositorio correspondiente y secuestrar el espacio de nombres”, agregaron los investigadores.

Además, el uso de esta derivación puede conducir a la adquisición de actividades populares de GitHub, que se utilizan de manera similar al otorgar un espacio de nombres de GitHub. Este sería el caso si se utilizara el bypass.

Es posible que se desencadenen ataques a la cadena de suministro a gran escala con impactos de gran alcance al envenenar una actividad popular en GitHub. Una investigación reciente realizada por Aqua encontró que incluso grandes corporaciones como Google y Lyft eran vulnerables a este tipo de ciberataque. Esto resalta cuán grave es la vulnerabilidad, ya que tiene el potencial de dañar algunas de las marcas más conocidas en la industria de la tecnología de la información, muchas de las cuales ya han tomado medidas inmediatas para mitigar los riesgos después de que se les informó sobre la vulnerabilidad.

GitHub ha introducido una medida preventiva conocida como “retiro del espacio de nombres del repositorio popular” para mitigar los efectos de esta conducta posiblemente dañina.

Según esta política, cualquier repositorio que tenga más de cien clones cuando se cambia la cuenta de usuario asociada se considera “retirado” y es inaccesible para otros usuarios.

Se recomienda evitar los espacios de nombres retirados para limitar la superficie de ataque. También debes asegurarte de que el código que estás utilizando no tenga ninguna dependencia que pueda conducir a un repositorio en GitHub que sea vulnerable a ser secuestrado por repojackers.