Las amistades peligrosas (o cómo una colaboración disfrazada en Github puede arruinarte el día)
Siempre es fascinante observar cómo la maldad se vale de la creatividad para abonar nuevos campos de cultivo. Este fenómeno ocurre sobre todo cuando las técnicas que en su día les fueron productivas terminan por quemarse; ya sea porque el truco se ha visto muchas veces o porque la tecnología afectada pasa a ser retirada.
Claro que existen auténticos revivals. Por ejemplo, el resurgir del malware que infecta a través de macros de Office. Algo que ya se creía acabado y que por azares del destino (en realidad, no, hay razones técnicas que ayudan a que el truco vuelva a funcionar) vuelve a la palestra. De hecho, en realidad no importa tanto la técnica como si resulta o no rentable.
Ya hemos dicho alguna que otra vez que encontrar una nueva vulnerabilidad es una empresa costosa, más si esperamos que su impacto sea grave y su vector requiera de la menor interacción con el usuario.
La vía fácil es que el propio usuario contribuya a infectarse, naturalmente, a expensas de montar un buen engaño.
El timo de la estampita renacido. ¿Para qué te vas a dejar los sesos en buscar un fallo grave cuando el comportamiento humano ya viene de fabrica con unos cuantos?
Es lo que le ha pasado a un buen puñado de repositorios en Github, que han recibido colaboraciones altruistas disfrazadas de DependaBot (luego definimos esto) con código malicioso que tenía por intención robar credenciales de una forma cabriolesca.

Si algún desarrollador despistado aceptaba la colaboración de código (en forma de pull request) lo que hacía es inyectar código malicioso en el repositorio para birlar los datos marcados como “secret” (no se comparten con el público).
Además, modificaba los archivos Javascript del proyecto para interceptar las peticiones procedentes de formularios y robarlas.
Secuencia del ataque
Eres mantenedor de un popular proyecto en Github. Una librería Python que se usa en multitud de proyectos de aplicaciones web. Es decir, eres una dependencia para esos proyectos, un tercero que los provee.
A su vez, tú tendrás dependencias de otros terceros en tu propio proyecto. Todo normal y correcto. Además, Github tiene un bot maravilloso que te gestiona esas dependencias y te dice cuándo deberías actualizarlas, sobre todo por corrección de fallos de seguridad (gran herramienta). Ese bot es DependaBot y soluciona el problema que comentamos: estar pendiente de las actualizaciones de tus dependencias.
El caso es que te acostumbras tanto a DependaBot que le atribuyes muchísima fiabilidad y multitud de desarrolladores cuando les llega una petición de DependaBot aprietan el botón de “merge” (aceptar las modificaciones a tu proyecto) sin pensarlo dos veces. Hay confianza, el valor de la colaboración es alto y si no colaboras es que tienes pendiente resolver una dependencia vulnerable.
Pues ese lazo de confianza es el que se ha estado explotando.
Con un disfraz de DependaBot, desde cuentas de terceros, han tomado su icono y nombre para realizar cambios en ciertos proyectos.
Como los desarrolladores confían en DependaBot, muchos de ellos aceptaban los cambios bajo la premisa que ya hemos comentado: la confianza, sin saber que en realidad estaban realizando más cambios de la cuenta y dejando la librería infectada.
Pesca de arrastre para cedenciales y datos de usuarios
El siguiente paso era esperar a que otros proyectos que dependan de esa librería actualicen a la versión vulnerable y, una vez desplegado el proyecto a producción, se producía la pesca de arrastre capturando las credenciales y datos de usuarios a través de los formularios de la web afectada.
Es, a grandes rasgos, una variante pobre de ataques de supply chain más sofisticados de los que hemos sido testigo. Donde para atacar a un tercero, primero abordaron a la empresa que poseía el control de una dependencia de estos y sibilinamente inyectaron sus artes de pesca en una librería para que les abriese la puerta de la cocina a los atacantes.
De hecho, es ya capítulo propio el menester de administrar no solo la seguridad de tu empresa o tu propiedad intelectual, sino que ya debes tener las largas puestas en las dependencias que dejas meter en tus proyectos y, a partir de ahora, las colaboraciones públicas, tanto tuyas como de los que invitas a casa. Véase la sección correspondiente en ATT&CK.
Algo para llevar
Aquí se explota, una vez más, la confianza. Ese componente humano tan necesario como débil para construir una sociedad.
Prestando atención al escenario montado para dar credibilidad al engaño, no difiere mucho de cualquier phishing bien tirado, arropándose de la imagen y el verbo común para dar gato por liebre.
De hecho, esto entraría más en la categoría de phishing usando un vehículo poco común que un ataque de cadena de suministro, aunque tiene rasgos de ambas circunscripciones. El primero no asusta, pero confunde y el segundo no lo ves venir y cuando te afecta ya es tarde para la sorpresa.
Al final, lo mismo de estas ocasiones: en Ciberseguridad, si algo vuela y tiene alas puede que no sea un pájaro, sino una bola de cañón con trayectoria hacia la Santa Bárbara.
💬 Para recibir noticias y reflexiones de nuestros expertos en Ciberseguridad, suscríbete a CyberSecurityPulse, nuestro canal en Telegram: https://t.me/cybersecuritypulse
Imagen de Yancy Min en Unsplash.