28. abril 2026 | Imprimir artículo |

Bitwarden CLI: Ataque a la cadena de suministro a través de GitHub Actions

7 min de lectura

El incidente de la CLI de Bitwarden del 22 de abril de 2026 no es un fallo de biblioteca, sino un problema de la pipeline. La acción de GitHub comprometida checkmarx/ast-github-action expuso tokens y material de compilación en la CI de Bitwarden — y distribuyó temporalmente @bitwarden/cli@2026.4.0 en npm. Quien gestione DevSecOps en DACH ahora no verifica la CLI, sino las máquinas de compilación que la rodean.

Lo más importante en resumen

  • Incidente. Entre las 23:57 y las 01:30 CEST, durante la noche del 22 al 23 de abril de 2026, una versión comprometida de @bitwarden/cli@2026.4.0 estuvo disponible en npm. Bitwarden ha descontinuado ya este lanzamiento.
  • Causa raíz. Una acción de terceros, checkmarx/ast-github-action, comprometida dentro del amplio incidente de Checkmarx, exfiltró secretos del flujo de trabajo en el workflow de GitHub de Bitwarden.
  • Impacto. El payload bw1.js recopiló durante la instalación con npm tokens de GitHub/npm, claves SSH, variables de entorno y credenciales en la nube. Según Bitwarden, los datos de los vaults de los usuarios finales no se vieron afectados.
  • Verificaciones obligatorias. Inventario de los CI-Runner, hash-pinning para acciones de terceros, auditoría de lockfiles y caché, rotación de tokens, filtros de egreso en los runners de compilación.

¿Qué es un ataque de cadena de suministro mediante GitHub Actions? Un ataque de cadena de suministro mediante GitHub Actions es una clase de ataque en la que los agresores no comprometen directamente el paquete de software entregado, sino una acción de terceros integrada en el flujo de compilación. Esta acción, al ejecutarse, obtiene acceso a secretos del flujo de trabajo (tokens, credenciales en la nube), que puede exfiltrar hacia un punto final controlado por el atacante. Con los tokens robados, se pueden manipular lanzamientos, comprometer repositorios ajenos o tomar control de recursos en la nube; el usuario final solo se entera cuando el paquete construido se vuelve visible en el canal de distribución.

Por qué este incidente es un incidente de la pipeline, no un incidente de CLI

La interpretación mediática de la episodio de Bitwarden es simplificada: se habría comprometido una CLI de gestor de contraseñas, poniendo en riesgo los datos de Vault. Pero justamente eso no fue lo que ocurrió. La declaración oficial de Bitwarden confirma un canal de distribución de 93 minutos a través de npm y excluye explícitamente cualquier acceso a los contenidos de Vault. El verdadero problema radica una capa más abajo: en el flujo de CI/CD que construyó y publicó la CLI.

El repositorio de GitHub de Bitwarden utiliza —como muchos stacks DevSecOps— una acción de terceros llamada checkmarx/ast-github-action para realizar análisis estáticos. Esta acción fue preparada como parte de una campaña más amplia de la cadena de suministro de Checkmarx y exfiltró secretos de los flujos de trabajo. Con los tokens obtenidos, el atacante accedió brevemente al job de publicación y envió una versión modificada de la versión 2026.4.0 al canal de npm. Investigadores de seguridad de Socket, Endor Labs y Palo Alto Networks han reproducido independientemente la mecánica: el payload bw1.js recopilaba, durante el hook de instalación, tokens de GitHub y npm, claves SSH, historial de shell y credenciales de nube, enviándolos cifrados con AES-256-GCM a la dominio imitado audit.checkmarx.cx.

Para los responsables de DACH, esto significa que cualquier organización que use GitHub Actions está potencialmente expuesta de la misma manera —independientemente de si Bitwarden CLI forma parte del stack. El ataque no apunta al paquete publicado, sino al punto del flujo de trabajo donde un paso de terceros obtiene acceso a los secretos del job. Quienes gestionan flujos de trabajo de GitHub con referencias uses:- sin hash-pinning cargan, en cada ejecución, la versión actualizada de la acción externa —incluyendo una posible compromisión que podría haber ocurrido entre dos builds.

