• Saltar al contenido principal
  • Saltar a la barra lateral principal
  • Saltar al pie de página

Una Al Día

Boletín de noticias de Seguridad Informática ofrecido por Hispasec

Usted está aquí: Inicio / General / Grafana atribuye el acceso a repositorios privados a un token de GitHub Actions que no se rotó tras el ataque a TanStack

Grafana atribuye el acceso a repositorios privados a un token de GitHub Actions que no se rotó tras el ataque a TanStack

21 mayo, 2026 Por Hispasec Deja un comentario

Grafana confirmó un acceso no autorizado a repositorios privados tras quedarse sin rotar un token de GitHub Actions expuesto durante el ataque de cadena de suministro a TanStack en npm. Se descargaron código fuente e información operativa y de contactos, sin señales de cambios en el código ni impacto en entornos de producción de clientes o en Grafana Cloud.

Entry image

Más allá del malware en dependencias, este incidente muestra cómo un fallo de higiene en CI/CD puede convertir una intrusión limitada en un problema mayor: basta con que una sola credencial quede fuera del proceso de contención para reabrir la puerta. En el caso de Grafana Labs, el vector inicial se relaciona con el compromiso de la cadena de suministro de TanStack en npm, que llevó a la exposición de credenciales dentro de su entorno de GitHub Actions.

El ataque a TanStack se concentró en una ventana muy corta, el 11 de mayo de 2026 entre las 19:20 y las 19:26 UTC, y consistió en la publicación de decenas de versiones maliciosas, 84 en total, repartidas en 42 paquetes @tanstack/. La campaña abusó de OIDC Trusted Publishing de GitHub Actions, lo que permitió publicar en el registro con un token OIDC obtenido durante un workflow, sin depender de tokens de npm de larga duración. A nivel técnico, se ha descrito una cadena que combina un workflow con pull_request_target, un patrón conocido como Pwn Request, junto con cache poisoning en las cachés de GitHub Actions* entre forks y el repositorio base, y la extracción de secretos desde la memoria del runner.

Dentro de esos paquetes, los manifiestos incluían una optionalDependency que apuntaba a un commit huérfano en GitHub, usando el nombre ficticio @tanstack/setup y la referencia github:tanstack/router#79ac49eedf774dd4b0cfa308722bc463cfe5885c. La carga útil, identificada como router_init.js y con un tamaño aproximado de 2,3 MB, se ejecutaba durante la instalación a través de scripts del ecosistema npm, y realizaba robo de credenciales. La exfiltración se apoyaba en infraestructura asociada a Session, destacando filev2.getsession.org y varios seed*.getsession.org, con comunicaciones cifradas de extremo a extremo. Además, se observaron comportamientos de propagación tipo gusano, ya que el malware enumeraba paquetes mantenidos por la víctima y republicaba versiones comprometidas, maximizando el alcance dentro del ecosistema.

En Grafana, esa fase inicial permitió que se filtraran tokens de workflows. La compañía detectó actividad maliciosa el 1 de mayo y rotó numerosos tokens de GitHub Actions como parte de la respuesta. Sin embargo, una credencial concreta quedó fuera del proceso de rotación, y ese token ‘rezagado’ se utilizó después para acceder a repositorios privados. El resultado confirmado fue la descarga de código fuente, además de información operativa y datos de contactos comerciales, como nombres y correos empleados en relaciones profesionales.

En paralelo, la actividad maliciosa vinculada a TanStack se detectó el 11 de mayo de 2026 y la extorsión a Grafana se recibió el 16 de mayo de 2026. La organización notificó a autoridades federales y optó por no pagar, en línea con la recomendación del FBI de no negociar pagos. En cuanto al impacto, el alcance confirmado se limita al entorno de GitHub de la compañía, sin evidencias de compromiso de Grafana Cloud ni de sistemas de producción u operaciones de clientes. También se indicó que no se modificó el código durante el incidente, por lo que el código descargado por usuarios en ese periodo se considera seguro.

Para equipos que operan pipelines similares, la lección principal es operativa: tras cualquier indicio de exfiltración, hay que inventariar y rotar de forma completa todas las credenciales usadas en CI/CD, sin excluir workflows por una clasificación errónea. Es clave revisar jobs que consumieron dependencias potencialmente afectadas y qué secretos estuvieron disponibles en ejecución, aplicar mínimo privilegio al GITHUB_TOKEN y a los permisos de workflows, y reforzar la observabilidad con alertas por autenticaciones inusuales, clones o descargas masivas de repositorios privados.

