BookinglyTech News
Ciberseguridad

El ataque a npm de TanStack expuso 170 repositorios privados de CrowdSec

La empresa francesa dejó abierta la cuenta de un ex-empleado cuyo portátil cayó en el ataque a la cadena de suministro de TanStack, y un atacante copió su código.

3 min de lecturaThe Hacker News0 vistas

CrowdSec ha reconocido que un atacante copió cerca de 170 repositorios privados de su GitHub el pasado 22 de mayo. La compañía francesa de seguridad no había revocado el acceso del empleado cuya cuenta se usó: el trabajador acababa de dejar la empresa y mantenía permisos para terminar unos trabajos. El código apareció el 16 de septiembre en un foro, junto a las direcciones de correo de 83 usuarios y los datos personales de 51 inversores potenciales de 2020.

El punto de entrada fue el ataque a la cadena de suministro de TanStack. El 11 de mayo se publicaron 84 versiones maliciosas de 42 de sus paquetes npm, un incidente seguido como CVE-2026-45321. Instalar una de esas versiones ejecutaba código que robaba credenciales de la máquina: tokens de GitHub, claves SSH y credenciales de nube. El portátil del ex-empleado estaba comprometido, y once días después alguien usó el token OAuth de su cuenta para copiar el código. CrowdSec retiró esa cuenta de su organización el 25 de mayo, tres días después de la copia y meses antes de enterarse de la filtración.

Sin rastro en los registros

El token no dejó huella en los logs de GitHub que la empresa pudo consultar, y ya no existía cuando CrowdSec supo del incidente. Según su informe, el soporte de GitHub reconstruyó su historial y confirmó que la fuente era TanStack. La compañía no detalla qué paquete malicioso llegó al portátil del ex-empleado ni cuándo. Sí dice que revisó las máquinas de sus desarrolladores y no encontró nada.

El ataque alcanzó a más compañías. Mistral AI ha reconocido que un dispositivo de un desarrollador estuvo implicado en su caso, y OpenAI ha confirmado que dos dispositivos de empleados quedaron afectados, con acceso no autorizado a un conjunto limitado de repositorios internos.

Qué contenía el código

Los repositorios copiados no son el motor público de CrowdSec. Incluyen la consola web, scripts y modelos de ciencia de datos, automatizaciones y el algoritmo de consenso que decide qué direcciones IP acaban en las listas compartidas. La compañía asegura que ese código tiene casi cuatro meses y ha cambiado bastante desde entonces. También se filtraron los umbrales del algoritmo, que no eran públicos: cuántas detecciones hacen falta para bloquear una IP. CrowdSec sostiene que la lista sigue sin poder envenenarse, porque haría falta reunir decenas de detecciones de decenas de motores de confianza en otras tantas redes, a un coste altísimo.

De todas las credenciales presentes en el código, solo una seguía siendo usable: la del servicio de notificaciones SNS de AWS, que únicamente permite publicar mensajes en un tema. Alguien intentó usarla el 17 de agosto, un mes antes de que el código se publicara, sin éxito. El resto ya se habían rotado o no se pueden emplear desde internet.

El primer comunicado de CrowdSec, del 17 de septiembre, decía que no se había filtrado "ningún dato de cliente, login/contraseña, nombre, organización ni nada parecido". El informe del día siguiente, en cambio, enumera los correos de los 83 usuarios y los nombres de los inversores. La empresa rotó las credenciales expuestas el 16 y 17 de septiembre, y ahora exige software de protección de endpoint en los portátiles de quien toca su código. Antes no lo hacía. El CEO, Philippe Humeau, se ha disculpado ante los inversores en el propio informe.

La cadena de suministro de npm vuelve a demostrar que el eslabón débil rara vez es el código: es una cuenta que nadie cerró a tiempo y un portátil sin protección en un momento concreto. CrowdSec dice que ya ha corregido ambas cosas. Lo que no puede deshacer es la copia.