93 minutos
Intervalo de distribución de la versión manipulada @bitwarden/cli@2026.4.0 en npm. Durante este tiempo, cada ejecución automática de CI que instalaba la CLI como dependencia descargaba el payload preparado.
Fuente: Declaración de Bitwarden sobre el incidente de la cadena de suministro de Checkmarx, 23 de abril de 2026

Tres capas que los equipos de DevSecOps deben pasar ahora

El análisis se lleva a cabo de manera pragmática en tres fases. ¿Qué ocurrió realmente en los runnern de compilación durante las últimas semanas? ¿Qué secretos estuvieron disponibles en ese momento? ¿Qué pasos de terceros tenían acceso lectura o escritura al contexto del flujo de trabajo? Solo después de responder estas tres preguntas se procede con el análisis de las versiones de la CLI y de los archivos de bloqueo.

La primera fase es la Inventario de los runners de CI. Cada runner de compilación que ejecutó flujos de trabajo entre la tarde del 22 de abril y el mediodía del 24 de abril pertenece a una lista que incluye la ID de ejecución, el nombre del trabajo, las acciones involucradas y la imagen del contenedor iniciado. Los runners autohosteados son especialmente críticos, ya que mantienen estado entre trabajos; si un flujo de trabajo preparado ha escrito tokens en el caché del runner, estos permanecerán allí incluso después de la limpieza realizada por Bitwarden. Los runners alojados en GitHub son efímeros, pero los registros de ejecución también muestran las versiones de las acciones cargadas en esos casos.

La segunda fase es el Stock de secretos. Los tokens que fueron referenciados en un trabajo afectado se consideran comprometidos, incluso si el trabajo se completó sin problemas. Esto incluye secretos de repositorio, de organización y de entorno, tokens de OIDC-Issuer, tokens de publicación npm, PATs de GitHub, así como credenciales de nube que ingresaron al trabajo mediante federación. La rotación no debe llevarse a cabo de forma apresurada, pero debe realizarse en un orden documentado, ya que los tokens rotados pueden ser utilizados simultáneamente en sistemas productivos.

La tercera fase es el Inventario de las acciones. ¿Qué acciones de terceros están presentes en los propios flujos de trabajo? ¿Cuáles de ellas están referenciadas mediante etiquetas (@v3), y cuáles mediante hash? El tag-pinning funciona como una forma de versiónización, aunque no ofrece garantías; un atacante con acceso como mantenedor puede cambiar el tag hacia un commit comprometido. El hash-pinning, en cambio, congela la acción en un SHA de commit exacto, lo que elimina esta clase de ataques.

Orden de verificación urgente para los equipos de DevSecOps de la región DACH

1. Exportar los registros de auditoría de GitHub de los últimos 7 días y buscar en los push de archivos de flujo de trabajo, así como en el uso de tokens de acciones contra dominios externos. 2. Eliminar los paquetes checkmarx/ast-github-action de cada flujo de trabajo o pincharlos hacia un SHA de commit anterior al 22 de abril. 3. Rotar todos los secretos de repositorio, de organización y de entorno que fueron referenciados en un flujo de trabajo entre el 22 y el 24 de abril. 4. Revisar los archivos de bloqueo npm en @bitwarden/cli@2026.4.0 y, en caso de encontrar algún fallo, downgradar a una versión anterior. 5. Establecer reglas en el SIEM para detectar las conexiones que reportan a audit.checkmarx.cx.

Lo que actúa de inmediato y lo que solo da una apariencia de seguridad

La comunidad DevSecOps lleva días debatiendo qué medidas realmente surten efecto. Algunos reflejos son operativamente correctos, mientras que otros dan una falsa sensación de seguridad. La siguiente evaluación distingue entre las medidas obligatorias y las deseadas.

Actúa de inmediato

  • Pinning de hashes para cada acción de terceros (uses: checkmarx/ast-github-action@<sha>)
  • Federación OIDC en lugar de tokens de nube de larga duración en los flujos de trabajo
  • npm ci –ignore-scripts como configuración predeterminada en las pipelines de CI
  • Filtro de egreso en los runners de compilación (lista blanca para registros, espejos y dominios propios)
  • TTL de tokens más corto que el ciclo típico de construcción

