CVE-2026-45321: Vulnerabilidad crítica en TanStack permite robo de credenciales mediante paquetes npm maliciosos
Introducción: Compromiso de la cadena de suministro en TanStack
El ecosistema de desarrollo JavaScript ha sido sacudido por la divulgación del CVE-2026-45321, una vulnerabilidad activamente explotada que afecta al proyecto TanStack, ampliamente utilizado en aplicaciones web modernas. Esta vulnerabilidad ha sido añadida al catálogo de Known Exploited Vulnerabilities (KEV) de la Agencia de Ciberseguridad e Infraestructura de EE.UU. (CISA), lo que confirma su explotación activa en entornos reales.
La naturaleza del fallo es especialmente preocupante: un actor malicioso logró abusar de un mecanismo no especificado dentro de la infraestructura de TanStack para publicar versiones maliciosas del paquete en el registro de npm, aprovechando la identidad de confianza del proyecto legítimo. Esto convierte este incidente en un ataque de cadena de suministro de software (software supply chain attack) de alto impacto.
Análisis Técnico
Según el aviso de seguridad oficial del repositorio de TanStack en GitHub (GHSA-g7cv-rxg3-hmpx), la vulnerabilidad permitió que versiones no autorizadas del paquete fueran publicadas bajo el nombre y la identidad del proyecto TanStack en el registro público de npm. Estas versiones maliciosas contenían malware diseñado para robar credenciales (credential-stealing malware), que podría ejecutarse en el contexto de entornos de desarrollo, pipelines de integración continua (CI/CD) o sistemas de producción que instalaran el paquete comprometido.
Vector de ataque y mecánica de explotación
Si bien los detalles técnicos específicos del mecanismo de compromiso no han sido completamente divulgados públicamente en el momento de esta publicación, el patrón observado es consistente con los siguientes vectores típicos en ataques de cadena de suministro sobre npm:
- Compromiso de tokens de publicación de npm: Acceso no autorizado a las credenciales o tokens de acceso utilizados para publicar paquetes en el registro npm bajo la cuenta del mantenedor legítimo.
- Compromiso de cuentas de mantenedor: Toma de control (account takeover) de las cuentas de los contribuidores con permisos de publicación mediante phishing, reutilización de contraseñas o exposición de secretos en repositorios.
- Inyección en pipelines de CI/CD: Manipulación de los flujos de automatización que gestionan las publicaciones de paquetes para incluir código malicioso antes de la distribución.
- Typosquatting bajo identidad confiable: Abuso de la reputación establecida del paquete TanStack para eludir las defensas basadas en reputación y análisis de proveniencia.
Comportamiento del malware de robo de credenciales
El malware empaquetado en las versiones comprometidas está diseñado para ejecutarse durante la instalación o importación del paquete. Los comportamientos típicos de este tipo de credential-stealing malware distribuido a través de npm incluyen:
- Lectura y exfiltración de archivos de configuración con credenciales almacenadas, como
~/.npmrc,~/.aws/credentials,.envy tokens de servicios en la nube. - Captura de variables de entorno del sistema, donde frecuentemente se almacenan claves de API, tokens de acceso y contraseñas en entornos CI/CD.
- Exfiltración de datos hacia infraestructura controlada por el atacante mediante peticiones HTTP/S a servidores remotos.
- Persistencia en el entorno comprometido para mantener el acceso incluso tras la eliminación del paquete malicioso.
La ausencia de una puntuación CVSS oficial en el momento de la publicación refleja que el análisis formal de la vulnerabilidad aún está en curso, aunque la inclusión en el KEV de CISA confirma inequívocamente su explotación activa. La clasificación de CWE tampoco ha sido especificada formalmente, aunque el perfil del ataque se alinea con debilidades relacionadas con CWE-506 (Embedded Malicious Code) y CWE-494 (Download of Code Without Integrity Check).
Impacto y Riesgo
El impacto de este tipo de vulnerabilidad en la cadena de suministro es significativamente elevado por múltiples razones:
- Alcance masivo: TanStack es una familia de bibliotecas JavaScript/TypeScript con decenas de millones de descargas mensuales en npm, utilizada en proyectos empresariales a nivel global.
- Confianza implícita: Los desarrolladores confían en la integridad de paquetes de proyectos reconocidos. La publicación bajo una identidad legítima reduce drásticamente las barreras de detección.
- Entornos CI/CD como vectores de amplificación: Los pipelines de integración y despliegue continuo que instalan dependencias automáticamente pueden verse comprometidos de forma silenciosa, exfiltrando secretos de acceso a infraestructuras críticas.
- Potencial de movimiento lateral: Las credenciales robadas pueden utilizarse para comprometer repositorios de código fuente, cuentas cloud, bases de datos y otros sistemas dentro de la organización víctima.
- Uso en ransomware no descartado: CISA clasifica el uso en ransomware como Unknown (desconocido). Esto significa que, aunque no se ha confirmado su uso directo en campañas de ransomware, tampoco puede descartarse. Las credenciales robadas son frecuentemente utilizadas como punto de entrada por grupos de ransomware para el acceso inicial.
CISA también advierte que esta vulnerabilidad "podría afectar a un componente de código abierto, biblioteca de terceros, protocolo o implementación propietaria utilizada por diferentes productos", lo que amplía potencialmente la superficie de impacto más allá del ecosistema directo de TanStack.
Productos y Versiones Afectadas
Según la información disponible, los productos afectados pertenecen al ecosistema TanStack publicado en el registro npm. Esto incluye, entre otros, los siguientes paquetes bajo la organización TanStack:
@tanstack/router— librería de enrutamiento para aplicaciones React, Vue, Solid y Angular.- Potencialmente otros paquetes del ecosistema TanStack publicados durante el periodo de compromiso.
Se recomienda consultar directamente el aviso oficial en GHSA-g7cv-rxg3-hmpx para obtener el listado actualizado de versiones específicas comprometidas, ya que esta información puede ser actualizada por los mantenedores del proyecto.
Recomendaciones y Mitigaciones
CISA exige que las agencias del gobierno federal de EE.UU. bajo el ámbito de la BOD 22-01 apliquen las mitigaciones disponibles o descontinúen el uso del producto si no existen mitigaciones aplicables. Para el resto de organizaciones, se recomienda encarecidamente adoptar las siguientes medidas:
Acciones inmediatas
- Auditar dependencias npm: Revisar el archivo
package-lock.jsonoyarn.lockde todos los proyectos para identificar si se instalaron versiones comprometidas de paquetes TanStack durante el periodo afectado. - Actualizar a versiones seguras: Aplicar las actualizaciones proporcionadas por los mantenedores de TanStack según las indicaciones del aviso oficial. No instalar versiones publicadas durante el periodo de compromiso sin verificar su integridad.
- Rotar credenciales potencialmente expuestas: Si se instalaron versiones comprometidas, asumir que todas las credenciales accesibles en el entorno (tokens de npm, claves AWS, tokens de GitHub, variables de entorno CI/CD) han sido exfiltradas y proceder a su rotación inmediata.
- Analizar artefactos de instalación: Revisar los logs de instalación de npm y los scripts de postinstall/preinstall en busca de comportamientos anómalos o conexiones de red inesperadas.
Medidas de hardening y detección
- Implementar Software Composition Analysis (SCA) en los pipelines de CI/CD para detectar paquetes con comportamientos maliciosos o cambios inesperados en la integridad de los paquetes.
- Habilitar la verificación de integridad mediante npm audit y herramientas complementarias como
socket.devoSnyk. - Restringir el acceso a internet desde entornos de compilación y CI/CD mediante firewalls de aplicación y proxies de inspección de contenido.
- Utilizar registros de npm privados (Artifactory, Nexus, Verdaccio) con políticas de aprobación de paquetes para controlar qué versiones son accesibles en el entorno corporativo.
- Implementar la directiva
ignore-scripts=trueen la configuración de npm para proyectos donde no sea necesaria la ejecución de scripts durante la instalación. - Monitorizar conexiones de red salientes desde sistemas de desarrollo y CI/CD hacia destinos inusuales o no autorizados.
- Aplicar el principio de