En defensa de la cadena de suministro, conviene endurecer el consumo de dependencias con pinning de versiones, controles de integridad y revisiones antes de ejecutar en CI. En momentos de alto riesgo, se puede recurrir temporalmente a instalaciones más estrictas, como npm ci o pnpm con frozen lockfile, e incluso usar ignore scripts como control defensivo mientras se valida la integridad. Si existe sospecha de cache poisoning, es recomendable purgar y rotar cachés de GitHub Actions y de gestores de paquetes, incluido el almacén de pnpm, antes de reanudar publicaciones.

También se han descrito mecanismos de persistencia fuera de node_modules, con artefactos en directorios .vscode y .claude, que pueden sobrevivir a un borrado de dependencias. Se documentó un componente destructivo, gh-token-monitor, con persistencia en macOS mediante LaunchAgents y en Linux mediante systemd de usuario, capaz de borrar el directorio home si detecta revocación del token. Por ello, antes de revocar tokens potencialmente expuestos, conviene buscar y eliminar persistencia para reducir el riesgo de acciones destructivas.

Como verificación concreta, se recomienda buscar en lockfiles y artefactos de build la huella @tanstack/setup con la referencia github:tanstack/router#79ac49eedf774dd4b0cfa308722bc463cfe5885c y tratar cualquier coincidencia como incidente. Otra práctica útil es validar versiones sin ejecutar scripts, por ejemplo descargando el tarball con npm pack para revisar el package.json y detectar la presencia de router_init.js. En paralelo, bloquear y monitorizar tráfico saliente hacia filev2.getsession.org y seed*.getsession.org, además de cualquier IOC confirmado, ayuda a cortar la exfiltración.

Por último, si se utiliza OIDC Trusted Publishing para npm, merece la pena limitar su alcance a un workflow concreto y a una rama protegida, evitando confianza a nivel de repositorio cuando sea posible. Y, de forma crítica, incorporar un paso de verificación post incidente que confirme con evidencias que la rotación de todos los tokens y secretos se completó de verdad, para que no vuelva a ocurrir lo que aquí desencadenó el acceso a repositorios privados: un solo token olvidado.

