Cómo “Clinejection” convirtió un bot de IA en un ataque a la cadena de suministro
19 de febrero de 2026
0 minutos de lecturaEl 9 de febrero de 2026, el investigador de seguridad Adnan Khan divulgó públicamente una cadena de vulnerabilidades (bautizada como «Clinejection») en el repositorio de Cline que convirtió al bot de clasificación de problemas de esta popular herramienta de programación con IA en un vector de ataque a la cadena de suministro. Ocho días después, un actor desconocido aprovechó la misma falla para publicar una versión no autorizada de Cline CLI en npm e instalar el agente de IA OpenClaw en todos los equipos de desarrolladores que se actualizaron durante un período de ocho horas.
La cadena de ataque es notable no por una técnica novedosa en particular, sino por la forma en que combina vulnerabilidades conocidas (inyección indirecta de prompts, envenenamiento de la caché de GitHub Actions y debilidades en el modelo de credenciales) en un solo exploit que solo requiere abrir un problema en GitHub.
Para los más de 5 millones de usuarios de Cline, el impacto real fue limitado. La versión no autorizada cline@2.3.0 estuvo disponible durante unas ocho horas y su carga útil (instalar OpenClaw de forma global) no era abiertamente destructiva. Sin embargo, el impacto potencial —publicar código arbitrario para todos los desarrolladores que tienen activadas las actualizaciones automáticas— es lo que hace que valga la pena estudiar este incidente en detalle. Snyk y Cline ya tienen una alianza de seguridad para proteger la programación asistida por IA, y este incidente reafirma la importancia de ese tipo de colaboración en toda la industria.
Un agente de IA con demasiados permisos
El 21 de diciembre de 2025, los responsables de Cline agregaron un flujo de trabajo de clasificación de problemas con IA a su repositorio de GitHub. El flujo usaba claude-code-action de Anthropic para responder automáticamente a los nuevos problemas. La configuración se veía así:
Dos decisiones de configuración hicieron que esto fuera peligroso:
allowed_non_write_users: "*"permitía que cualquier usuario de GitHub activara el flujo de trabajo al abrir un problema.--allowedTools "Bash,Read,Write,Edit,..."le otorgaba al agente de IA ejecución de código arbitrario en el ejecutor de GitHub Actions.
El título del problema se insertaba directamente en el prompt. Era un caso típico de inyección indirecta de prompts.
Paso 1: Inyección de prompts mediante el título del problema
Un atacante podía crear un título de problema en GitHub con instrucciones que reemplazaran el comportamiento previsto de Claude:
La referencia github:cline/cline#aaaaaaaa apunta a una confirmación específica. Debido a la arquitectura de bifurcaciones de GitHub, un atacante puede subir una confirmación a su propia bifurcación, y esa confirmación queda disponible a través de la URL del repositorio principal, incluso después de que se elimine la bifurcación (una técnica conocida como «confirmación huérfana»).
La confirmación reemplaza package.json por una versión que contiene un script preinstall malicioso:
Cuando Claude ejecuta npm install mediante su herramienta Bash, el script preinstall se ejecuta automáticamente. El agente de IA no tiene oportunidad de inspeccionar lo que se ejecuta. Khan confirmó que Claude «ejecutó sin problemas la carga útil en todos los intentos de prueba» en un espejo del repositorio de Cline.
Snyk ha estado siguiendo de cerca este patrón. En nuestra investigación sobre el análisis de flujos tóxicos, describimos precisamente esta clase de vulnerabilidad: datos no confiables que llegan al contexto de un agente de IA, combinados con acceso a herramientas que permiten ejecutar código, crean un «flujo tóxico» en el que el atacante controla lo que hace el agente. El incidente de Cline es un ejemplo real de flujos tóxicos en CI/CD, no solo en entornos de desarrollo locales.
Paso 2: Movimiento lateral mediante el envenenamiento de la caché de GitHub Actions
La inyección de prompts por sí sola comprometió el ejecutor del flujo de clasificación. Pero el flujo tenía permisos restringidos de GITHUB_TOKEN y no tenía acceso a los secretos de publicación. Para llegar al flujo de lanzamiento, el atacante necesitaba pasar a otro entorno.
Aquí es donde entra en juego el envenenamiento de la caché de GitHub Actions.
Una propiedad fundamental de GitHub Actions es que cualquier flujo de trabajo que se ejecute en la rama predeterminada puede leer y escribir en la caché compartida de Actions, incluso si no usa explícitamente el almacenamiento en caché. El flujo de clasificación, con pocos privilegios, compartía el mismo ámbito de caché que el flujo de lanzamiento nocturno, con privilegios elevados.
La política de eliminación de la caché de GitHub usa el criterio de menos usada recientemente (LRU) una vez que la caché supera los 10 GB por repositorio. Un atacante puede aprovechar esto para:
Llenar la caché con más de 10 GB de datos basura desde el flujo de clasificación
Forzar la eliminación LRU de entradas legítimas de la caché
Establecer entradas de caché envenenadas que coincidan con las claves de caché del flujo nocturno
La herramienta de código abierto Cacheract de Khan automatiza todo este proceso. Envenena las entradas de la caché y persiste entre ejecuciones de flujos de trabajo al secuestrar el paso posterior actions/checkout.
El flujo de lanzamiento nocturno de Cline utilizaba directorios node_modules almacenados en caché:
Cuando el flujo de publicación nocturno se ejecutaba alrededor de las 2 a. m. UTC y restauraba la caché envenenada, el atacante podía ejecutar código arbitrario en un flujo de trabajo con acceso a VSCE_PAT, OVSX_PAT y NPM_RELEASE_TOKEN.
Paso 3: Las credenciales nocturnas equivalían a credenciales de producción
Podrías suponer que las credenciales para lanzamientos nocturnos tendrían un alcance distinto al de las credenciales de producción. No era así.
Tanto Visual Studio Code Marketplace como OpenVSX vinculan los tokens de publicación con los editores, no con extensiones individuales. Las extensiones de producción y nocturnas de Cline eran publicadas por la misma identidad (saoudrizwan). Esto significaba que el PAT nocturno podía publicar versiones de producción.
De forma similar, el modelo de tokens de npm vinculaba NPM_RELEASE_TOKEN al paquete cline, que se compartía entre las versiones de producción y las nocturnas.
De la divulgación a la explotación: qué pasó en realidad
En resumen: un solo problema de GitHub, abierto por cualquier usuario, podía activar la siguiente cadena:
La inyección de prompts en el título del problema engaña a Claude para que ejecute
npm installdesde una confirmación controlada por el atacanteEl script
preinstallmalicioso implementa Cacheract en el ejecutor de ActionsCacheract inunda la caché con más de 10 GB de datos basura y activa la eliminación LRU
Cacheract establece entradas de caché envenenadas que coinciden con las claves del flujo nocturno
El flujo de publicación nocturno restaura la caché envenenada alrededor de las 2 a. m. UTC
El atacante exfiltra
VSCE_PAT,OVSX_PATyNPM_RELEASE_TOKENEl atacante publica una actualización maliciosa que llega a millones de desarrolladores
Fecha | Evento |
|---|---|
21 de diciembre de 2025 | Cline agrega a su repositorio un flujo de clasificación de problemas con IA |
1 de enero de 2026 | Adnan Khan presenta un GHSA y envía un correo a security@cline.bot |
Del 31 de enero al 3 de febrero de 2026 | Se observan fallas sospechosas en la caché de los flujos nocturnos de Cline |
9 de febrero de 2026 | Khan publica sus hallazgos; Cline corrige la vulnerabilidad en 30 minutos |
10 de febrero de 2026 | Cline confirma la recepción e informa que rotó las credenciales |
11 de febrero de 2026 | Cline vuelve a rotar las credenciales tras recibir el informe de que los tokens aún podrían ser válidos |
17 de febrero de 2026 | Se publica en npm |
17 de febrero de 2026 | Cline publica la versión 2.4.0, desaprueba la 2.3.0 y revoca el token correcto |
17 de febrero de 2026 | Se publica GHSA-9ppg-jx86-fqw7 |
Después del incidente | Cline cambia la publicación en npm a la procedencia OIDC mediante GitHub Actions |
Khan descubrió la vulnerabilidad a fines de diciembre de 2025 y presentó un aviso de seguridad de GitHub (GHSA) el 1 de enero de 2026, junto con un correo al contacto de seguridad de Cline.
El 9 de febrero, después de que Khan publicara sus hallazgos, Cline corrigió la vulnerabilidad en 30 minutos, eliminó los flujos de clasificación con IA y quitó el consumo de caché de los flujos de publicación. El equipo también rotó las credenciales y confirmó la recepción del informe.
Sin embargo, la rotación de credenciales resultó incompleta. El 17 de febrero, un actor desconocido usó un token de npm que seguía activo (el 9 de febrero se había revocado el token equivocado) para publicar cline@2.3.0 con una sola modificación:
La versión no autorizada estuvo disponible durante aproximadamente ocho horas, hasta que Cline publicó la versión 2.4.0 y desaprobó la 2.3.0. El binario de CLI en sí era idéntico, byte por byte, a la versión legítima 2.2.3. Después de este incidente, Cline cambió la publicación en npm a la procedencia OIDC mediante GitHub Actions, eliminando así los tokens estáticos de larga duración como superficie de ataque.
Khan también señaló indicios de actividad sospechosa anterior en la caché de los flujos nocturnos de Cline entre el 31 de enero y el 3 de febrero. Entre ellos estaba un indicador de vulneración característico de Cacheract: fallas en los pasos posteriores de actions/checkout sin mostrar ningún resultado. No está claro si se trató de otro investigador o de un actor de amenazas.
La carga útil de OpenClaw: una elección curiosa
La versión no autorizada cline@2.3.0 instalaba OpenClaw de forma global. OpenClaw es un agente de IA de código abierto con capacidad para ejecutar comandos, acceder al sistema de archivos y navegar por la web. No es malicioso por naturaleza.
Pero vale la pena considerar la elección. Como observó el investigador de seguridad Yuval Zacharia: «Si el atacante puede enviarle prompts de forma remota, no es solo malware, es la próxima evolución del C2. No hace falta un implante personalizado. El agente es el implante y el texto sin formato es el protocolo».
Un agente de IA que interpreta lenguaje natural, incluye herramientas para ejecutar código y acceder a archivos, y parece software legítimo para desarrolladores ante las herramientas de detección de endpoints es un potente recurso para la postexplotación, incluso si OpenClaw no se convirtió en arma en este caso.
Snyk ya había investigado cómo la arquitectura de OpenClaw (acceso al shell y permisos amplios para las herramientas) genera riesgos de seguridad. En nuestro estudio ToxicSkills, encontramos que el 36 % de las habilidades de agentes de IA en plataformas como ClawHub contienen fallas de seguridad, incluidas cargas útiles maliciosas activas diseñadas para robar credenciales e instalar puertas traseras.
Los agentes de IA son la nueva superficie de ataque de CI/CD
Esta cadena de ataque destaca un patrón que Snyk ha documentado en varios incidentes de 2025 y 2026. Los agentes de IA con amplio acceso a herramientas crean puntos de entrada de baja fricción a sistemas que antes eran difíciles de alcanzar.
En diciembre de 2024, analizamos el ataque a la cadena de suministro mediante una solicitud de extracción maliciosa de Ultralytics AI, en el que los atacantes aprovecharon una configuración incorrecta de pull_request_target en GitHub Actions para inyectar código en la canalización de compilación y publicar paquetes maliciosos en PyPI. El incidente de Cline sigue el mismo patrón estructural (abuso de activadores de CI/CD que provoca robo de credenciales y publicaciones maliciosas), pero con un giro nuevo: el punto de entrada es el lenguaje natural, no el código.
En agosto de 2025, analizamos cómo los atacantes convirtieron en armas a los agentes de programación con IA durante el incidente de paquetes maliciosos de Nx. Ese ataque usó scripts maliciosos del ciclo de vida de npm para invocar Claude Code, Gemini CLI y Amazon Q con indicadores no seguros (--dangerously-skip-permissions, --yolo, --trust-all-tools), y convirtió a los asistentes de IA para desarrolladores en herramientas de reconocimiento y exfiltración.

