1 de noviembre de 2022

Bug en GitHub permitiría a un atacante suplantar repositorios

El servicio de hosting de repositorios de código en la nube GitHub ha identificado un fallo de seguridad grave que podría haberse explotado para tomar el control de repositorios ajenos y crear ataques a cadenas de suministro de software.

Antecedentes

Este tipo de ataque, denominado repojacking, ocurre cuando el creador de un repositorio decide cambiar su nombre de usuario. Esto implica que la URL del repositorio cambiaría de usuario/repo a nuevousuario/repo. Durante el proceso de renombrado, un atacante puede cambiar su nombre de usuario al nombre antiguo que utilizaba la víctima y crear un repositorio bajo el mismo nombre, suplantándolo.

Como contramedida, si se clona un repositorio más de 100 veces durante la semana en la que el dueño del repositorio cambia su nombre de usuario, ese repositorio está «retirado» (retired). Esto significa que la combinación de nombre de usuario y nombre de repositorio no se puede volver a registrar. Si el repositorio usuario/repo ha sido clonado más de 100 veces esta semana, su dueño cambia su nombre de usuario y después otra persona intenta crear un repositorio en la URL usuario/repo, no podrá hacerlo.

Descripción del ataque

Sin embargo, Checkmarx ha revelado que esta protección no es suficiente. En un artículo publicado el 26 de octubre, se muestra una manera de evadir el mecanismo de retiro de repositorios populares (popular repository namespace retirement) utilizando una cuenta auxiliar y la funcionalidad de transferencia de repositorios de GitHub. El procedimiento es el siguiente:

  1. El atacante crea un repositorio con el mismo nombre que el repositorio retirado (por ejemplo, repo), pero bajo un nombre de usuario diferente (por ejemplo, cómplice).
  2. Cómplice transfiere la propiedad del repositorio repo al atacante.
  3. Atacante renombra su usuario al nombre de usuario original de la víctima (por ejemplo, víctima). De esta forma, el repositorio víctima/repo queda bajo el control del actor malicioso.

Checkmarx ha encontrado la vulnerabilidad el 13 de junio de 2022 y GitHub la eliminó tres meses después, el 19 de septiembre.

Conclusiones

De haberse explotado esta vulnerabilidad, más de 10.000 paquetes alojados en gestores de paquetes como Packagist, Go o Swift estarían en riesgo. Además, al tomar el control de las GitHub Actions, que también pueden robarse mediante el ataque anteriormente descrito, es posible envenenar las cadenas de suministro de software, con graves repercusiones.

Además, para identificar paquetes susceptibles de ser víctimas de repojacking, Checkmarx ha publicado la herramienta Chainjacking.

En todo caso, puede que el exploit de Checkmarx no sea la única forma de tomar el control de un repositorio ajeno a partir de un cambio de nombre de usuario.

Más información:

La entrada Bug en GitHub permitiría a un atacante suplantar repositorios se publicó primero en Una al Día.



☞ El artículo completo original de Daniel Pérez Porras lo puedes ver aquí

No hay comentarios.:

Publicar un comentario