Solo parece actuar

  • Pinning de tags sin hash (los tags pueden ser cambiados fácilmente)
  • Revisión de código en dos etapas sin protección de ramas en los archivos del flujo de trabajo
  • Soluciones Vault sin endurecimiento de los runners de compilación
  • Informes SBOM que solo muestran dependencias en tiempo de ejecución
  • Escaners estáticos sin visibilidad sobre los archivos propios del flujo de trabajo

La medida de emergencia más eficaz es separar los pasos de construcción que cargan acciones externas de aquellos que requieren secretos. En un modelo sencillo, esto significa: la revisión de código, el análisis estático y el escaneo de dependencias se realizan en un job sin bloque secrets:-, mientras que el paso de publicación se lleva a cabo en un segundo job con tokens mínimos y sin acciones externas, salvo las mantenidas directamente por GitHub. La mayoría de los flujos de trabajo combinan ambas cosas por razones históricas, aunque técnicamente no sea necesario.

A nivel arquitectónico, la federación OIDC se convertirá en el patrón obligatorio en los próximos 12 meses. El efecto es contundente: las credenciales de nube ya no existen como un valor almacenado en el flujo de trabajo, sino que se emiten de forma puntual por el proveedor de nube en cada ejecución. Un atacante que comprometa una única ejecución no tendrá después ningún acceso reutilizable. El esfuerzo para la migración suele ser de un día persona por cuenta de nube, más la auditoría de las condiciones de confianza —una carga manejable frente al daño que causaría un filtrado de tokens.

«La lección de 2026 no es que las acciones de terceros deban prohibirse. La lección es que cada acción externa requiere el mismo grado de cuidado que una biblioteca en tiempo de ejecución —incluyendo pinning, revisión ante cualquier actualización de versión y telemetría sobre lo que realmente hace en el flujo de trabajo.»

– Tenor de varios líderes de DevSecOps de DACH en reuniones sectoriales para analizar el incidente

Qué significa el incidente para las estrategias de bóvedas y secretos

La pregunta refleja en muchos equipos de seguridad de la región DACH es: ¿sustituimos Bitwarden? Esta pregunta pasa por alto el problema. El incidente no dice nada sobre la seguridad de la infraestructura del servidor de Bitwarden o el cifrado de la bóveda. Dice algo sobre la canalización de construcción y distribución. Precisamente esta canalización es una puerta de entrada potencial en cualquier proveedor serio, ya sea de código abierto o cerrado.

Lo que cambia es la forma en que se protegen las estrategias de secretos contra los riesgos de CI/CD. Observamos tres ajustes en los equipos que gestionan el incidente correctamente. Primero: las herramientas CLI para el acceso a secretos solo se ejecutan en runners dedicados con sus propias reglas de salida, no en los pools generales de CI. Segundo: los tokens de bóveda utilizados en las canalizaciones obtienen ámbitos por repositorio y TTL inferiores a la duración media de la construcción. Tercero: cada acceso a la bóveda desde un flujo de trabajo genera un evento de auditoría que fluye hacia la monitorización de seguridad, no solo al registro propio de la bóveda.

Operativamente, esto no es trivial. El alcance de los tokens aumenta el esfuerzo de mantenimiento por repositorio, los runners dedicados encarecen la operación de CI y los flujos de auditoría necesitan analizadores. Quien evitaba este esfuerzo antes del incidente ve ahora la contrapartida: un único flujo de trabajo comprometido puede invalidar todo el panorama de tokens. La inversión en el endurecimiento de la canalización resulta rentable en sectores con obligaciones DORA, NIS2 o KRITIS, ya que estos requisitos de auditoría exigen controles similares.

Una cuestión secundaria concierne al manejo de la propia CLI. La CLI de Bitwarden sigue siendo para muchos equipos la conexión más eficiente a la bóveda desde scripts y CI. La recomendación no es eliminar la CLI, sino controlar su fuente de obtención: sin instalaciones directas de npm desde canalizaciones productivas, sino distribución a través de un espejo interno que aprueba versiones. Quien sospeche de una fuga de tokens, mira primero en ~/.bw-state.json y en los registros del servidor de la bóveda buscando patrones de lectura atípicos, no en el binario de la CLI en sí.