Malware de Nx en npm: el secuestro de agentes de IA — Brian Clark, de Snyk, explica cómo los atacantes usaron paquetes maliciosos de npm para convertir en armas a los agentes de programación con IA y robar credenciales y exfiltrar datos.
El incidente de Cline va un paso más allá: el agente de IA no se ejecutaba en el equipo de un desarrollador, sino dentro de una canalización de CI/CD, con acceso a la caché compartida de Actions y (de forma indirecta) a las credenciales de publicación de producción.
Como señalamos en nuestra investigación sobre el nuevo panorama de amenazas para las aplicaciones nativas de IA, la convergencia de las vulnerabilidades de IA y las debilidades de seguridad tradicionales crea cadenas de ataque que ninguna de las dos categorías de defensa puede abordar bien por sí sola. Un escáner de inyección de prompts no detectará el envenenamiento de la caché. Una guía para fortalecer CI/CD no tendrá en cuenta que el lenguaje natural puede ser un vector de ataque.
Gravedad baja: alto potencial de impacto
Es importante ser precisos sobre lo que ocurrió y lo que podría haber ocurrido:
Lo que ocurrió:
El 17 de febrero de 2026 se publicó en npm una versión no autorizada de
cline@2.3.0Estuvo disponible durante ~8 horas e instaló OpenClaw globalmente mediante un script postinstall
El binario de CLI no se modificó
La auditoría de Cline no encontró publicaciones no autorizadas en VS Code Marketplace ni en OpenVSX
El aviso de GitHub clasifica este incidente como de gravedad baja
Lo que podría haber ocurrido:
Un atacante sofisticado podría haber publicado en Marketplace y OpenVSX una versión de la extensión de Cline para VS Code con una puerta trasera
Con más de 5 millones de instalaciones y las actualizaciones automáticas activadas, el código malicioso se habría ejecutado en el entorno del IDE de cada desarrollador, con acceso a credenciales, claves SSH y código fuente
El ataque solo requería una cuenta de GitHub y conocer técnicas documentadas públicamente
Cómo proteger los agentes de IA en las canalizaciones de CI/CD
Si instalaste cline@2.3.0 mediante npm:
Desinstálalo:
npm uninstall -g clineDesinstala OpenClaw si se instaló:
npm uninstall -g openclawVuelve a instalarlo desde la versión 2.4.0 o posterior:
npm install -g cline@latestRevisa si hay paquetes npm globales inesperados en tu sistema:
npm list -g --depth=0Rota las credenciales a las que se haya podido acceder desde el equipo afectado
Si usas la extensión de Cline para VS Code:
La auditoría de Cline confirmó que no se publicaron versiones no autorizadas de la extensión
Este incidente específico no afectó a la extensión de VS Code
Considera desactivar las actualizaciones automáticas de las extensiones del IDE y revisar las actualizaciones antes de instalarlas
Cómo proteger tus canalizaciones de CI/CD contra ataques nativos de IA
El incidente de Cline muestra por qué las organizaciones necesitan defensas en capas que abarquen tanto la seguridad de la IA como el fortalecimiento tradicional de CI/CD.
Para los equipos que ejecutan agentes de IA en CI/CD:
Limita el acceso a las herramientas. Los agentes de IA que se usan para clasificar problemas no necesitan permisos de
Bash,WriteniEdit. Limita--allowedToolsa lo mínimo necesario para la tarea.No uses la caché de Actions en los flujos de trabajo de publicación. En las compilaciones que manejan secretos de publicación, la integridad importa más que la velocidad. El envenenamiento de caché es un vector de ataque bien documentado en GitHub Actions.
Aísla las credenciales de publicación. Usa espacios de nombres separados y tokens exclusivos para las publicaciones nocturnas y de producción. Si tu PAT nocturno puede publicar versiones de producción, tu canalización nocturna es una superficie de ataque de producción.
Sanitiza los datos de entrada no confiables. Nunca interpolеs directamente en los prompts de los agentes de IA datos controlados por usuarios, como títulos de problemas, descripciones de PR o comentarios. Es el equivalente de la inyección indirecta de prompts a la inyección SQL mediante la concatenación de cadenas.
Verifica minuciosamente la rotación de credenciales. El incidente de Cline muestra cómo una rotación incompleta de credenciales puede dejar una brecha abierta. Al rotar secretos después de una filtración, verifica que todos los tokens se hayan revocado y considera pasar a credenciales de corta duración (como la procedencia OIDC para npm) para reducir la exposición.
Cómo Snyk ayuda a proteger la cadena de suministro de agentes de IA
Snyk ofrece varias herramientas para defenderse de los tipos de vulnerabilidades explotadas en este ataque. agent-scan (mcp-scan) es un escáner de seguridad de código abierto para agentes de IA, servidores MCP y habilidades de agentes. Detecta automáticamente las configuraciones de MCP y las habilidades instaladas, y luego busca inyecciones de prompts, envenenamiento de herramientas, código malicioso y flujos tóxicos. Ejecútalo con uvx mcp-scan@latest --skills.
Snyk AI-BOM genera una lista de materiales de IA para tus proyectos e identifica modelos de IA, agentes, herramientas, servidores MCP y conjuntos de datos. Ayuda a descubrir el inventario completo de componentes de IA en tu base de código para que sepas a qué estás expuesto. Ejecútalo con snyk aibom.
Por último, Snyk Open Source: supervisa tus dependencias de código abierto para detectar vulnerabilidades conocidas y paquetes maliciosos. La base de datos de vulnerabilidades de Snyk habría señalado versiones comprometidas de paquetes, como cline@2.3.0. Para conocer más sobre cómo Snyk aborda las amenazas de seguridad nativas de IA, consulta nuestras investigaciones sobre el análisis de flujos tóxicos, la inyección de prompts en MCP y el secuestro de agentes.
A medida que la velocidad de desarrollo se dispara, ¿sabes realmente a qué puede acceder tu entorno de IA? Descarga “La crisis de seguridad de IA en tu entorno de Python” para obtener más información.
DOCUMENTO TÉCNICO
La crisis de seguridad de IA en tu entorno de Python
Con el ritmo de desarrollo acelerándose a un ritmo vertiginoso, ¿sabes realmente a qué puede acceder tu entorno de IA?