Más información

  • BleepingComputer – Grafana breach caused by missed token rotation after TanStack attack : https://www.bleepingcomputer.com/news/security/grafana-breach-caused-by-missed-token-rotation-after-tanstack-attack/
  • Grafana Labs – Grafana Labs security update: Latest on TanStack npm supply chain ransomware incident : https://grafana.com/blog/grafana-labs-security-update-latest-on-tanstack-npm-supply-chain-ransomware-incident/
  • TanStack Blog – Postmortem: TanStack npm supply-chain compromise : https://tanstack.com/blog/npm-supply-chain-compromise-postmortem
  • GitHub Advisory Database – Malware in @tanstack/* packages exfiltrates cloud credentials, GitHub tokens, and SSH keys (GHSA-g7cv-rxg3-hmpx) : https://github.com/advisories/GHSA-g7cv-rxg3-hmpx
  • Endor Labs – Shai-Hulud compromises the @tanstack ecosystem: 80+ packages compromised : https://www.endorlabs.com/learn/shai-hulud-compromises-the-tanstack-ecosystem-80-packages-compromised
  • Orca Security – TanStack and 160+ npm/PyPI Packages Compromised in Supply Chain Worm Attack : https://orca.security/resources/blog/tanstack-npm-supply-chain-worm/

Acerca de Hispasec

Hispasec Ha escrito 83 publicaciones.

  • View all posts by Hispasec →
  • Blog

Compártelo:

  • Compartir en X (Se abre en una ventana nueva) X
  • Comparte en Facebook (Se abre en una ventana nueva) Facebook
  • Compartir en LinkedIn (Se abre en una ventana nueva) LinkedIn
  • Compartir en Reddit (Se abre en una ventana nueva) Reddit
  • Compartir en Telegram (Se abre en una ventana nueva) Telegram
  • Compartir en WhatsApp (Se abre en una ventana nueva) WhatsApp

Publicaciones relacionadas

Publicado en: General Etiquetado como: ciberseguridad

Interacciones con los lectores

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Barra lateral principal

Buscar

Síguenos

25 años Una Al Día

https://www.youtube.com/watch?v=Kb-PFqasD4I

Populares de UAD

  • GitHub confirma la exfiltración de 3.800 repositorios internos tras una extensión maliciosa de VS Code
  • MiniPlasma: un PoC reabre una escalada local a SYSTEM en Windows 11 pese a estar parcheado
  • Shai-Hulud: ataque a la cadena de suministro compromete cientos de paquetes en npm y PyPI
  • Alerta Roja en npm: Malware Utiliza 'Prompts Ocultos' para Burlar a las IAs de Ciberseguridad
  • Dirty Frag: la nueva vulnerabilidad zero-day en Linux con PoC público que permite escalar privilegios a root en múltiples distribuciones

Entradas recientes

  • Grafana atribuye el acceso a repositorios privados a un token de GitHub Actions que no se rotó tras el ataque a TanStack
  • GitHub confirma la exfiltración de 3.800 repositorios internos tras una extensión maliciosa de VS Code
  • MiniPlasma: un PoC reabre una escalada local a SYSTEM en Windows 11 pese a estar parcheado
  • Cisco corrige un bypass de autenticación crítico en Catalyst SD-WAN
  • Shai-Hulud: ataque a la cadena de suministro compromete cientos de paquetes en npm y PyPI
  • Fortinet corrige dos fallos críticos que permiten ejecución remota de código
  • Dirty Frag: la nueva vulnerabilidad zero-day en Linux con PoC público que permite escalar privilegios a root en múltiples distribuciones
  • Correo electrónico
  • Facebook
  • LinkedIn
  • RSS
  • Twitter

Footer

UAD

UAD nació a raíz de un inocente comentario en un canal IRC hace 24 años. A través de los archivos, un lector curioso puede ver cómo ha cambiado (o no) la seguridad de la información desde entonces.

Aviso Legal

  • Aviso Legal
  • Términos y Condiciones
  • Política de Privacidad
  • Política de Cookies

Copyright © 2026 · Hispasec Sistemas, S.L. Todos los derechos reservados

Este sitio web utiliza cookies propias y de terceros para fines analíticos y para mostrarte publicidad (tanto general como personalizada) relacionada con tus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación (por ejemplo, páginas visitadas), para optimizar la web y para poder valorar las opiniones de los servicios consultados por los usuarios. Para administrar o deshabilitar estas cookies haz clic en: Configurar Cookies


Rechazar todo Aceptar Todo
Configurar Cookies

Resumen de privacidad

Este sitio web utiliza cookies para mejorar su experiencia mientras navega por el sitio web. De estas, las cookies que se clasifican como necesarias se almacenan en su navegador, ya que son esenciales para el funcionamiento de las funcionalidades básicas del sitio web. También utilizamos cookies de terceros que nos ayudan a analizar y comprender cómo utiliza este sitio web. Estas cookies se almacenarán en su navegador solo con su consentimiento. También tiene la opción de optar por no recibir estas cookies. Pero la exclusión voluntaria de algunas de estas cookies puede afectar su experiencia de navegación.
Necesaria
Siempre activado
Las cookies necesarias son absolutamente esenciales para que el sitio web funcione correctamente. Estas cookies garantizan funcionalidades básicas y características de seguridad del sitio web, de forma anónima.
CookieDuraciónDescripción
cookielawinfo-checkbox-analytics11 monthsEsta cookie está configurada por el complemento de consentimiento de cookies de GDPR. La cookie se utiliza para almacenar el consentimiento del usuario para las cookies en la categoría "Análisis".
cookielawinfo-checkbox-functional11 monthsLa cookie está configurada por el consentimiento de cookies de GDPR para registrar el consentimiento del usuario para las cookies en la categoría "Funcional".
cookielawinfo-checkbox-necessary11 monthsEsta cookie está configurada por el complemento de consentimiento de cookies de GDPR. Las cookies se utilizan para almacenar el consentimiento del usuario para las cookies en la categoría "Necesario".
cookielawinfo-checkbox-others11 monthsEsta cookie está configurada por el complemento de consentimiento de cookies de GDPR. La cookie se utiliza para almacenar el consentimiento del usuario para las cookies en la categoría "Otro.
cookielawinfo-checkbox-performance11 monthsEsta cookie está configurada por el complemento de consentimiento de cookies de GDPR. La cookie se utiliza para almacenar el consentimiento del usuario para las cookies en la categoría "Rendimiento".
viewed_cookie_policy11 monthsLa cookie está configurada por el complemento de consentimiento de cookies de GDPR y se utiliza para almacenar si el usuario ha dado su consentimiento o no para el uso de cookies. No almacena ningún dato personal.
Analítica
Las cookies analíticas se utilizan para comprender cómo interactúan los visitantes con el sitio web. Estas cookies ayudan a proporcionar información sobre métricas, el número de visitantes, la tasa de rebote, la fuente de tráfico, etc.
GUARDAR Y ACEPTAR