Una nueva investigación de Aqua Nautilus arroja luz sobre el alcance de RepoJacking, que, si se explota, puede conducir a la ejecución de código en los entornos internos de las organizaciones o en los entornos de sus clientes. Como parte de la investigación, encontraron una enorme fuente de datos que permitió probar RepoJacking en algunos objetivos muy populares.
Entre los repositorios que se encontraron vulnerables a este ataque descubrieron organizaciones como Google, Lyft y algunas que solicitaron permanecer en el anonimato. Todos fueron notificados de esta vulnerabilidad y mitigaron rápidamente los riesgos. En su post, la empresa muestra cómo un atacante puede explotar esto a escala y comparten la PoC que ejecutaron en repositorios populares.
¿Qué es el RepoJacking?
El secuestro de repositorios de dependencias (también conocido como secuestro de repositorios) es una vulnerabilidad "oscura" de la cadena de suministro, conceptualmente similar a la adquisición de subdominios, que según Security Innovation e 2020 ya afectaba a más de 70.000 proyectos de código abierto y afecta todo, desde marcos web hasta criptomonedas.
¿Quién puede ser vulnerable?
Todo proyecto cuya compilación dependa de un código enlazado dinámicamente desde los repositorios de GitHub es potencialmente vulnerable. Para que un proyecto sea vulnerable, deben suceder las siguientes dos cosas:
- Su código debe hacer referencia directamente a un repositorio de GitHub (generalmente como una dependencia).
- El propietario de ese repositorio debe cambiar/eliminar su nombre de usuario.
Cuando el propietario del repositorio vinculado cambia su nombre de usuario, queda inmediatamente disponible para que cualquiera pueda volver a registrarlo. Esto significa que cualquier proyecto que se vinculó a la URL del repositorio original ahora se ha vuelto vulnerable a la inyección remota de código a través del secuestro de dependencias. Un atacante malicioso puede registrar el antiguo nombre de usuario de GitHub, recrear el repositorio y usarlo para enviar código malicioso a cualquier proyecto que dependa de él.
En contraste con estudios anteriores, la investigación enfatiza las implicaciones de seguridad y la gravedad del ataque si los atacantes la explotan.
¿Estoy expuesto a RepoJacking?
Usted puede preguntarse; ¿Tengo repositorios que son directa o indirectamente vulnerables a RepoJacking? La respuesta rápida es que las posibilidades de exposición son infinitas. Hay algunas preguntas básicas que debe hacer si cree que puede estar expuesto.
- ¿Qué sabes de tu organización?
- ¿Cuáles son todos los nombres de organizaciones de GitHub que usaste antes?
- ¿Hubo fusiones y adquisiciones en las que estuvo involucrada su organización?
- ¿Hay alguna dependencia en mi código que conduzca a un repositorio de GitHub vulnerable a RepoJacking?
- ¿Hay alguna guía en alguna parte (documentación, guías, respuesta de desbordamiento de pila, etc.) que sugiera que debe usar un repositorio de GitHub vulnerable a RepoJacking?
Como se dijo anteriormente, las posibilidades de exposición son infinitas y, dependiendo de las respuestas a cualquiera de estas preguntas, es posible que su organización sea vulnerable.
Restricciones y omisiones de RepoJacking:
Existen algunas restricciones sobre la capacidad del atacante de abrir el antiguo nombre del repositorio (las restricciones se denominan nombres retirados). Sin embargo, se aplican solo en repositorios populares que eran populares antes del cambio de nombre, y recientemente los investigadores encontraron muchas omisiones a estas restricciones que permiten a los atacantes abrir cualquier repositorio que deseen.
Las organizaciones no deben depender de los nombres retirados como mecanismo de seguridad, por lo que en esta investigación, un repositorio vulnerable es un repositorio que se redirige y el nombre de la organización ya no existe.
Compilación de un conjunto de datos para la investigación
Los atacantes pueden escanear Internet y encontrar cualquier víctima que deseen y si sienten que hay ganancias detrás del ataque, continuarán hasta que maximicen sus ganancias. Sitios web como el proyecto GHTorrent brindan datos asombrosos e invaluables.
El proyecto GHTorrent registra cualquier evento público (commit, PR, etc.) que suceda en Github y lo guarda en una base de datos. Cualquiera puede descargar la base de un período de tiempo específico. Al utilizar este conjunto de datos, los actores maliciosos pueden descubrir los nombres históricos de varias organizaciones y ampliar su superficie de ataque potencial.
En la imagen a continuación, puede ver lo fácil que es encontrar un marco de tiempo específico y descargarlo.
Básicamente, todo el historial de nombres de usuario y nombres de organizaciones en GitHub desde 2012 es fácilmente accesible para cualquier persona. Es importante señalar que durante la investigación estuvo disponible el sitio web ghtorrent.org, sin embargo, actualmente no está en línea, pero el conjunto de datos todavía existe en http://ghtorrent-downloads.ewi.tudelft.nl/mysql.
La investigación comenzó a partir de una muestra de datos hallados en ese sitio web. Los investigadores descargaron todos los registros de un mes aleatorio (junio de 2019) y compilaron una lista de 125 millones de nombres de repositorios únicos. A continuación, probaron el 1% (1,25 millones de nombres de repositorios) y verificaron cada uno para ver si era vulnerable a RepoJacking.
¡Encontraron que 36.983 repositorios eran vulnerables a RepoJacking! Esa es una tasa de éxito del 2,95%. Si extrapolamos el resultado que encontramos en esta muestra, a toda la base de repositorios de GitHub (más de 300 millones de repositorios según las publicaciones de GitHub), ¡hay potencialmente millones de repositorios vulnerables!
Fuente: AquaSec