Lo que permanece y lo que trae la próxima ola

El incidente de Bitwarden es parte de una serie. El ataque a Trivy en marzo, el secuestro del mantenedor de npm en Axios a principios de abril y la brecha de Vercel a través de Context.ai-OAuth pertenecen a la misma categoría: ataques a las cadenas de suministro que no pasan por el producto terminado, sino por el taller. Quien asume la responsabilidad de DevSecOps en la región DACH debe modelar esta clase como un eje de amenaza propio, separado de los temas clásicos de vulnerabilidades y endpoints.

La próxima ola probablemente no serán GitHub Actions, sino las imágenes base de contenedores y el envenenamiento de la caché de construcción. Ambos vectores están técnicamente más cerca de la federación de flujos de trabajo y actualmente se verifican menos sistemáticamente que los hashes de las acciones. Los equipos que ahora limpian su inventario de canalizaciones no deberían detenerse en la auditoría de acciones, sino incluir la procedencia de contenedores (Sigstore, in-toto) y la firma de cachés en el plan a 12 meses.

La banda sonora regulatoria acompaña. La implementación de la NIS2 de la UE ya exige hoy que las relaciones críticas con proveedores se documenten y supervisen. Las GitHub Actions que ven los secretos del flujo de trabajo son exactamente eso, y se ponderarán en consecuencia en las auditorías de 2026. Quien pueda presentar un informe limpio del inventario de acciones, ya tiene hecha la mitad de la parte de cumplimiento normativo.

Preguntas frecuentes

¿Están afectados los datos de la bóveda de Bitwarden?

No. Bitwarden ha confirmado en su declaración oficial que ni los datos de la bóveda de los usuarios finales ni los sistemas productivos de Bitwarden fueron comprometidos. El incidente afecta exclusivamente a la construcción de la CLI distribuida a través de npm durante una ventana de 93 minutos en la noche del 22 al 23 de abril de 2026.

¿Qué versión está afectada?

La variante manipulada se distribuyó como @bitwarden/cli@2026.4.0. Esta versión está obsoleta. Quien haya instalado durante la ventana (23:57 a 01:30 MESZ), debería eliminar la versión de los archivos de bloqueo y cachés, rotar los tokens implicados y revisar los registros de los runners de construcción en busca de conexiones a audit.checkmarx.cx.

¿Basta con usar fijación de etiquetas para GitHub Actions?

No. La fijación de etiquetas solo congela la denominación de la etiqueta, no el commit subyacente. Un atacante con acceso de mantenedor puede reasignar la etiqueta a un commit manipulado. La fijación de hash mediante SHA de commit es la única barrera fiable contra esta clase de ataque.

¿Debemos rotar todos los tokens?

La rotación se aplica a cada token que fue referenciado entre el 22 y el 24 de abril en un flujo de trabajo, independientemente de si la compilación fue exitosa. Los secretos de repositorio, organización y entorno, así como las credenciales en la nube relacionadas con OIDC, forman parte de la lista de rotación. No es necesaria una rotación completa de todos los tokens, siempre que no hayan sido referenciados en flujos de trabajo afectados.

¿Qué consecuencias de cumplimiento normativo surgen?

Bajo NIS2, el incidente cae bajo la obligación de notificar incidentes graves, siempre que estén afectados servicios críticos propios. Bajo DORA rige la misma lógica para las instituciones financieras. Independientemente de ello, todos los equipos DACH documentan el incidente de manera útil en el registro interno de incidentes con las medidas adoptadas, ya que las autoridades supervisoras preguntan cada vez más por controles de la cadena de suministro en auditorías posteriores.

Consejos de lectura de la redacción

Más de la red MBF Media

cloudmagazin: BSI-KRITIS y uso de la nube: Cumplimiento multi-cloud bajo NIS2 y C5
mybusinessfuture: IA más cara de lo previsto: la tasa de sobrecoste del 33%
digital-chiefs: Sobrecostes de IA como cuestión de gestión para el nivel C

Fuente imagen principal: Pexels / panumas nikhomkhai (px:17489157)

Tobias Massow

Sobre el autor: Tobias Massow

Más artículos de

También disponible en

FrançaisEnglishDeutsch
Una revista de Evernine Media GmbH