El typosquatting se aprovecha de errores tipográficos y confusiones: una letra que falta, una I mayúscula en lugar de una l minúscula, un guion de menos. El patrón es antiguo — crossenv robó variables de entorno en 2017, jeIlyfish claves SSH y GPG en 2019 —, pero hoy se explota a escala industrial: Check Point contabilizó en 2024 más de 500 paquetes maliciosos de PyPI en dos oleadas, y Microsoft documentó el 28/05/2026 14 paquetes npm de un mismo actor publicados en cuatro horas, dirigidos a credenciales de AWS, tokens de Vault, el contexto de GitHub Actions y tokens de npm.
Slopsquatting y agentes de código: proteger la cadena de suministro de software con IA
Los modelos de IA sugieren paquetes que no existen, y los atacantes pueden registrar precisamente esos nombres. Los agentes de código con acceso al terminal instalan lo que consideran correcto. Este análisis en profundidad conecta el typosquatting y el slopsquatting en npm y PyPI con un modelo de seguridad para agentes de código y su harness: cadena de ataque, cinco capas de protección, obligaciones según el CRA, NIS2 y DORA, autoevaluación y whitepaper para CISO (en alemán).
Actualizado: octubre de 2026 · Valeri Milke, Lead Auditor ISO 27001 e ISO 42001
Recibirá el enlace de descarga de inmediato en la página y por correo electrónico.
agent · ~/portal-clientes — dependency gate activo
PromptDescargar el modelo de Hugging Face desde la línea de comandos.
AgentePara ello, instalo el paquete de CLI correspondiente:
$pip install huggingface-cli
Dependency gate · política
- ✕Doc. del fabricanteInstalación oficial: huggingface_hub[cli] — el nombre no coincide
- ✕ConocidoNombre alucinado de forma recurrente — experimento de Bar Lanyado (Lasso Security)
- ✕Lista de permitidosNo aprobado
BLOQUEADO · No coincide con la documentación del fabricante — ticket de aprobación a AppSec
Recreado a partir del experimento documentado de Bar Lanyado (Lasso Security, 2024).
PromptDefinir las variables de entorno en los scripts de npm de forma multiplataforma.
AgenteAñado la dependencia adecuada:
$npm install crossenv
Dependency gate · política
- ✕NombreVariante de separador de cross-env
- ✕HistorialTyposquat conocido: eliminado en 2017, robaba variables de entorno
- ✓Scripts de instalaciónDesactivados en el build: no se ejecuta código al instalar
- ✕Lista de permitidosNo aprobado
BLOQUEADO · Sospecha de typosquat — se pretendía cross-env
Caso histórico del ecosistema npm (2017).
PromptValidar las entradas del formulario con un esquema.
AgenteUso la biblioteca aprobada en una versión fija:
$npm install zod --save-exact
Dependency gate · política
- ✓Lista de permitidosAprobado, responsable: equipo de plataforma
- ✓Antigüedad de versiónVersión con más antigüedad que el periodo de espera de 7 días
- ✓Scripts de instalaciónDesactivados (allowScripts)
- ✓LockfileVersión fijada, hash de integridad verificado
PERMITIDO · El cambio aparece en el pull request para su aprobación
- 19,7 % referencias a paquetes inventadas en 16 modelos de código
- 30.000+ descargas de un marcador de posición vacío (según Lasso)
- 237+ repositorios con un comando npx alucinado
19,7 %de las referencias a paquetes de 16 modelos de código eran inventadas: 440.445 de 2,23 millones (USENIX Security 2025)
43 %de los nombres inventados reapareció en cada una de diez repeticiones: predecible significa registrable
24 CVEen IDE con IA y agentes de código, procedentes de una sola serie de investigación (IDEsaster, diciembre de 2025)
11/09/2026Desde ese día se aplican las obligaciones de notificación del CRA; la diligencia debida sobre los componentes recae en el fabricante integrador
En junio de 2024, un equipo de investigación encabezado por Joseph Spracklen (University of Texas at San Antonio) demostró que 16 modelos de código inventaban el 19,7 % de sus referencias a paquetes en 576.000 muestras de código: 205.474 nombres únicos que no existían ni en npm ni en PyPI. El 43 % de ellos volvió a aparecer en cada una de diez repeticiones. Quien registra esos nombres ya no necesita un error tipográfico: desde 2025, esto se denomina slopsquatting. Al mismo tiempo, el panorama de herramientas ha cambiado: del asistente que sugiere al agente que instala en el terminal, invoca servidores MCP y carga skills. Por eso HiddenLayer describe el harness, y no el modelo, como la verdadera superficie de ataque y organiza la defensa en cinco capas: visibilidad, control, validación, monitorización y gobernanza. ThreatLocker completa el lado de los paquetes: comprobar los nombres, gestionar las dependencias mediante listas de permitidos, desactivar los scripts de instalación, mantener los secretos fuera de las rutas de build y aplicar Zero Trust en tiempo de ejecución. Una prueba práctica de octubre de 2026 lo demuestra: también las herramientas actuales siguen inventando paquetes, rara vez, pero de forma reproducible. Esta página lo convierte en un programa: la cadena de ataque muestra dónde actúan sus controles. El mapa del harness sitúa diez relaciones de confianza de un agente de código con casos documentados. La comprobación del nombre de paquete verifica sugerencias localmente en el navegador. La matriz de obligaciones asigna el CRA, NIS2, DORA, el AI Act y la responsabilidad por productos defectuosos. La autoevaluación mide su nivel de madurez, y el whitepaper para CISO aporta hoja de ruta, configuración de referencia, modelo de política y catálogo de auditoría.
Del error tipográfico al paquete inventado
Hitos del typosquatting, las alucinaciones de paquetes y los ataques a agentes de código, hasta las obligaciones que hoy están en vigor.
1 de agosto de 2017
crossenv: typosquatting en npm
Un paquete llamado crossenv imita a cross-env y envía variables de entorno a un servidor ajeno. npm elimina unos 40 paquetes del mismo actor.
1 de diciembre de 2019
jeIlyfish en PyPI
Una I mayúscula en lugar de una l minúscula: la copia de jellyfish roba claves SSH y GPG desde diciembre de 2018 hasta que se notifica y se elimina.
28 de marzo de 2024
huggingface-cli y más de 500 typosquats
Bar Lanyado (Lasso Security) publica su experimento con un paquete vacío bajo un nombre alucinado: según Lasso, más de 30.000 descargas en tres meses. El mismo día, Check Point informa de más de 500 typosquats maliciosos en PyPI.
12 de junio de 2024
El estudio sobre alucinaciones
Spracklen et al. publican su análisis: 16 modelos de código, 576.000 muestras de código, un 19,7 % de referencias a paquetes alucinadas. El trabajo se presenta en 2025 en USENIX Security.
8 de abril de 2025
El término slopsquatting
Andrew Nesbitt define el slopsquatting como la variante del typosquatting basada en IA y atribuye el nombre a Seth Larson, de la Python Software Foundation.
26 de agosto de 2025
s1ngularity: CLI de IA como herramienta
Versiones comprometidas de Nx invocan las interfaces de línea de comandos de IA instaladas localmente para buscar secretos. GitGuardian contabiliza 2.349 secretos filtrados.
15 de septiembre de 2025
Shai-Hulud
Un gusano de npm autorreplicante compromete más de 500 paquetes mediante tokens robados. En noviembre llega una segunda oleada.
21 de enero de 2026
react-codeshift
Aikido encuentra un comando npx alucinado en skills de agente generadas por IA, propagado a más de 237 repositorios, y registra el nombre de forma defensiva.
10 de marzo de 2026
ENISA menciona el slopsquatting
La Technical Advisory for Secure Use of Package Managers incluye expresamente el slopsquatting como nuevo vector de ataque del desarrollo asistido por IA.
28 de julio de 2026
Cinco capas para el harness
HiddenLayer publica su modelo de seguridad para agentes de código: visibilidad, control, validación, monitorización, gobernanza. Un día antes, la Comisión aclara en sus directrices sobre el CRA que la diligencia debida recae en el fabricante integrador.
11 de septiembre de 2026
Entran en vigor las obligaciones de notificación del CRA
Los fabricantes notifican las vulnerabilidades explotadas activamente a través de la Single Reporting Platform de ENISA: alerta temprana en un plazo de 24 horas, notificación en un plazo de 72 horas, informe final a más tardar 14 días después de que se disponga de una medida correctora.
6 de octubre de 2026
Prueba práctica con tres herramientas
Un desarrollador prueba 30 tareas de npm con tres herramientas de código con IA: seis nombres de paquete inventados, dos de ellos en varias herramientas. Una muestra, pero una señal clara.
Nueve claves sobre el slopsquatting y los agentes de código
Resumen de cada clave: despliegue para ver detalles, cifras y fuentes.
En el slopsquatting, un modelo de lenguaje inventa un nombre de paquete y un atacante lo registra. Ya no hace falta imitar un paquete real. La mayoría de los nombres inventados no son errores tipográficos: en el estudio de Spracklen et al., solo el 13,4 % de los nombres de Python alucinados estaba a dos caracteres o menos de un paquete real; por eso la detección clásica de typosquatting no funciona. El nombre se atribuye a Seth Larson (Python Software Foundation); lo popularizó Andrew Nesbitt el 08/04/2025.
Las alucinaciones no son ruido: en diez repeticiones de la misma consulta, el 43 % de los nombres inventados reapareció cada vez y el 58 %, más de una vez. Es cierto que el 81 % de los nombres procedía de un solo modelo, pero un preprint de 2026 (sin revisión por pares) encontró 127 nombres que cinco modelos actuales inventaron de forma idéntica; 53 de ellos aún podían registrarse. Quien recopila estos nombres conoce los objetivos antes de que una víctima los teclee.
OWASP LLM09: Unsafe Code Generation →Hasta la fecha no se conoce ningún caso documentado públicamente en el que un atacante registrara con fines maliciosos un nombre demostrablemente alucinado y las víctimas lo instalaran a raíz de una sugerencia de IA. Lo que sí está documentado es que esos nombres se instalan: un paquete vacío de marcador de posición con el nombre alucinado huggingface-cli recibió, según Lasso Security, más de 30.000 descargas en tres meses; un comando npx alucinado en skills de agente generadas por IA se propagó en 2026 a más de 237 repositorios. No es motivo para bajar la guardia, sino una ventana de tiempo.
Un nombre erróneo solo se vuelve peligroso cuando se ejecuta código. Los scripts de ciclo de vida de npm, el código de compilación de los paquetes fuente de Python y los archivos .pth ejecutan código, a menudo sin que ninguna persona lo supervise. El gusano de npm Shai-Hulud se propagó en 2025 a más de 500 paquetes porque los tokens robados permitían nuevas publicaciones. Desde el 08/07/2026, npm v12 desactiva por defecto los scripts de instalación de las dependencias; el código que se ejecuta al importar no se ve afectado.
Un agente de código consta de modelo y harness: archivos de reglas, entradas, terminal, servidores MCP, skills, gestores de paquetes, secretos, repositorio y red. Los ataques documentados afectan casi siempre al harness: caracteres Unicode ocultos en archivos de reglas, descripciones de herramientas envenenadas, configuraciones MCP sustituidas, una inyección que activa el modo de aprobación automática (CVE-2025-53773). La serie de investigación IDEsaster encontró más de 30 vulnerabilidades con 24 CVE en IDE con IA.
Seguridad MCP en detalle →HiddenLayer organiza la defensa en cinco capas: visibilidad sobre cada relación de confianza, control de permisos y aprobaciones, validación antes de confiar, monitorización fuera del modelo y gobernanza con responsables y respuesta a incidentes. La clave: los modelos de lenguaje siguen instrucciones, no aplican ninguna política de seguridad. Las reglas en el prompt reducen el riesgo, pero no sustituyen a un control.
Control en tiempo de ejecución con el Agent Control Standard →La revisión, los escaneos y las reglas para agentes son obstáculos: solo funcionan si alguien detecta el error. Los puntos de ruptura interrumpen el ataque con independencia de ello: un proxy de registro con lista de permitidos, scripts de instalación desactivados, agentes sin acceso a los secretos del host, control del tráfico de salida. Un periodo de espera de unos días intercepta los paquetes recién registrados, pero no los nombres que un atacante ocupa desde hace tiempo. El objetivo son al menos tres puntos de ruptura independientes.
Según el art. 13(5) del CRA, los fabricantes deben actuar con la diligencia debida al integrar componentes de terceros, expresamente también de código abierto; la obligación se aplica a partir del 11/12/2027, y las obligaciones de notificación del art. 14, ya desde el 11/09/2026. Según las directrices de la Comisión del 27/07/2026, ni el repositorio de paquetes ni los desarrolladores individuales tienen obligaciones derivadas del CRA. NIS2 (§ 30 BSIG) exige seguridad en la cadena de suministro y en el desarrollo; DORA, el análisis y las pruebas del código de código abierto antes de su uso en producción, en la medida en que sea factible.
Al análisis en profundidad del CRA →Interactivo · Cadena de ataque
¿Dónde se rompe su cadena? Siete etapas desde el nombre de paquete inventado hasta la propagación
Un ataque de slopsquatting o typosquatting necesita todas las etapas. Active controles y observe en qué etapa se detiene el ataque, y si solo tiene un punto de ruptura o defensa en profundidad. La asignación de los controles a las etapas es una clasificación de VamiSec basada en las fuentes citadas.
Situación de partida
Solo obstáculosObstáculos sí, punto de ruptura no
Sus controles dificultan algunas etapas, pero no detienen el ataque con seguridad. La revisión, los escaneos y las reglas en el prompt dependen de que una persona o un modelo detecte el error.
- Puntos de ruptura
- 0 / 7
- Primer punto de ruptura
- —
- Etapas solo con obstáculos
- 3
- Controles activos
- 3 / 16
Activar controles
Visibilidad
Control
Validación
Monitorización
Gobernanza
interrumpe la etapa dificulta la etapa
Etapa 01 / 07
Un modelo sugiere un nombre de paquete que no existe, o una persona comete un error tipográfico
Los modelos de código añaden dependencias que suenan plausibles, pero que nunca se publicaron. El typosquatting, en cambio, se aprovecha de errores tipográficos y confusiones con nombres conocidos. Ambos empiezan antes incluso de que se ejecute un gestor de paquetes.
EvidenciaEn el estudio de Spracklen et al. (USENIX Security 2025), el 19,7 % de los paquetes sugeridos por 16 modelos de código no existía.
Qué actúa en esta etapa: un clic lo activa o desactiva
Las instrucciones en AGENTS.md o en archivos de reglas reducen la tasa de error, pero no son un control: el modelo puede ignorarlas y los atacantes pueden manipularlas.
Guía de OpenSSF para asistentes de código (08/2025)Mide con qué frecuencia sus herramientas inventan paquetes o sugieren comandos inseguros en su stack, y si sus controles funcionan.
HiddenLayer · Validation
Un atacante registra el nombre en npm o PyPI
Las alucinaciones recurrentes son predecibles. Quien las recopila ocupa precisamente esos nombres, con una descripción plausible, un README copiado y un script de instalación. Para el typosquatting bastan variantes de nombres populares.
EvidenciaA finales de 2023, Bar Lanyado subió a modo de prueba un paquete vacío con un nombre alucinado de forma recurrente: según Lasso Security, se descargó más de 30.000 veces en tres meses.
Qué actúa en esta etapa: un clic lo activa o desactiva
Sobre esta etapa usted no tiene influencia: la inscripción de un nombre se realiza en el registro público. Por eso son aún más importantes las etapas anteriores y posteriores.
El nombre llega al código, al manifiesto o al comando de instalación
A través de código copiado, el autocompletado, un agente que instala por su cuenta un módulo que falta o una documentación que transmite el nombre erróneo. Como muy tarde aquí ayuda un segundo par de ojos.
EvidenciaEl estudio encontró nombres alucinados que reaparecían una y otra vez en consultas repetidas: no llegan al código por azar, sino de forma reproducible.
Qué actúa en esta etapa: un clic lo activa o desactiva
Sin inventario, usted no sabe qué agentes trabajan con qué permisos en qué repositorios, y entonces ningún otro control puede aplicarse de forma generalizada.
HiddenLayer · VisibilityLas instrucciones en AGENTS.md o en archivos de reglas reducen la tasa de error, pero no son un control: el modelo puede ignorarlas y los atacantes pueden manipularlas.
Guía de OpenSSF para asistentes de código (08/2025)Mide con qué frecuencia sus herramientas inventan paquetes o sugieren comandos inseguros en su stack, y si sus controles funcionan.
HiddenLayer · ValidationEl agente puede sugerir paquetes, pero no instalarlos por sí mismo. Solo funciona si la persona que aprueba comprueba realmente el nombre.
HiddenLayer · ControlLos paquetes nuevos y los cambios en el lockfile se hacen visibles y necesitan una aprobación nominal antes de fusionarse.
ThreatLocker 2026; NIS2, art. 21(2)(e)
El gestor de paquetes resuelve el nombre y descarga el paquete
Sin lista de permitidos, proxy interno ni antigüedad mínima de versiones, npm o pip obtienen lo que figura en el registro, incluso un paquete creado hace dos días. Aquí se encuentra el punto de ruptura más sólido contra el slopsquatting.
EvidenciaUn proxy con lista de permitidos simplemente no conoce un nombre inventado: la instalación falla.
Qué actúa en esta etapa: un clic lo activa o desactiva
Los builds y los agentes solo descargan a través de un proxy que entrega exclusivamente paquetes aprobados. Un nombre inventado no existe allí.
NIS2, art. 21(2)(d)Los paquetes nuevos y los cambios en el lockfile se hacen visibles y necesitan una aprobación nominal antes de fusionarse.
ThreatLocker 2026; NIS2, art. 21(2)(e)Los squats recién registrados suelen descubrirse y eliminarse en pocos días. Un periodo de espera los intercepta, pero no los nombres que un atacante ocupa desde hace más tiempo.
Función del gestor de paquetes, p. ej., pnpm minimumReleaseAgenpm ci, --frozen-lockfile o --require-hashes impiden que un build resuelva otros paquetes sin que se note. Las nuevas dependencias, sin embargo, se añaden de forma deliberada.
ThreatLocker 2026Detecta paquetes maliciosos conocidos y patrones sospechosos, como scripts de instalación con acceso a la red, pero no detecta de forma fiable squats nuevos y desconocidos.
ThreatLocker 2026
Los scripts de instalación o el código de importación se ejecutan con los permisos del desarrollador, del agente o del build
Los scripts de ciclo de vida de npm (preinstall, install, postinstall) y el código de compilación de los paquetes fuente de Python se ejecutan automáticamente durante la instalación. Con agentes de código con acceso al terminal, a menudo nadie lo supervisa.
EvidenciaSegún Microsoft, en 2026 un único actor publicó 14 paquetes npm maliciosos en cuatro horas; sus hooks de instalación se ejecutaban automáticamente.
Qué actúa en esta etapa: un clic lo activa o desactiva
Interrumpe la vía de ejecución más frecuente de los paquetes npm maliciosos. El código que solo se ejecuta al importar sigue ahí; por eso, aísle además.
npm ignore-scripts; ThreatLocker 2026Detecta paquetes maliciosos conocidos y patrones sospechosos, como scripts de instalación con acceso a la red, pero no detecta de forma fiable squats nuevos y desconocidos.
ThreatLocker 2026Impide que los scripts de instalación inicien programas desconocidos y limita a qué pueden acceder los gestores de paquetes y los entornos de ejecución.
ThreatLocker 2026 · Zero Trust en tiempo de ejecuciónContenedor, devcontainer o VM sin credenciales montadas: aunque se ejecute código malicioso, no encuentra nada que merezca la pena robar.
HiddenLayer · Control; OWASP ASI05Detecta accesos a archivos de credenciales, procesos inesperados y destinos de red inusuales, fuera del modelo, que por sí mismo no aplica ninguna política de seguridad.
HiddenLayer · Monitoring
El código malicioso accede a los secretos
Credenciales de la nube, tokens de Vault, tokens de publicación de npm, claves SSH, el contexto de los jobs de CI: todo lo que sea accesible en el equipo, en el contenedor o en el build.
EvidenciaLos paquetes descritos por Microsoft apuntaban a credenciales de AWS, tokens de HashiCorp Vault, el contexto de GitHub Actions y tokens de publicación de npm.
Qué actúa en esta etapa: un clic lo activa o desactiva
Contenedor, devcontainer o VM sin credenciales montadas: aunque se ejecute código malicioso, no encuentra nada que merezca la pena robar.
HiddenLayer · Control; OWASP ASI05Impide que los scripts de instalación inicien programas desconocidos y limita a qué pueden acceder los gestores de paquetes y los entornos de ejecución.
ThreatLocker 2026 · Zero Trust en tiempo de ejecuciónLos tokens robados caducan pronto y permiten poco. Para publicar paquetes propios: Trusted Publishing en lugar de tokens almacenados.
ThreatLocker 2026; npm Trusted PublishingDetecta accesos a archivos de credenciales, procesos inesperados y destinos de red inusuales, fuera del modelo, que por sí mismo no aplica ninguna política de seguridad.
HiddenLayer · Monitoring
Los datos se filtran y los tokens robados extienden el ataque
Exfiltración a través de la red; con tokens de publicación robados, el atacante manipula otros paquetes. Así, un simple desliz se convierte en un ataque a la cadena de suministro de sus clientes.
EvidenciaEl gusano de npm Shai-Hulud se propagó por sí solo en 2025 a otros paquetes mediante tokens robados.
Qué actúa en esta etapa: un clic lo activa o desactiva
Sin conexión al exterior, el botín se queda en el contenedor, y el build solo llega a los registros a través del proxy.
HiddenLayer · ControlImpide que los scripts de instalación inicien programas desconocidos y limita a qué pueden acceder los gestores de paquetes y los entornos de ejecución.
ThreatLocker 2026 · Zero Trust en tiempo de ejecuciónLos tokens robados caducan pronto y permiten poco. Para publicar paquetes propios: Trusted Publishing en lugar de tokens almacenados.
ThreatLocker 2026; npm Trusted PublishingDetecta accesos a archivos de credenciales, procesos inesperados y destinos de red inusuales, fuera del modelo, que por sí mismo no aplica ninguna política de seguridad.
HiddenLayer · MonitoringAcorta el tiempo hasta la contención: quién rota qué tokens, quién bloquea qué, quién notifica a quién y en qué plazo.
HiddenLayer · Governance; CRA, art. 14
Modelo simplificado. Los ataques reales se saltan etapas: si se compromete un paquete legítimo, como ocurrió en 2025 con chalk y debug, la cadena empieza en la etapa 4 y solo actúan los controles a partir de ahí.
Interactivo · Mapa del harness
El harness es la superficie de ataque: diez componentes en los que confía un agente de código
Un agente de código es más que un modelo. Los archivos de reglas, las entradas, el terminal, los servidores MCP, las skills, los gestores de paquetes, los secretos, el repositorio, la red y el proveedor del modelo forman su harness, y cada uno de estos componentes es una relación de confianza que un atacante puede explotar. Seleccione un componente o una ruta de ataque documentada.
Ruta de ataque
Agente de códigoModelo + harness
Archivos de reglas, archivos de contexto y prompt del sistema
AGENTS.md, CLAUDE.md, .cursor/rules, copilot-instructions.md, documentación del proyecto y todo lo que acaba en la ventana de contexto.
ASI01ASI06LLM01
Amenazas y casos documentados- Rules File Backdoor
Caracteres Unicode invisibles (zero-width joiner, marcadores bidi) ocultan instrucciones en archivos de reglas de Cursor y GitHub Copilot. Las personas no los ven en la revisión, pero el modelo los obedece, en todas las sesiones e incluso en forks.
Pillar Security, 18/03/2025 — Cursor y GitHub lo consideran responsabilidad del usuario, sin CVE - CopyPasta
Una inyección de prompts camuflada como aviso de licencia en un comentario Markdown oculto de un README lleva al agente a copiar el payload en cada archivo que edita: la inyección se propaga por sí sola entre bases de código.
HiddenLayer, 04/09/2025 — demostrado en Cursor, también en Windsurf, Kiro y Aider
- ValidaciónTratar los archivos de reglas y de contexto como código: revisión, CODEOWNERS, comprobación automática de caracteres invisibles.
- ControlConsiderar el contenido del repositorio como entrada no fiable: no permitir que se ejecuten instrucciones procedentes de comentarios o archivos.
- MonitorizaciónGenerar alertas ante cambios en las configuraciones de agentes y en los archivos de reglas.
Prompts y contenido externo
Issues, pull requests, tickets, mensajes de chat, páginas web, documentación y salidas de herramientas que lee el agente.
ASI01LLM01
Amenazas y casos documentados- Instrucción de usuario falsificada
Un comentario HTML oculto en un README utilizaba las etiquetas de control internas de Cursor (<user_query>) para que el texto inyectado se tratara como instrucción del usuario. Una clave de API se filtró mediante curl, aunque curl figuraba en la lista de bloqueo.
HiddenLayer, 31/07/2025 — corregido en Cursor 1.3 - Toxic Agent Flow
Un issue preparado en un repositorio público llevó a un agente con el servidor MCP oficial de GitHub a escribir datos de repositorios privados en un pull request público.
Invariant Labs, 26/05/2025 — debido a la arquitectura, no es un fallo del servidor MCP
- ControlLimitar los agentes, por tarea, a un repositorio y a las fuentes de datos mínimas (least agency).
- ValidaciónComprobar las acciones planificadas antes de ejecutarlas, no solo el prompt.
- MonitorizaciónDetectar y bloquear flujos de datos entre destinos privados y públicos.
Terminal, sistema de archivos y llamadas a herramientas
Comandos de shell, permisos de escritura en archivos, configuración del IDE, listas de comandos permitidos y el modo de aprobación automática.
ASI02ASI05LLM06
Amenazas y casos documentados- Auto-approve mediante inyección
Una inyección de prompts hizo que GitHub Copilot, en modo agente, escribiera “chat.tools.autoApprove” en la configuración de VS Code. A partir de ahí, los comandos de terminal se ejecutaban sin confirmación: ejecución remota de código.
CVE-2025-53773, CVSS 3.1: 7,8 — agosto de 2025 - Elusión de las aprobaciones de comandos
Comandos permitidos como grep o echo se combinaban con comandos encadenados para eludir las confirmaciones y exfiltrar variables de entorno.
Gemini CLI (Tracebit, 07/2025, corregido en 0.1.14); Claude Code CVE-2025-54795 (CVSS 4.0: 8,7)
- ControlProhibir los modos de aprobación automática; instalación, push, borrado y cambios en la nube solo con aprobación humana.
- ControlEjecutar los agentes en contenedor, devcontainer o VM, sin acceso al host.
- MonitorizaciónRegistrar cada comando ejecutado con su contexto (quién, qué prompt, qué repositorio).
Servidores MCP y descripciones de herramientas
Servidores MCP locales y remotos, sus descripciones de herramientas, parámetros y archivos de configuración como mcp.json.
ASI04ASI02MCP Top 10
Amenazas y casos documentados- Tool Poisoning & Rug Pull
Las instrucciones ocultas en las descripciones de herramientas llegan al contexto con rango de sistema. Un servidor puede sustituir su descripción después de la aprobación: en el experimento se filtró así un historial de WhatsApp.
Invariant Labs, 01/04 y 07/04/2025 - MCPoison
Cursor aprobaba las entradas MCP solo por su nombre. Quien tenía acceso de escritura al repositorio sustituía, tras la aprobación, el comando y los argumentos: ejecución de código silenciosa y persistente.
CVE-2025-54136, CVSS 3.1: 7,2 — corregido en Cursor 1.3
- VisibilidadRegistrar todos los servidores MCP de cada agente, con origen, versión y permisos.
- ValidaciónComprobar las descripciones de herramientas y los metadatos ocultos antes de la aprobación; volver a aprobar con cada cambio.
- ControlPermitir solo servidores MCP aprobados en versiones fijas, no “latest”.
Skills, plugins y marketplaces
Skills de agente con frontmatter YAML, plugins, extensiones y los marketplaces de los que proceden.
ASI04
Amenazas y casos documentados- Skills maliciosas
Los metadatos del frontmatter YAML se cargan en el prompt del sistema antes de que se ejecute código. Permisos o disparadores ocultos modifican el comportamiento sin llamar la atención en las vistas del marketplace.
HiddenLayer, 28/07/2026 - ToxicSkills
Snyk analizó 3.984 skills: 534 (13,4 %) con al menos un hallazgo crítico, 76 confirmadas como maliciosas.
Snyk, 05/02/2026
- ValidaciónRevisar las skills antes de aprobarlas, incluido el frontmatter; verificar el origen y el autor.
- ControlPermitir solo skills seleccionadas de un catálogo interno.
- VisibilidadInventariar las skills instaladas en cada puesto de trabajo.
Gestores de paquetes y registros
npm, pnpm, Yarn, pip, uv, Poetry, y los registros públicos npm y PyPI de los que descargan.
ASI04ASI05LLM09LLM03
Amenazas y casos documentados- Slopsquatting
El modelo sugiere un paquete que no existe. Las alucinaciones recurrentes son predecibles: un atacante registra precisamente esos nombres.
Spracklen et al., USENIX Security 2025: 19,7 % de paquetes alucinados - Typosquatting y scripts de instalación
Los nombres similares capturan errores tipográficos; los scripts de ciclo de vida ejecutan código de inmediato durante la instalación, con los permisos del agente.
OWASP ASI05: instalaciones de paquetes no verificadas
- ControlObtener los paquetes solo a través de un proxy interno con lista de permitidos; antigüedad mínima de versiones.
- ControlDesactivar por defecto los scripts de instalación e imponer el lockfile.
- ValidaciónComprobar cada nueva dependencia frente a la documentación del fabricante, la antigüedad, los mantenedores y el repositorio.
Secretos, tokens e identidades
Credenciales de la nube, claves de API, tokens de npm y PyPI, claves SSH, credenciales de Git y la identidad con la que actúa el agente.
ASI03
Amenazas y casos documentados- Búsqueda de secretos mediante CLI de IA
En agosto de 2025, versiones comprometidas de Nx invocaron interfaces de línea de comandos de IA instaladas localmente — según Wiz, con flags que omiten las confirmaciones — para buscar secretos. El agente se convirtió en herramienta del atacante; según GitGuardian, lo consiguió en 95 de 366 sistemas atacados.
s1ngularity / Nx, 26/08/2025 - Clave de API antes del diálogo de confianza
Una configuración del repositorio redirigía las solicitudes de API a un endpoint ajeno antes de que el usuario confiara en el proyecto: la clave de API podía filtrarse.
Claude Code CVE-2026-21852, CVSS 4.0: 5,3 — corregido en 2.0.65
- ControlCredenciales de corta duración y alcance limitado (OIDC) en lugar de tokens de larga duración; ningún secreto de producción en los sistemas de los agentes.
- ControlDar a los agentes una identidad propia con permisos mínimos, no la del desarrollador.
- MonitorizaciónDetectar accesos a archivos de credenciales y usos inusuales de tokens.
Repositorio, pipelines y release
Ramas, pull requests, flujos de trabajo de CI, configuración de build, pipelines de release y permisos de publicación.
ASI04ASI08
Amenazas y casos documentados- Extensión comprometida en la release
Un token de GitHub con permisos demasiado amplios en la configuración de build permitió hacer commit de código en la extensión Amazon Q; la versión 1.84.0 contenía una instrucción de borrado dirigida al agente. No se ejecutó debido a un error de sintaxis.
AWS-2025-015 / CVE-2025-8217 — corregido en 1.85.0 - Configuración desde el repositorio
Archivos del proyecto iniciaban servidores MCP o código antes de que el usuario confiara en el proyecto.
Codex CLI CVE-2025-61260; Claude Code CVE-2025-59536 (CVSS 4.0: 8,7)
- ControlProtección de ramas y revisión obligatoria también para los commits de agentes; los agentes no pueden fusionar por sí mismos.
- ControlPermisos mínimos para los tokens de las pipelines; Trusted Publishing en lugar de tokens de publicación almacenados.
- GobernanzaIncluir las identidades de los agentes en el concepto de autorizaciones y recertificarlas periódicamente.
Red y tráfico de salida
Conexiones salientes de agentes, gestores de paquetes y jobs de build, incluidos los dominios permitidos que sirven como canal de exfiltración.
ASI02
Amenazas y casos documentados- Exfiltración a través de destinos permitidos
Los secretos se filtran mediante solicitudes HTTP, DNS o commits en repositorios públicos, a menudo a través de destinos autorizados para el trabajo.
Entre otros, s1ngularity 2025, Tracebit 2025
- ControlLimitar el tráfico saliente de agentes y builds a destinos autorizados (deny by default).
- MonitorizaciónGenerar alertas ante destinos, volúmenes de datos y patrones de carga inusuales.
Modelo, proveedor e IA en la sombra
Los modelos utilizados, sus proveedores, el tratamiento de datos y las herramientas que los empleados usan sin aprobación.
LLM09ASI10
Amenazas y casos documentados- Alucinación y no determinismo
El mismo modelo sugiere paquetes y comandos distintos para la misma tarea: la seguridad no puede delegarse en el modelo.
OWASP LLM09: Unsafe Code Generation - IA en la sombra
Las cuentas y extensiones privadas eluden el inventario, las aprobaciones y el registro de actividad.
HiddenLayer: Visibility & Monitoring
- GobernanzaDefinir en una política las herramientas, los modelos y las clases de datos permitidos.
- VisibilidadDetectar la IA en la sombra mediante datos de identidad, licencias y endpoints.
- MonitorizaciónSupervisar el uso de la API y los consumos de cómputo anómalos.
Los casos con número CVE están corregidos; las versiones con la corrección figuran en el advisory correspondiente. Los valores CVSS se indican con su versión (3.1 o 4.0) y no son directamente comparables. La asignación de los controles a las cinco capas sigue el modelo de HiddenLayer (28/07/2026) y es una clasificación de VamiSec.
Interactivo · Comprobación del nombre de paquete
¿Nombre de paquete plausible o trampa? Compruebe una sugerencia
Introduzca un nombre de paquete que le haya sugerido un asistente, un agente o un README. La comprobación compara localmente con paquetes de npm y PyPI muy difundidos, detecta patrones típicos de typosquatting y combosquatting y marca nombres ficticios que suenan plausibles. Solo el registro puede mostrar si un nombre es inventado: la comprobación le proporciona los comandos de verificación adecuados.
npm install
Ejemplos
La comprobación se ejecuta íntegramente en su navegador: no se envía ni se almacena nada, y no se realiza ninguna consulta a npm ni a PyPI.
Aún no se ha introducido ningún nombre
Escriba un nombre de paquete, por ejemplo, de una sugerencia de IA, un README o el log de un agente.
La comprobación de 5 minutos antes de cada nueva dependencia
- Contrastar con la documentación del fabricanteNo con la respuesta de la IA, sino con la documentación o el repositorio del proyecto. ¿Coincide exactamente el nombre?
- Antigüedad, mantenedores, descargasRecién creado, apenas descargas, cambio de mantenedor poco antes de la versión: deténgase y pregunte.
- Revisar los scripts de instalaciónpreinstall, postinstall o código de compilación que descarga contenido adicional o abre conexiones son una señal de alarma.
- Repositorio y provenance¿Hay un repositorio vinculado, encaja el código con la descripción, existe build provenance?
- Aprobar y fijarIncorporar solo a través de la lista de permitidos, fijar la versión y revisar el diff del lockfile en el pull request.
Interactivo · Matriz de obligaciones
¿Qué norma se aplica dónde? Ocho ámbitos de control, cinco marcos normativos y guías
No existe una ley específica para las dependencias sugeridas por IA ni para los agentes de código, pero el CRA, NIS2 junto con la BSIG (ley alemana del BSI), DORA, el AI Act y la responsabilidad por productos defectuosos se aplican en puntos concretos. Seleccione su rol para resaltar los marcos normativos pertinentes, y una celda para ver la referencia legal y la clasificación. Solo el texto legal es vinculante; las guías son una orientación no vinculante sobre el estado de la técnica.
Su rol
| Ámbito de control × marco normativo | CRAArt. 14 desde el 11/09/2026; art. 13 y anexo I a partir del 11/12/20275 | NIS2 / BSIGen vigor8 | DORAaplicable desde el 17/01/20257 | AI Actescalonado desde 20252 | Resp. productospara productos introducidos en el mercado después del 09/12/2026; a través del Derecho nacional1 | GuíasOrientación7 |
|---|---|---|---|---|---|---|
| Selección y procedencia de componentes | — | — | ||||
| Inventario y SBOM | — | — | ||||
| Desarrollo seguro y pruebas, también para código de IA | — | — | ||||
| Cambios y aprobaciones | — | — | — | |||
| Integridad y protección frente a software malicioso | — | — | — | |||
| Vulnerabilidades en componentes y notificación | — | — | ||||
| Responsabilidad de la dirección y competencias | — | — | ||||
| Clasificación, responsabilidad y sanciones | — | — |
Seleccione una celda para ver la referencia legal y la clasificación. Con el filtro de roles oculta los marcos normativos que no son pertinentes para su perfil.
Cyber Resilience Act, Reglamento (UE) 2024/2847Art. 14 desde el 11/09/2026; art. 13 y anexo I a partir del 11/12/2027
- Selección y procedencia de componentesArt. 13(5)
Los fabricantes deben actuar con la diligencia debida al integrar componentes de terceros, expresamente también en el caso de software libre y de código abierto; el alcance depende del riesgo (considerando 34). La obligación se aplica a partir del 11/12/2027. Según las directrices no vinculantes de la Comisión C(2026) 5252 (ejemplo 34), ni el repositorio de paquetes ni los desarrolladores individuales tienen obligaciones derivadas del CRA: la diligencia debida recae en el fabricante integrador.
- Inventario y SBOMAnexo I, parte II, punto 1
Identificar y documentar los componentes, entre otras cosas mediante una SBOM en un formato habitual y legible por máquina que cubra al menos las dependencias de primer nivel. El CRA no prescribe actualmente ningún formato; la página de aplicación de la Comisión no recoge ningún acto de ejecución conforme al art. 13(24) (disposición potestativa) (a 27/07/2026). Se aplica a partir del 11/12/2027.
- Desarrollo seguro y pruebas, también para código de IAAnexo I, parte I, punto 2, letras a, b, j · parte II, punto 3
Sobre la base de la evaluación de riesgos y en la medida en que sea aplicable: comercializar productos sin vulnerabilidades explotables conocidas, con una configuración segura por defecto, limitar la superficie de ataque y probar la seguridad de forma eficaz y periódica. Se aplica a partir del 11/12/2027.
- Vulnerabilidades en componentes y notificaciónArt. 13(6) · art. 14
A partir del 11/12/2027: notificar las vulnerabilidades de los componentes integrados a su fabricante o mantenedor (art. 13(6)). Desde el 11/09/2026: notificar las vulnerabilidades explotadas activamente simultáneamente al CSIRT coordinador y a ENISA a través de la Single Reporting Platform: alerta temprana en un plazo de 24 horas, notificación en un plazo de 72 horas, informe final a más tardar 14 días después de que se disponga de una medida correctora.
- Clasificación, responsabilidad y sancionesArt. 64(2) y (10)
Las infracciones del anexo I, del art. 13 y del art. 14 pueden sancionarse con hasta 15 millones de euros o el 2,5 % del volumen de negocios anual mundial, si este importe es superior. No hay multas para los administradores de software de código abierto (open-source software stewards); las microempresas y pequeñas empresas están exentas en caso de incumplir el plazo de alerta temprana de 24 horas.
Directiva NIS2 (UE) 2022/2555 y BSIG (ley alemana del BSI, en vigor desde el 06/12/2025)en vigor
- Selección y procedencia de componentesArt. 21(2)(d) y (3) · § 30(2) n.º 4 BSIG
Las medidas de gestión de riesgos incluyen la seguridad de la cadena de suministro. Según el art. 21(3) de NIS2, al elegir las medidas para la cadena de suministro deben tenerse en cuenta las vulnerabilidades específicas de los proveedores directos, la calidad global de sus productos y sus prácticas de ciberseguridad, incluidos los procesos de desarrollo seguro; la BSIG no lo recoge literalmente, pero puede invocarse mediante la interpretación conforme a la Directiva.
- Inventario y SBOMRegl. de Ejecución 2024/2690, anexo, punto 6.1.2(c)
Al adquirir productos TIC, solicitar información sobre los componentes de hardware y software utilizados. Vinculante solo para los tipos de entidades digitales mencionados en el reglamento de ejecución, como los proveedores de servicios de nube y los proveedores de servicios gestionados.
- Desarrollo seguro y pruebas, también para código de IAArt. 21(2)(e) · § 30(2) n.º 5 BSIG
Medidas de seguridad en la adquisición, el desarrollo y el mantenimiento de sistemas de TI, componentes y procesos, incluida la gestión y divulgación de vulnerabilidades.
- Cambios y aprobacionesRegl. de Ejecución 2024/2690, anexo, punto 6.2
Normas de desarrollo seguro en todas las fases, incluidos requisitos de seguridad para los entornos de desarrollo; vinculante para los tipos de entidades digitales enumerados y, para los demás, una buena orientación.
- Integridad y protección frente a software maliciosoRegl. de Ejecución 2024/2690, anexo, puntos 6.6.1(c) y 6.9
Parches solo de fuentes fiables y con comprobación de integridad; protección frente a software malicioso y no autorizado mediante medidas de detección y prevención.
- Vulnerabilidades en componentes y notificación§ 30(2) n.º 5 BSIG
La gestión y la divulgación de vulnerabilidades forman parte de las medidas mínimas; según la clasificación de VamiSec, ello incluye detectar y tratar con rapidez las dependencias comprometidas.
- Responsabilidad de la dirección y competenciasArt. 20 NIS2 · § 38 BSIG
El órgano de dirección aplica las medidas, las supervisa, responde conforme al Derecho de sociedades en caso de incumplimiento culposo de sus obligaciones y participa periódicamente en formaciones.
- Clasificación, responsabilidad y sanciones§ 65(2), (5)–(7) BSIG
Multas si no se adoptan o no se documentan las medidas del § 30(1): hasta 10 millones de euros para entidades esenciales y 7 millones de euros para entidades importantes; con un volumen de negocios total superior a 500 millones de euros, hasta el 2 % o el 1,4 % del volumen de negocios total, respectivamente.
DORA, Reglamento (UE) 2022/2554, y RTS (UE) 2024/1774aplicable desde el 17/01/2025
- Selección y procedencia de componentesRTS, art. 16(8)
El código fuente de proveedores terceros de servicios TIC y de proyectos de código abierto debe analizarse y probarse antes de su uso en producción, en la medida en que sea factible. Se aplica a las entidades financieras sujetas al marco completo de gestión del riesgo de TIC (título II).
- Inventario y SBOMRTS, art. 10(2)(d)
Hacer un seguimiento del uso de bibliotecas de terceros y de código abierto por parte de los servicios TIC que soportan funciones críticas o importantes, incluidas las versiones y las actualizaciones.
- Desarrollo seguro y pruebas, también para código de IARTS, art. 16(3) y (4)
Revisiones del código fuente con pruebas estáticas y dinámicas, así como pruebas de seguridad de los paquetes de software, a más tardar en la fase de integración, con independencia de si el código lo ha escrito una persona o un agente.
- Cambios y aprobacionesArt. 9(4)(e) · RTS, art. 17(1)
Todos los cambios en los sistemas de TIC se registran, prueban, evalúan, aprueban, implementan y verifican; la aprobación y la implementación están separadas funcionalmente. Si un agente sugiere una nueva dependencia, según la clasificación de VamiSec se trata de un cambio, con aprobación por parte de una instancia independiente.
- Integridad y protección frente a software maliciosoRTS, art. 16(7)
Prever controles para proteger la integridad del código fuente; según la clasificación de VamiSec, esto incluye también lo que un agente puede escribir en el repositorio y en la configuración.
- Vulnerabilidades en componentes y notificaciónRTS, art. 10(2)(d)
Supervisar las versiones y actualizaciones de las bibliotecas utilizadas: requisito previo para reaccionar con rapidez ante un paquete comprometido.
- Responsabilidad de la dirección y competenciasArt. 28(1)
Las entidades financieras siguen siendo plenamente responsables en todo momento cuando utilizan servicios TIC; según la clasificación de VamiSec, también en el caso de servicios de agentes de código contratados externamente (SaaS), que probablemente se consideren servicios TIC.
Reglamento de IA (UE) 2024/1689, modificado por el Reglamento (UE) 2026/1744escalonado desde 2025
- Responsabilidad de la dirección y competenciasArt. 4, modificado por el Reglamento (UE) 2026/1744
Los proveedores y responsables del despliegue de sistemas de IA adoptan medidas para fomentar la alfabetización en materia de IA. Desde el Ómnibus Digital (en vigor desde el 27/07/2026) ya no es necesario garantizar un nivel de competencia determinado de cada persona.
- Clasificación, responsabilidad y sancionesArt. 6(2) · anexo III
El desarrollo de software no figura en el anexo III: un asistente de código con IA no suele ser un sistema de IA de alto riesgo. Las obligaciones de los arts. 53 y 55 recaen en los proveedores de los modelos GPAI, no en las empresas que utilizan agentes de código.
Directiva sobre responsabilidad por productos defectuosos (UE) 2024/2853para productos introducidos en el mercado después del 09/12/2026; a través del Derecho nacional
- Clasificación, responsabilidad y sancionesArt. 4, punto 1 · art. 8(1) · art. 11(2)
El software es un producto. La responsabilidad del fabricante abarca también los daños causados por componentes defectuosos integrados bajo su control; la falta de actualizaciones de software necesarias para la seguridad no le exime. Se aplica a los productos introducidos en el mercado después del 09/12/2026 y solo a los daños sufridos por personas físicas. La Directiva actúa a través del Derecho nacional; a 08/10/2026 no se ha verificado la promulgación del proyecto de ley del Gobierno alemán (BT-Drs. 21/4297).
BSI, ANSSI, ENISA, OWASP, HiddenLayer — orientación no vinculanteOrientación
- Selección y procedencia de componentesENISA 03/2026 · BSI CON.8.A6 · Grundschutz++ DEV.4.2
ENISA menciona expresamente el slopsquatting y recomienda la visibilidad de todos los paquetes seleccionados por IA. El IT-Grundschutz del BSI prevé obtener las bibliotecas de fuentes fiables (CON.8.A6), y Grundschutz++, como requisito SOLLTE (recomendado), prohibir los artefactos de fuentes poco fiables o desconocidas (DEV.4.2), expresamente también paquetes y modelos.
- Inventario y SBOMBSI TR-03183-2 v2.1.0 · Grundschutz++ DEV.4.3
SBOM con resolución recursiva de dependencias, al menos hasta el primer componente fuera del alcance del suministro, en CycloneDX 1.6 o superior o SPDX 3.0.1 o superior: más profunda que el mínimo del CRA.
- Desarrollo seguro y pruebas, también para código de IABSI/ANSSI 2024 · OWASP LLM09
Los asistentes de código con IA no sustituyen a desarrolladores experimentados; revisar el código generado y hacer que el aseguramiento de la calidad crezca al mismo ritmo que la productividad. OWASP clasifica las bibliotecas inventadas en LLM09 como Unsafe Code Generation.
- Cambios y aprobacionesHiddenLayer · Control
Aprobación humana para las acciones de gran alcance, permisos mínimos por defecto y una revisión de los prompts del sistema y de las configuraciones predeterminadas antes del despliegue.
- Integridad y protección frente a software maliciosoBSI CON.8.A20 · Grundschutz++ DEV.4.4
Comprobar si presentan vulnerabilidades los componentes externos desconocidos sin revisiones consolidadas; garantizar la integridad mediante suma de comprobación o certificado criptográfico.
- Vulnerabilidades en componentes y notificaciónENISA 03/2026
Cheat sheets para la selección, la integración con lockfiles y verificación de hashes, la monitorización y la corrección; gestión de vulnerabilidades reforzada para los paquetes seleccionados por IA.
- Responsabilidad de la dirección y competenciasHiddenLayer · Governance
Un responsable para cada agente productivo, inclusión de los agentes de código en los modelos de amenazas y en la gobernanza de la IA, respuesta a incidentes específica para agentes, revisión periódica de los permisos y de las integraciones de confianza.
- Obligación vinculante
- Vinculante para determinados destinatarios o de forma indirecta
- Guía, no vinculante
Actualizado a 08/10/2026. La asignación a los ámbitos de control es una clasificación de VamiSec y no constituye asesoramiento jurídico. Las citas de actos jurídicos de la UE se basan en las versiones originales en inglés; las directrices de la Comisión y los documentos de ENISA, el BSI y OWASP no son vinculantes.
Texto completo
Slopsquatting y agentes de código en detalle: 13 capítulos, del panorama actual al plan de 90 días
Los capítulos van de la situación actual, pasando por la mecánica de los ataques, a las cinco capas de protección, la higiene de dependencias, las obligaciones derivadas del CRA, NIS2, DORA y el AI Act y el plan de implantación. Cada cifra está respaldada por una fuente; obligación, práctica y recomendación de VamiSec se señalan por separado.
De la sugerencia a la ejecución
Las herramientas de código con IA forman parte del día a día de los desarrolladores. Desde que los agentes instalan paquetes y llaman a herramientas por sí mismos, el riesgo se desplaza de la sugerencia errónea a la ejecución sin supervisión.
En poco tiempo, las herramientas de IA han pasado de ser un experimento a formar parte del equipamiento básico del desarrollo de software. En la Stack Overflow Developer Survey 2025, el 84 % de los encuestados afirmó utilizar herramientas de IA en el proceso de desarrollo o tener previsto hacerlo (2024: 76 %). En uso efectivo estaban en el 78,5 % de los casos, y a diario en el 47,1 %. En 2025, apenas un tercio utilizaba agentes de IA en el trabajo (alrededor del 31 %), y el 37,9 % no tenía planes en ese sentido.
84 %utilizan herramientas de IA o tienen previsto hacerlo (Stack Overflow 2025)
73 %utilizan asistentes y agentes de código a diario (Stack Overflow 2026)
> 1 millónpull requests del Copilot Coding Agent, de mayo a septiembre de 2025 (Octoverse)
+178 %crecimiento de los repositorios públicos con SDK de LLM, hasta más de 1,1 millones (Octoverse 2025)
Un año después, el foco se ha desplazado. En la encuesta de 2026 (30.903 respuestas válidas de 169 países), los asistentes y agentes de código son, con un 66 %, el caso de uso de IA más importante, por delante de los chatbots de uso general (63 %). Stack Overflow resume que la «inmensa mayoría» utiliza ya a diario asistentes y agentes de código (73 %); la cifra describe ambos en conjunto, no solo los agentes. El Octoverse 2025 de GitHub apunta en la misma dirección: más de 180 millones de desarrolladoras y desarrolladores, de los cuales unos 36 millones son nuevos, y casi el 80 % de los nuevos utiliza Copilot ya en su primera semana. GitHub no indica una tasa de aceptación de los pull requests del Coding Agent.
Los asistentes sugieren, los agentes ejecutan
Para la seguridad, importa menos cuánto código escribe un modelo que lo que se le permite hacer por sí mismo. Un asistente hace una sugerencia que una persona lee, acepta o descarta. Un agente trabaja en el terminal, ejecuta npm install o pip install, integra servidores MCP (Model Context Protocol, la interfaz con herramientas y fuentes de datos externas) y skills (paquetes de instrucciones reutilizables para agentes) y lee como contexto el contenido del repositorio, las issues y la documentación. HiddenLayer señala que los agentes pueden adoptar paquetes con typosquatting con menos revisión humana y que los servidores MCP remotos pueden cambiar sin que la organización lo advierta (HiddenLayer, 16/07/2026).
| Dimensión | Asistente (sugerencia) | Agente (ejecución) |
|---|---|---|
| Nombre del paquete | aparece en el chat o en el código; una persona decide sobre la instalación | se instala directamente en el terminal |
| Contexto | el prompt de la desarrolladora o el desarrollador | README, issues, archivos de reglas, descripciones de herramientas, páginas web: cada fuente es una posible vía de entrada para la inyección de prompts, es decir, instrucciones ocultas en los datos |
| Permisos | ninguno propio | los de la sesión: sistema de archivos, red, tokens, perfiles en la nube |
| Extensiones | apenas | servidores MCP, skills, hooks, plugins |
| Punto de control | revisión antes del commit | diálogo de aprobación, salvo que se apruebe automáticamente |
Comparación simplificada; valoración de VamiSec.
Está observado que los agentes ejecutan instrucciones de instalación sin comprobar quién es el propietario: unos investigadores encontraron en 6.214 dominios 8.265 archivos llms.txt o llms-full.txt; 120 de ellos remitían a paquetes o dominios no registrados. Después de ocupar algunos de esos nombres con paquetes baliza (beacon), una empresa de la lista Fortune 500 dio señales de vida en menos de una hora; las cadenas de procesos apuntaban a Claude, OpenAI Codex y Nous Research Hermes (según Schneier, citando a Ars Technica, 09/2026). No se trata de una alucinación —los nombres procedían de la documentación de los fabricantes—, pero sigue la misma lógica: quien ocupa primero un nombre libre determina lo que instala el agente. Tampoco las versiones son seguras: según Sonatype, en unas 37.000 recomendaciones de actualización generadas por IA analizadas, GPT-5 alucinó el 27,8 % de las versiones de componentes.
Tres fuentes de partida y su valoración
ThreatLocker, 15/09/2026
Blog de fabricante sobre typosquatting y slopsquatting en npm y PyPI. Cita a Spracklen et al. y recomienda la comprobación de paquetes, listas de dependencias aprobadas o un registro interno o proxy, la fijación de versiones con lockfiles, el análisis de composición de software (SCA), la desactivación de los scripts de ciclo de vida y builds aisladas con credenciales de corta duración. Valoración: los dos incidentes allí citados (Microsoft 2026, Check Point 2024) son typosquatting clásico.
HiddenLayer, 28/07/2026
Marco para agentes de código y su harness, el entorno de ejecución formado por prompts, herramientas, skills y servidores MCP en torno al modelo. Cinco capas: visibilidad, control, validación, monitorización, gobernanza. Conceptual, sin estadísticas propias.
Harsh, dev.to, 06/10/2026
Prueba propia con 30 prompts cotidianos de npm en tres herramientas de código; cada una sugirió al menos un nombre de paquete inexistente. Una muestra, no un estudio: cada prompt se ejecutó una sola vez, por lo que no puede calcularse una tasa. El propio autor califica el resultado de «una señal, no un veredicto».
La idea central de este análisis en profundidad: hoy, la cadena de suministro de software empieza en el prompt. Un nombre de paquete que un modelo sugiere o que un agente toma de un archivo de skill es el primer eslabón de una cadena que, a través del registro, la resolución y la ejecución, llega hasta los tokens robados y la propagación. Quien solo evalúa el modelo pasa por alto las etapas en las que realmente puede interrumpirse un ataque.
Typosquatting: antiguo, pero industrializado
Registrar nombres de paquete que se prestan a confusión es un patrón antiguo. Lo nuevo son la velocidad, la automatización y unos objetivos que ahora se encuentran en las propias herramientas de IA.
En el typosquatting, un atacante registra un nombre tan parecido al de un paquete popular que puede confundirse con él, y apuesta por las erratas, la copia descuidada o las herramientas automatizadas. Los registros públicos asignan los nombres a quien llega primero; basta con una cuenta nueva. Los patrones son pocos:
| Patrón | Principio | Ejemplo documentado |
|---|---|---|
| Omisión | faltan caracteres | «suport-color», claramente inspirado en supports-color (SANDWORM_MODE, Socket 2026) |
| Inserción, sustitución, transposición | se añade, se sustituye o se intercambia un carácter | «reqjuests» (requests), «tensoflom» (tensorflow) – Check Point 2024 |
| Homoglifos | caracteres visualmente similares, como rn en lugar de m o una cifra en lugar de una letra | «jeIlyfish» con I mayúscula en lugar de l (PyPI, notificado el 01/12/2019, en línea desde el 11/12/2018; robaba claves SSH y GPG) |
| Separadores | variación de guion, guion bajo o punto | «crossenv» en lugar de cross-env (npm, 01/08/2017; transmitía variables de entorno; se retiraron unos 40 paquetes de la cuenta hacktask) |
| Prefijo, sufijo, marca | nombre conocido más un añadido como -setup, -helper o -utility | imitaciones de herramientas de OpenSearch y Elasticsearch, en parte con URL de repositorio falsificada (Microsoft 2026); imitaciones de Claude Code (Socket 2026) |
| Confusión de scope | un paquete con scope (@nombre/…) imita a uno sin él, o al revés | no documentado de forma individual en los casos analizados; en el caso de Microsoft aparecieron paquetes con y sin scope propio (@vpmdhaj) |
Nombres de ejemplo de Check Point (28/03/2024), Microsoft (28/05/2026), Socket (20/02/2026) y de los casos históricos crossenv (npm, 2017) y jeIlyfish (PyPI, 2019). No los instale.
Del autor aislado a la producción en cadena
Check Point, marzo de 2024 (PyPI)
Más de 500 paquetes maliciosos en dos oleadas (unos 200 y después más de 300), cada uno desde una cuenta de maintainer propia: las cuentas se crearon el 26/03 y las subidas se produjeron al día siguiente. En Windows, setup.py descargaba una segunda etapa que robaba contraseñas y archivos y sustituía el software de monederos de criptomonedas. PyPI retiró los paquetes poco después de la notificación.
Microsoft, 28/05/2026 (npm)
Una cuenta recién creada publicó en cuatro horas 14 paquetes que imitaban herramientas de OpenSearch, Elasticsearch, DevOps y configuración. Los hooks de instalación sustraían credenciales de AWS (IMDSv2, roles de tareas de ECS, STS, Secrets Manager en al menos 16 regiones), tokens de HashiCorp Vault, tokens de GitHub Actions junto con su contexto y tokens de npm con permisos de publicación.
21.764paquetes de código abierto maliciosos en el primer trimestre de 2026 (Sonatype)
46 al díanuevos paquetes npm maliciosos de media, el 75 % de todos los casos nuevos (Sonatype, T1 2026)
+73 %aumento de las detecciones de paquetes de código abierto maliciosos en 2025; casi el 90 % correspondió a npm (ReversingLabs)
Ni Check Point ni Microsoft relacionan estas campañas con la IA; se trata de typosquatting e imitación de marcas. Lo llamativo es el objetivo: se buscan entornos de build, roles en la nube y tokens de publicación, precisamente los permisos con los que trabajan también los agentes de código. Sonatype considera que el abuso de la confianza en nombres, herramientas y flujos de publicación conocidos fue el vector de ataque más eficaz del primer trimestre de 2026.
SANDWORM_MODE: el typosquatting apunta al agente
Marca la transición una campaña descrita por Socket el 20/02/2026: al menos 19 paquetes npm con typosquatting, tres de ellos imitaciones de Claude Code, robaban credenciales de npm, GitHub, CI y criptomonedas, así como claves de API de LLM de nueve proveedores. Además, registraban un servidor MCP propio en la configuración de Claude Code, Claude Desktop, Cursor, VS Code Continue y Windsurf. Sus herramientas, con nombres inocuos como index_project o lint_check, contenían una inyección de prompts: el asistente debía leer las claves SSH, las credenciales de AWS, .npmrc y .env y ocultar este paso al usuario. Para propagarse, el malware utilizaba tokens de npm robados, flujos de trabajo pull_request_target introducidos de forma subrepticia y SSH como vía alternativa.
Valoración de VamiSec: aquí el paquete solo abre la puerta. La verdadera carga útil es una modificación permanente del entorno del agente, que actúa en cada sesión futura con los permisos de la desarrolladora o el desarrollador.
Lo que hacen los registros, y dónde termina
- Comprobación de typosquatting: según PyPI, detecta y marca automáticamente el posible typosquatting al crear un proyecto; PyPI no indica umbrales ni cifras (balance anual de 2025).
- Cuarentena: los administradores pueden retirar proyectos del índice sin eliminarlos. Desde agosto de 2024 afectó a unos 140 proyectos, de los que solo uno volvió a liberarse (PyPI, 30/12/2024). En marzo de 2026, la cuarentena ya se activaba de forma automatizada a través de notificadores de confianza.
- Marcador de estado: mediante PEP 792, las API del índice señalan el estado «quarantined»; los instaladores deben advertir de ello.
- Tiempo de respuesta: en 2025, PyPI tramitó más de 2.000 notificaciones de malware, el 66 % en un plazo de cuatro horas y el 92 % en un plazo de 24 horas.
Los límites son estructurales. Todas estas medidas actúan después de la subida; la ventana de tiempo hasta la retirada sigue existiendo. También npm respondió a Shai-Hulud bloqueando las subidas que contenían indicadores conocidos, igualmente de forma reactiva. Y una comprobación de similitud solo detecta lo que se parece a un nombre existente. Precisamente por eso fracasa con los nombres que un modelo de lenguaje inventa libremente.
Slopsquatting: cuando el modelo inventa el nombre
Los modelos de lenguaje inventan nombres de paquete de forma reproducible y rara vez reconocibles como erratas. Quien registra primero uno de esos nombres determina lo que se instala.
El término slopsquatting se atribuye a Seth Larson (Python Software Foundation); lo difundió Andrew Nesbitt el 08/04/2025. Designa lo siguiente: un modelo de lenguaje alucina un nombre de paquete inexistente y un atacante lo registra con código malicioso. La medición de referencia procede de Spracklen et al. (USENIX Security 2025, Distinguished Paper Award), que no utilizan el término.
19,7 %de los 2,23 millones de referencias a paquetes, alucinadas (440.445)
205.474nombres de paquete inventados únicos
43 %de las alucinaciones se repitieron en las diez repeticiones (muestra: 500 prompts)
48,6 %de los nombres de Python inventados: a seis o más cambios de carácter de paquetes reales
Los investigadores hicieron que 16 modelos de código generaran 576.000 muestras de código en Python y JavaScript. Se consideró alucinado lo que el 10/01/2024 no existía en PyPI o npm, lo que constituye un límite inferior. El 19,7 % se refiere a las referencias a paquetes, no a las muestras de código.
| Hallazgo | Resultado (Spracklen et al.) | Consecuencia para la defensa |
|---|---|---|
| Tipo de modelo | Comerciales, 5,2 % de media; código abierto, 21,7 % (solo tres modelos comerciales, todos de OpenAI) | La elección del modelo reduce el riesgo, pero no lo elimina |
| Temperatura | A mayor temperatura, más alucinaciones (máximo: GPT-4 8,9 %, GPT-3.5 31,8 %); otros parámetros de decodificación no ayudaron | También los ajustes conservadores generan paquetes inventados |
| Reproducibilidad | 500 prompts, diez veces cada uno: 43 % en todas las ejecuciones, 58 % más de una vez, 39 % nunca más | Muchos nombres inventados son predecibles y, por tanto, registrables |
| Especificidad del modelo | El 81 % de los nombres procedía de uno solo de los 16 modelos | Intersección pequeña; el riesgo depende del modelo |
| Distancia entre nombres | De 76.489 nombres de Python: 13,4 % con distancia de Levenshtein 1–2, 37,9 % con 3–5, 48,6 % con 6 o más | En su mayoría no son erratas: la detección clásica de typos no funciona |
| Confusión de lenguaje | El 8,7 % de los nombres de Python inventados son paquetes npm reales | Un nombre existente no es automáticamente el correcto |
| Contramedidas en el modelo | RAG (Retrieval-Augmented Generation), self-refinement y fine-tuning ayudan; el fine-tuning redujo la tasa en DeepSeek un 83 %, pero el rendimiento en HumanEval cayó del 51,4 % al 25,3 % | Corregir el modelo cuesta calidad: los controles deben situarse también fuera del modelo |
Spracklen et al., USENIX Security 2025 (arXiv:2406.10279 v3). Distancia de Levenshtein = número de cambios de un solo carácter entre dos nombres. La reproducibilidad se estudió con cuatro modelos y Python.
Evidencias de la investigación y la práctica, de 2023 a 2026
En 2023, Bar Lanyado demostró en Vulcan Cyber que ChatGPT 3.5 recomendaba paquetes no publicados en más de 40 de 201 preguntas sobre Node.js y en más de 80 de 227 preguntas sobre Python. Para su estudio de seguimiento, publicado en 2024 en Lasso Security, subió un paquete vacío con el nombre alucinado de forma reiterada huggingface-cli (el real: huggingface_hub[cli]); según Lasso, obtuvo más de 30.000 descargas auténticas en tres meses. Alibaba incluyó pip install huggingface-cli en el primer commit del README de su repositorio GraphTranslator (26/02/2024).
Modelos frontera 2026 (preprint)
Aleksandr Churilov repitió la metodología en 2026 con cinco modelos actuales: tasas del 4,62 % al 6,10 %. Los cinco inventaron 127 nombres idénticos; tras la notificación coordinada, 53 seguían siendo registrables (a abril de 2026). Sin revisión por pares; la extracción mediante expresiones regulares y las listas de referencia de 2024 pueden distorsionar los valores.
Agentes (Trend Micro, 2025)
Los agentes de código con razonamiento inventaron aproximadamente la mitad de nombres de paquete que los modelos base, pero no cero; ni siquiera Cursor con validación en vivo mediante servidores MCP.
Muestra de dev.to (06/10/2026)
En la prueba propia descrita al principio, Claude Haiku 4.5 inventó dos nombres de paquete, GitHub Copilot uno y ChatGPT/Codex tres; dos aparecieron en varias herramientas y, deliberadamente, no se publicaron. No es un valor medido, pero sí un indicio de que el problema persiste.
react-codeshift (Aikido, 21/01/2026)
Un nombre npm nunca publicado, mezcla de jscodeshift y react-codemod, figuraba como comando npx en agent skills generadas por IA y llegó a al menos 237 repositorios. Aikido lo registró como marcador de posición inofensivo y atribuye las descargas posteriores a agentes que seguían esas skills.
HalluSquatting (Spira et al., 2026)
También se alucinan repositorios y skills: en los escenarios de prueba, hasta el 85 % y el 100 %, respectivamente. Los recursos registrados de antemano surtieron efecto en los seis asistentes de código probados en el 20 al 65 % de los intentos. Con una búsqueda web previa, Cursor CLI clonó correctamente en el 93,4 % de los casos; sin búsqueda, en el 0,9 %. Preprint; no se conocen infecciones reales.
Hasta ahora, ningún ataque documentado
A 08/10/2026 no se conoce ningún caso documentado públicamente en el que un atacante haya registrado con fines maliciosos un nombre demostrablemente alucinado y las víctimas lo hayan instalado a raíz de una sugerencia de IA. Que PhantomRaven (2025), por ejemplo, aprovechara el slopsquatting es una valoración de Koi sin evidencia publicada. Tampoco para los 53 nombres de Churilov observan Socket e InfoWorld registros maliciosos.
Valoración de VamiSec: esto no es motivo para bajar la guardia. Las condiciones previas están documentadas: las alucinaciones se repiten, una pequeña intersección es común a varios modelos y los marcadores de posición inofensivos recibieron instalaciones reales, últimamente, al parecer, por parte de agentes. Al mismo tiempo, un acierto sigue siendo difícil de detectar: el nombre no suele parecer una errata, y Seth Larson considera difícil, probablemente imposible, cuantificar los intentos de instalación de paquetes alucinados (The Register, 12/04/2025). Por tanto, la ausencia de casos documentados no demuestra que el riesgo sea bajo.
El detonante: scripts de instalación, código de importación y tokens
Un nombre de paquete erróneo solo se vuelve peligroso cuando se ejecuta código. Los incidentes de 2025/2026 muestran lo corto que es el camino entre la instalación, los tokens robados y la autopropagación.
Entre la sugerencia de un nombre y el daño se encuentra la ejecución. Los gestores de paquetes ofrecen para ello varios puntos de detonación, y no todos pueden desactivarse con un solo interruptor. El consejo habitual de desactivar los scripts de ciclo de vida (ignore-scripts) es correcto, pero incompleto.
| Punto de detonación | Cuándo se ejecuta el código | Caso documentado | ¿Lo detiene npm ignore-scripts? |
|---|---|---|---|
| Scripts de ciclo de vida de npm (preinstall, install, postinstall) | durante la instalación | caso de Microsoft 05/2026; Shai-Hulud 09 y 11/2025 | sí |
| Paquete fuente de Python (setup.py) | durante la instalación desde el paquete fuente | Check Point 2024 | no aplicable (pip) |
| Archivo .pth | en cada inicio del intérprete de Python, sin import | litellm 1.82.8 (24/03/2026): el archivo figuraba en RECORD y las comprobaciones de hash no saltaron | no; no es un script de ciclo de vida |
| Código en tiempo de importación | en el primer import o require | señalado por OWASP en ASI05 | no |
| Dependencia Git | durante la instalación: un .npmrc incluido puede sobrescribir la ruta al programa git | motivo de --allow-git=none (GitHub, 18/02/2026) | no |
| Dependencia por URL | la carga útil se descarga durante la instalación desde una dirección HTTP, invisible en el tarball del registro | PhantomRaven (según Koi, 10/2025) | la descarga posterior, no; para ello, --allow-remote=none |
Fuentes: Microsoft 28/05/2026; Check Point 28/03/2024; Snyk 24/03/2026; GitHub Changelog 18/02/2026; The Register 30/10/2025; OWASP Top 10 for Agentic Applications 2026.
Seis incidentes, un patrón
- 1CLI de IA como herramienta del atacantes1ngularity/Nx – 26/08/2025
A través de un flujo de trabajo pull_request_target con inyección de shell, los atacantes se hicieron con el token de npm y publicaron versiones maliciosas de Nx durante unas cuatro horas. La carga útil buscaba CLI de IA instaladas localmente y, según Wiz, las iniciaba con --dangerously-skip-permissions, --yolo o --trust-all-tools para inventariar secretos. Según GitGuardian, solo lo logró en 95 de 366 sistemas objetivo (alrededor del 26 %); en total se hicieron públicos 2.349 secretos únicos.
- 2Phishing, clipper de criptomonedaschalk/debug – 08/09/2025
Un maintainer cayó en un correo de phishing de support@npmjs[.]help; el dominio se había registrado el 05/09/2025. Versiones maliciosas de 18 paquetes populares (Aikido; Socket cuenta 19 versiones), con más de 2.000 millones de descargas semanales según Aikido, sustituían en el navegador las direcciones de monederos interceptando fetch, XMLHttpRequest y window.ethereum.
- 3Gusano mediante tokens robadosShai-Hulud – septiembre de 2025
Un gusano autorreplicante inyectaba scripts post-install, buscaba secretos con TruffleHog, en variables de entorno y en metadatos de la nube y publicaba más paquetes con los tokens de npm sustraídos. GitHub retiró más de 500 paquetes comprometidos; Wiz atribuye la campaña a credenciales procedentes de s1ngularity.
- 4preinstall y puerta trasera en runnersShai-Hulud 2.0 – desde el 24/11/2025
La segunda oleada se activaba ya en la fase preinstall, camuflada como instalador de Bun, registraba los hosts infectados como runners de GitHub autoalojados y, según Wiz, creó más de 25.000 repositorios maliciosos. Si no conseguía robar credenciales ni exfiltrar datos, intentaba, según Unit 42, destruir el directorio personal.
- 5Equipo del maintainer comprometidoaxios – 31/03/2026
Tras una acción de ingeniería social y la infección de su equipo con un RAT (troyano de acceso remoto), aparecieron a través de la cuenta personal del maintainer principal axios 1.14.1 y 0.30.4 con una dependencia adicional que, en varias etapas, descargaba más malware, incluido un RAT, durante unas tres horas. En su alerta del 20/04/2026, CISA recomendó expresamente ignore-scripts=true y min-release-age=7 (días) en el .npmrc, así como MFA resistente al phishing.
- 6Provenance válida, el agente como lugar de persistenciaTanStack / Mini Shai-Hulud – 11/05/2026
A través de un flujo de trabajo pull_request_target y una caché de Actions envenenada, los atacantes leyeron de la memoria del runner el token OIDC para Trusted Publishing y publicaron 84 versiones maliciosas de 42 paquetes @tanstack, con provenance SLSA Build Level 3 válida (StepSecurity). Para persistir, el malware escribía un hook SessionStart en .claude/settings.json que ejecuta node .vscode/setup.mjs cada vez que se inicia Claude Code, además de una tarea de VS Code con runOn: folderOpen.
Dos lecciones
Primera: la provenance —la prueba firmada de qué repositorio y de qué build procede un paquete— acredita el origen, no la inocuidad. En palabras de StepSecurity, la provenance SLSA confirma qué pipeline generó un artefacto, no si se comportó como estaba previsto. En el caso «Miasma» de Red Hat, 32 paquetes manipulados también llevaban firmas válidas, porque los atacantes utilizaron la vía legítima de publicación OIDC (Microsoft, 02/06/2026). La propia documentación de npm señala que la provenance no garantiza un contenido libre de código malicioso.
Segunda: los tokens son la moneda de la propagación. La mayoría de estas cargas útiles buscaban credenciales de npm, GitHub, la nube o API de LLM y utilizaban los permisos de publicación para la siguiente oleada. Valoración de VamiSec: cada sesión de agente en la que sean accesibles tokens en texto claro, perfiles en la nube o permisos de escritura en el registro es un posible punto de partida de una oleada así. Mini Shai-Hulud muestra además que la propia configuración del agente se convierte en lugar de persistencia.
El harness es la superficie de ataque
Los ataques a agentes de código documentados aquí no rompen ningún modelo. Explotan la confianza: en archivos de contexto, descripciones de herramientas, configuraciones y lógica de aprobación.
En su marco del 28/07/2026, HiddenLayer sitúa una tesis en el centro: la superficie de ataque esencial de un agente de código no es el modelo, sino su harness, es decir, los prompts, las herramientas, las skills, los servidores MCP y la lógica de orquestación en torno al modelo. HiddenLayer ve la raíz de los ataques en una confianza mal depositada. Ya el 16/07/2026, la empresa había calificado toda fuente que lee un agente como posible punto de entrada para la inyección indirecta de prompts.
> 30vulnerabilidades en IDE con IA, 24 de ellas con CVE (IDEsaster, 06/12/2025)
13,4 %534 de 3.984 agent skills analizadas con al menos un hallazgo crítico (Snyk)
76skills o cargas útiles maliciosas confirmadas (Snyk, 05/02/2026)
Clases de ataque documentadas
| Ataque (fuente, fecha) | Componente del harness explotado | Referencia OWASP |
|---|---|---|
| Inyección de prompts oculta en Cursor (HiddenLayer, 31/07/2025) | Un comentario HTML oculto en un README utiliza tokens de control del prompt de sistema para pasar por instrucción del usuario; elusión de la lista de denegación mediante $() y fuga de claves SSH a través de herramientas sin aprobación. Corregido en Cursor 1.3 | LLM01, ASI01, ASI02 |
| CopyPasta (HiddenLayer, 04/09/2025) | Inyección de prompts en un comentario oculto del README, camuflada como licencia; el agente la copia en cada archivo que edita (Cursor, también Windsurf, Kiro, Aider) | LLM01, ASI01, ASI06 |
| Rules File Backdoor (Pillar Security, 18/03/2025) | Archivos de reglas de Cursor y GitHub Copilot con caracteres Unicode invisibles; sin CVE, ambos fabricantes lo consideran responsabilidad del usuario | LLM01, ASI01, ASI06 |
| Tool poisoning, rug pull (Invariant Labs, 04/2025) | Instrucciones ocultas en descripciones de herramientas MCP; un rug pull modifica la descripción después de la aprobación. Demo: el agente leyó ~/.cursor/mcp.json y ~/.ssh/id_rsa | ASI02, ASI04 |
| Toxic Agent Flow (Invariant Labs, 26/05/2025) | Una issue maliciosa en un repositorio público hace que el agente escriba contenido privado en un PR público a través del servidor MCP oficial de GitHub: un fallo de arquitectura, no del servidor | ASI01, ASI02; escenario OWASP en ASI04 |
| RCE por autoaprobación, CVE-2025-53773 (GitHub Copilot en VS Code/Visual Studio; CVSS 3.1: 7,8) | La inyección de prompts escribe chat.tools.autoApprove: true en .vscode/settings.json; desaparecen las confirmaciones y se ejecutan comandos de terminal | LLM01, ASI05 |
| MCPoison, CVE-2025-54136 (Cursor; CVSS 3.1: 7,2) | Las entradas MCP solo se aprobaban por nombre de clave; después, un commit sustituye el comando. Corregido en Cursor 1.3 | ASI04, ASI05 |
| CurXecute, CVE-2025-54135 (Cursor; CVSS 3.1: 8,6) | Un mensaje de Slack leído mediante MCP hace que el agente escriba una entrada en mcp.json que se inicia sin aprobación, incluso si se rechaza el cambio. Corrección: 1.3.9 según la entrada CVE, 1.3 según los descubridores | LLM01, ASI01, ASI05 |
| Archivos de proyecto en Claude Code y Codex CLI (2025/2026) | CVE-2025-59536: el código del proyecto se ejecutaba antes del diálogo de confianza (CVSS 4.0: 8,7). CVE-2026-21852: un ajuste del repositorio podía enviar la clave de API a un endpoint ajeno antes del diálogo (CVSS 4.0: 5,3). CVE-2025-61260: la configuración del proyecto iniciaba comandos MCP sin aprobación (CVSS 3.1: 9,8, puntuación de CISA-ADP) | ASI04, ASI05 |
| ToxicSkills (Snyk, 05/02/2026) | Skills de ClawHub y skills.sh: inyección de prompts en el 91 % de las 76 skills maliciosas confirmadas, código malicioso en todas | ASI01, ASI04 |
| Amazon Q para VS Code 1.84.0 (AWS-2025-015, CVE-2025-8217) | Un token de GitHub con permisos excesivos en CodeBuild permitió introducir código; según The Register, el prompt debía borrar archivos y recursos en la nube. Según AWS, no llegó a ejecutarse por un error de sintaxis; no se borró nada | ASI01, ASI02, ASI04 |
LLM01 Prompt Injection, LLM09 Misinformation (OWASP Top 10 for LLM Applications 2025); ASI01 Agent Goal Hijack, ASI02 Tool Misuse and Exploitation, ASI04 Agentic Supply Chain Vulnerabilities, ASI05 Unexpected Code Execution (RCE), ASI06 Memory & Context Poisoning (OWASP Top 10 for Agentic Applications 2026). Asignación: valoración de VamiSec; Amazon Q y Toxic Agent Flow según OWASP. CVSS 4.0 y 3.1 no son directamente comparables.
OWASP clasifica las propias alucinaciones de paquetes en LLM09 Misinformation («Unsafe Code Generation»), no en LLM03 Supply Chain. En la lista agéntica, ASI05 cubre el caso de que paquetes instalados sin comprobar ejecuten código malicioso durante la instalación o la importación; ASI04 recomienda, entre otras cosas, comprobar si hay typosquats.
IDEsaster (Ari Marzouk) describe para Copilot, Cursor, Windsurf, Claude Code y otros IDE con IA una nueva cadena: inyección de prompts → herramientas → funciones básicas del IDE, como los esquemas JSON remotos o los ajustes del espacio de trabajo sobrescritos. A ello se suman errores en la lógica de aprobación y de sandbox de las CLI de agentes, como un diálogo de confirmación eludible en Claude Code (CVE-2025-54795, CVSS 4.0: 8,7) o una fuga del sandbox a través de un directorio de trabajo indicado por el modelo en Codex CLI (CVE-2025-59532, CVSS 4.0: 8,6).
Idea central: seguridad fuera del modelo
La mayoría de los casos comparten una estructura: el modelo hizo lo que su contexto le sugería. Donde los fabricantes introdujeron mejoras, no lo hicieron en el modelo, sino en el harness: mediante una nueva aprobación de las configuraciones MCP modificadas, el diálogo de confianza antes de cada ejecución, la comprobación canónica de rutas o listas de permitidos más restrictivas. En consecuencia, HiddenLayer titula así su capa de monitorización: la seguridad debe existir fuera del modelo. Valoración de VamiSec: trate los archivos de reglas, las configuraciones MCP, los hooks y las skills como código ejecutable —con revisión, control de versiones y aprobación— y cada fuente que lea el agente como entrada no fiable.
Visibilidad: conocer cada relación de confianza
Solo puede protegerse lo que se conoce. La primera capa registra agentes, modelos, componentes del harness, permisos y dependencias, incluidas las herramientas que nadie ha declarado.
Lo que recomienda HiddenLayer (práctica)
HiddenLayer titula la primera capa de su marco del 28/07/2026 «Understand Every Trust Relationship», es decir, comprender cada relación de confianza. Se refiere a cuatro elementos:
- Todos los agentes, modelos, harnesses, herramientas, servidores MCP y skills en uso, incluida expresamente la IA en la sombra.
- Los permisos de cada agente y los sistemas a los que puede acceder.
- El origen y la integridad de las herramientas, las skills y los servicios externos.
- Las interacciones en tiempo de ejecución entre agentes, herramientas, repositorios y sistemas externos.
El origen y la integridad no son un formalismo: los servidores MCP remotos pueden cambiar sin que la organización lo advierta (HiddenLayer, 16/07/2026). Por eso, un inventario que solo contiene nombres queda obsoleto sin que nadie lo note. Frente a la IA en la sombra, el BSI y la ANSSI recomiendan cuentas corporativas controladas en lugar de accesos privados y reglas claras sobre qué herramientas pueden utilizarse con qué datos. En su recomendación sobre gestores de paquetes del 10/03/2026, jurídicamente no vinculante, ENISA aconseja además tener visibilidad sobre todos los paquetes que seleccionan las herramientas de IA.
Implantación: lista de materiales de agentes y SBOM (recomendación de VamiSec)
Recomendamos llevar el inventario como lista de materiales de agentes (AI-BOM): un registro legible por máquina que recoja, para cada agente, la herramienta y su versión, el modelo y el proveedor, el modo de funcionamiento, los servidores MCP y skills conectados con su versión o hash, los archivos de reglas y la identidad utilizada. Junto a él figura la SBOM (Software Bill of Materials, lista de materiales de todos los componentes de software) de cada release. Ambas responden en caso de incidente a la misma pregunta: ¿dónde está el componente afectado?
| Qué registrar | Fuente de los datos | Responsable |
|---|---|---|
| Agentes y harness: herramienta, versión, modo | distribución de software, inventario de endpoints, listas de extensiones de los IDE | equipo de plataforma |
| Modelos y proveedores | contratos, compras, logs del gateway de IA o del proxy | compras junto con AppSec |
| Servidores MCP, skills, archivos de reglas | archivos de configuración en repositorios y directorios personales, p. ej., mcp.json, settings.json, AGENTS.md | responsables de los repositorios |
| Identidades y permisos de los agentes | proveedor de identidades, gestión de tokens del registro, la plataforma Git y la nube | IAM |
| Dependencias | generación de la SBOM en la pipeline de CI, lockfiles | equipo de producto |
| IA en la sombra | logs de DNS y del proxy cotejados con la lista de permitidos | seguridad de la información |
| Interacciones en tiempo de ejecución | telemetría de hooks de los agentes, logs de auditoría, EDR | SOC |
Recomendación de VamiSec. Adapte los roles a su organización; lo decisivo es que haya un responsable designado por cada fila.
En cuanto a la profundidad de la SBOM, conviene ser preciso. El CRA exige en el anexo I, parte II, punto 1 una SBOM en un formato habitual y legible por máquina que cubra como mínimo las dependencias de primer nivel, aplicable a partir del 11/12/2027; actualmente no prescribe un formato concreto. La BSI TR-03183-2 (versión 2.1.0), en cambio, exige para las SBOM conformes con la TR una resolución recursiva y menciona CycloneDX a partir de la 1.6 o SPDX a partir de la 3.0.1. El código malicioso puede llegar a través de dependencias transitivas: la versión maliciosa axios 1.14.1 añadía la dependencia plain-crypto-js, que descargaba etapas maliciosas adicionales (CISA, 20/04/2026). Por eso recomendamos la SBOM recursiva como estándar de trabajo, como buena práctica y no como obligación del CRA. Según ENISA (SBOM Adoption State of Play, junio de 2026), el 24 % de los encuestados necesita un análisis de profundidad completa, pero solo el 14 % lo obtiene.
Relación con la cadena de ataque
La visibilidad no es un punto de ruptura, pero sí la condición previa para todos los demás. Dificulta la etapa 03 (Adopción), porque los nuevos paquetes, servidores MCP y skills llaman la atención. Sin inventario, las listas de permitidos, el aislamiento y la monitorización no pueden imponerse de forma generalizada. Tras un incidente, limita la etapa 07 (Propagación): los repositorios, hosts y tokens afectados pueden identificarse de inmediato, en lugar de tener que buscarlos primero.
Evidencia: lista de materiales de agentes
Inventario versionado con fecha de actualización, persona responsable por entrada y cotejo periódico con el uso real.
Evidencia: configuración de referencia
Servidores MCP y skills aprobados por agente, con versión o hash; las desviaciones están documentadas.
Evidencia: SBOM por release
Formato, profundidad y momento de generación trazables, archivados junto con la documentación técnica.
Evidencia: cotejo de IA en la sombra
Análisis periódico de los datos del proxy o de DNS frente a la lista de permitidos, con las medidas adoptadas.
Anclaje normativo: las entidades financieras sujetas al marco completo de DORA deben hacer un seguimiento, conforme al art. 10(2)(d) del Reglamento Delegado (UE) 2024/1774 (RTS sobre gestión del riesgo de TIC), de las bibliotecas de terceros y de código abierto que utilizan los servicios TIC que soportan funciones críticas o importantes, incluidas sus versiones y actualizaciones. Grundschutz++ del BSI prevé como requisito SOLLTE (recomendado) documentar los componentes mediante una SBOM antes del release (DEV.4.3, con referencia a la TR-03183-2).
Control: limitar el daño de un compromiso
Tarde o temprano, un agente leerá una instrucción manipulada o sugerirá un paquete erróneo. La segunda capa garantiza que, en ese momento, tenga pocos permisos, alcance poco y no encuentre nada valioso.
Lo que recomienda HiddenLayer (práctica)
Bajo «Limit the Impact of Compromise», HiddenLayer menciona cinco medidas: el mínimo privilegio como norma, la aprobación humana para acciones con consecuencias, el acceso únicamente a herramientas, servidores MCP y skills aprobados, la limitación de las conexiones de red salientes innecesarias y la revisión de los prompts de sistema y de las configuraciones por defecto antes de su uso. El OWASP Top 10 for Agentic Applications 2026 amplía el mínimo privilegio a «Least Agency»: ninguna autonomía donde no se necesite. La guía de CISA, la NSA y las autoridades asociadas de Five Eyes del 01/05/2026 aconseja igualmente no conceder a los agentes un acceso amplio a datos sensibles y sistemas críticos.
Que los valores por defecto no son automáticamente seguros lo demuestran vulnerabilidades documentadas: antes de la versión 1.0.4, Claude Code contenía una lista demasiado amplia de comandos «seguros» a través de los cuales podía filtrarse el contenido de archivos sin confirmación (CVE-2025-55284, CVSS 4.0: 7,1). En GitHub Copilot (VS Code/Visual Studio), la obligación de confirmación podía desactivarse por completo mediante inyección de prompts (CVE-2025-53773, véase el capítulo 5).
Implantación en seis pasos (recomendación de VamiSec)
- 1Entorno de ejecuciónAislar
Los agentes con acceso al terminal y las builds se ejecutan en contenedores, devcontainers o máquinas virtuales, sin credenciales del host montadas, sin agente SSH ni perfiles en la nube. Si se ejecuta código malicioso, debe encontrar lo menos posible que merezca la pena robar.
- 2IdentidadAsignar una identidad propia
El agente no trabaja con los tokens personales de la desarrolladora, sino con una identidad propia y acotada: solo los repositorios y scopes que necesita la tarea, sin permiso de publicación.
- 3TokensCredenciales de corta duración
Publicar los paquetes propios mediante Trusted Publishing (OIDC) en lugar de con tokens almacenados; en npm, disponible de forma general desde el 31/07/2025, a partir de npm CLI 11.5.1. Donde sigan existiendo tokens, elegir la vigencia más corta que resulte practicable.
- 4Herramientas, MCP, skillsImponer listas de permitidos
Solo pueden cargarse herramientas, servidores MCP y skills aprobados; los paquetes llegan exclusivamente a través del proxy interno (véase Higiene de dependencias).
- 5RedLimitar el egress
Tráfico saliente solo hacia destinos aprobados. También las herramientas inofensivas transportan datos: en 2025, HiddenLayer mostró cómo una clave SSH se filtraba a través de la URL de imagen de un diagrama.
- 6ConfiguraciónDefinir los ajustes de forma centralizada
Autoaprobación desactivada; aprobación obligatoria para instalaciones, comandos de red y accesos de escritura a la configuración del agente. Bloquear flags como --dangerously-skip-permissions, --yolo o --trust-all-tools: según Wiz, el malware de s1ngularity invocaba las CLI de IA locales precisamente con ellos. Donde la herramienta admita políticas gestionadas de forma centralizada, estas deben prevalecer sobre los ajustes procedentes del repositorio.
7 díascaducidad por defecto de los nuevos tokens granulares de npm con permiso de escritura (desde mediados de octubre de 2025)
90 díasvigencia máxima de estos tokens
2 hvigencia de los tokens de sesión tras npm login
09/12/2025revocación definitiva de los tokens clásicos de npm
La aprobación humana solo es eficaz si la persona ve lo que aprueba. En la demo de tool poisoning de Invariant Labs, el diálogo de confirmación no mostraba las entradas completas. El BSI recomienda expresamente una confirmación por parte del usuario antes de que un LLM ejecute funciones (Evasion Attacks on LLMs, 06/11/2025). Recomendamos diálogos que muestren por completo el comando, el nombre del paquete y el destino, y pocas aprobaciones, tomadas en serio, en lugar de confirmaciones constantes.
Relación con la cadena de ataque
Esta capa aporta la mayoría de los puntos de ruptura: el aislamiento sin secretos del host interrumpe la etapa 06 (Acceso); el control del egress, la etapa 07 (Propagación); la lista de permitidos en el proxy, la etapa 04 (Resolución). La aprobación humana dificulta la etapa 03 (Adopción). Los tokens de corta duración y acotados limitan hasta dónde llegan las credenciales robadas.
Evidencias para auditores
- Configuración centralizada por agente (autoaprobación, obligaciones de aprobación, flags bloqueados) con historial de cambios.
- Definición de la imagen o del devcontainer sin credenciales montadas, junto con las reglas de egress.
- Inventario de tokens con identidad, scope y fecha de caducidad; Trusted Publishing para los paquetes propios.
- Muestras de los registros de aprobación.
Anclaje normativo: para las entidades esenciales e importantes, el art. 21(2)(e) de NIS2 y el § 30(2), segunda frase, n.º 5 BSIG exigen medidas de seguridad en la adquisición, el desarrollo y el mantenimiento. El Reglamento de Ejecución (UE) 2024/2690 exige, para los tipos de entidades allí mencionados, como los proveedores de servicios en la nube y de servicios gestionados, requisitos de seguridad para los entornos de desarrollo (anexo, punto 6.2). Las entidades financieras sujetas al marco completo de DORA deben separar la aprobación de los cambios de su solicitud y ejecución (art. 17(1) del RTS 2024/1774 en relación con el art. 9(4)(e) de DORA); un agente que aprueba sus propios cambios difícilmente es compatible con ello (valoración de VamiSec).
Validación: comprobar los componentes en lugar de confiar en suposiciones
Lo que un agente carga, ejecuta o escribe debe estar comprobado antes de que surta efecto: tanto los servidores MCP y las skills como los paquetes y el código generado.
Lo que recomienda HiddenLayer (práctica)
- Probar los agentes con entradas adversariales antes de su uso (red teaming).
- Comprobar las acciones propuestas antes de su ejecución.
- Comprobar las herramientas y skills de terceros, incluidos los metadatos ocultos.
- Aprobar versiones concretas en lugar de confiar de forma permanente en «latest».
El último punto apunta al rug pull: un servidor MCP modifica la descripción de su herramienta después de haber sido aprobado (Invariant Labs, 01/04/2025). MCPoison mostró el mismo patrón en la configuración: tras la primera aprobación, bastaba un commit para sustituir el comando de una entrada MCP sin nueva confirmación (CVE-2025-54136, véase el capítulo 5). Según The Register, el paquete npm no oficial postmark-mcp entregó 15 versiones inocuas antes de que la versión 1.0.16 enviara cada correo electrónico saliente con copia oculta a una dirección ajena.
Los metadatos ocultos son el segundo foco. Las instrucciones en las descripciones de herramientas son invisibles para los usuarios, pero el modelo las lee (Invariant Labs); los archivos de reglas pueden contener instrucciones en caracteres Unicode invisibles (Pillar Security, 18/03/2025). De las 3.984 agent skills analizadas por Snyk, 76 eran demostrablemente maliciosas (05/02/2026; detalles en el capítulo 5).
Implantación: aprobación por componente (recomendación de VamiSec)
| Componente | Qué comprobar | Artefacto de aprobación |
|---|---|---|
| Servidores MCP | origen, código fuente o imagen, descripciones completas de las herramientas, permisos y destinos de red solicitados | entrada en la lista de permitidos con versión y hash; cada cambio obliga a una nueva aprobación |
| Skills y archivos de reglas | texto en claro de las instrucciones, caracteres invisibles, comandos de instalación incrustados, referencias externas | revisión como si fuera código, CODEOWNERS, commit fijado |
| Paquetes | existencia, antigüedad, difusión, maintainers, scripts de instalación | revisión de dependencias en el pull request, entrada en el proxy |
| Configuración del agente | autoaprobación, hooks, entradas MCP, endpoint del modelo | cotejo con la configuración centralizada antes del despliegue |
| Código generado por IA | las mismas comprobaciones que para el código humano: revisión, SAST, DAST, pruebas | comprobaciones obligatorias en la pipeline, sin excepciones para los PR de agentes |
La fijación mediante hash e ID de commit también la recomienda el OWASP Top 10 for Agentic Applications 2026 (ASI04).
Para el código de IA no hay una vía especial. El BSI y la ANSSI señalan que los asistentes de código con IA no sustituyen a los desarrolladores experimentados y que las ganancias de productividad deben compensarse con más aseguramiento de la calidad (04/10/2024). Los archivos de instrucciones como AGENTS.md ayudan, pero no son un control. La guía de la OpenSSF para asistentes de código (01/08/2025) recomienda la instrucción de no añadir dependencias que puedan ser maliciosas o alucinadas. Esto puede reducir el riesgo, pero el modelo puede ignorar la regla, e instrucciones de skills de apariencia inofensiva pueden incluso reforzar las alucinaciones de paquetes (Hsu et al., aceptado para EMNLP 2026).
Red teaming antes del despliegue
- 1Definir escenarios
Tareas que provoquen sugerencias de paquetes; README, issues y descripciones de herramientas preparados con instrucciones ocultas; intentos de modificar los ajustes del agente o de leer archivos de credenciales.
- 2Ejecutar en la configuración objetivo
Exactamente con el modelo, el harness, los servidores MCP y las skills que se vayan a desplegar, en un entorno aislado.
- 3Medir
¿Con qué frecuencia inventa paquetes el agente? ¿Sigue instrucciones inyectadas? ¿Funcionan la aprobación, el proxy y el aislamiento de la capa 2?
- 4Repetir
Con cada cambio de modelo, versión de la herramienta o integración, y como prueba de regresión tras los incidentes.
Relación con la cadena de ataque: la validación dificulta las etapas 01 (Invención) y 03 (Adopción), porque los nombres inventados llaman la atención en las pruebas y en la revisión. La aprobación de versiones impide que un componente modificado sin aviso se descargue en la etapa 04 (Resolución). Evidencias para auditores: informe de red team por configuración de agente, lista de permitidos con versiones y hashes, actas de revisión de las nuevas dependencias, evidencias de pruebas del código generado por IA.
Anclaje normativo: para las entidades financieras sujetas al marco completo de DORA, el art. 16 del RTS 2024/1774 exige revisiones del código fuente con pruebas estáticas y dinámicas (apartado 3), pruebas de seguridad de los paquetes de software a más tardar en la fase de integración (apartado 4) y, en la medida de lo posible, el análisis y las pruebas del código fuente abierto antes de su paso a producción (apartado 8). El CRA exige a los fabricantes, a partir del 11/12/2027, pruebas y revisiones de seguridad eficaces y periódicas (anexo I, parte II, punto 3).
Monitorización: la seguridad no pertenece al modelo
Un modelo no impone ninguna política de seguridad. Por eso, la cuarta capa observa desde fuera lo que realmente hacen los agentes, los gestores de paquetes y las builds.
HiddenLayer justifica la cuarta capa de forma escueta: los modelos de lenguaje están diseñados para seguir instrucciones, no para imponer políticas de seguridad (en sustancia). Un control que solo figura en el prompt cae con la primera inyección de prompts que tenga éxito. Por eso, la supervisión se sitúa en el sistema operativo, la red, la pipeline y el harness. El OWASP Top 10 for Agentic Applications califica una observabilidad sólida de «no negociable».
Lo que HiddenLayer quiere observar (práctica)
- Movimientos de datos sensibles
- Uso de herramientas y operaciones con archivos
- Intentos de escalada de privilegios
- Actividad de IA en la sombra
- Uso de API y consumo de computación anómalo
Ideas de detección a partir de incidentes reales (recomendación de VamiSec)
Las campañas de los últimos meses aportan patrones concretos. Según StepSecurity, la oleada Mini Shai-Hulud en torno a TanStack se afianzó mediante un hook SessionStart de Claude Code y una tarea de VS Code (detalles en el capítulo 4). Según Socket, SANDWORM_MODE registraba un servidor MCP propio en la configuración de Claude Code, Cursor y otras herramientas. Según Microsoft, Miasma mantenía en reserva un canal de exfiltración latente a través de api.anthropic.com; según Snyk, el dominio de exfiltración de las releases de litellm se había registrado un día antes. Varias oleadas iniciaban Bun como entorno de ejecución, una forma de eludir la monitorización centrada en Node.
| Señal | Fuente | Respuesta |
|---|---|---|
| node, python o bun leen durante una instalación archivos de credenciales como ~/.npmrc, ~/.aws/credentials, ~/.ssh/, ~/.claude.json o .env | EDR, auditoría de acceso a archivos en puestos de trabajo y runners | detener el proceso, aislar el host, rotar los tokens accesibles |
| hooks, entradas MCP, valores de autoaprobación o tareas con runOn: folderOpen nuevos o modificados | monitorización de la integridad de archivos, diff en el pull request, telemetría de hooks | revertir el cambio, aclarar el origen, revisar el host |
| conexiones desde la build o el agente a dominios recién registrados o desconocidos | logs de DNS y del proxy | bloquear y evaluar el destino, revisar la sesión |
| escalada de privilegios: nueva regla sudo, /etc/hosts modificado, runner autoalojado recién registrado | EDR, log de auditoría de la plataforma Git | aislar el host, eliminar el runner, revisar los flujos de trabajo |
| entorno de ejecución inesperado, como Bun en la pipeline, o nuevos archivos .pth en site-packages | telemetría de procesos, logs de CI, monitorización de la integridad de archivos | cancelar el job, identificar el paquete desencadenante |
| consumo repentino de una clave de API de un modelo o accesos a servicios de IA no aprobados | facturación, gateway de IA, proxy | bloquear la clave, aclarar el uso |
Patrones de StepSecurity (11/05/2026), Socket (20/02/2026), Microsoft (02/06/2026), Snyk (24/03/2026) y Wiz (24/11/2025, runners autoalojados en Shai-Hulud 2.0). Asignación y respuestas: recomendación de VamiSec.
Telemetría mediante hooks de agentes
Varios agentes de código ofrecen interfaces de hooks que inician programas propios cuando se llama a herramientas. Recomendamos utilizarlas para registrar de forma centralizada las llamadas a herramientas, los comandos de shell y los accesos a archivos, y para comprobar las llamadas de riesgo antes de su ejecución. Sin embargo, esa misma interfaz es una vía de persistencia, como demuestra la oleada de TanStack; en Claude Code, los hooks de archivos de proyecto llegaron a ejecutarse temporalmente sin consentimiento (Check Point, corregido el 26/08/2025). Por eso, los hooks deben formar parte de la configuración gestionada de forma centralizada, y cada cambio en ella es en sí mismo una señal de alarma.
Relación con la cadena de ataque: la monitorización no interrumpe ninguna etapa de forma fiable, pero acorta el tiempo durante el cual las etapas 05 (Ejecución), 06 (Acceso) y 07 (Propagación) pasan desapercibidas. Los incidentes muestran lo cortas que son las ventanas: las versiones maliciosas de TanStack se marcaron como obsoletas tras unas 1,7 horas, y las de axios se retiraron tras unas tres horas. De ello concluimos que la detección propia debe reaccionar en horas, no en días.
Anclaje normativo: el Reglamento de Ejecución (UE) 2024/2690 exige, para los tipos de entidades allí mencionados, protección frente a software malicioso y no autorizado, incluidas medidas de detección (anexo, punto 6.9); para las demás entidades NIS2 sirve de orientación. La guía de Five Eyes sobre IA agéntica (01/05/2026) menciona expresamente la monitorización continua.
Evidencia: concepto de registro
Qué datos de agentes, builds y endpoints se recogen, con reglas de conservación y de acceso.
Evidencia: reglas de detección
Reglas documentadas con evidencia de prueba, por ejemplo, un acceso simulado a un archivo de credenciales señuelo.
Evidencia: registros de alertas
Muestras con tiempo de respuesta, evaluación y resultado.
Gobernanza: la seguridad necesita responsables
Los controles técnicos se deterioran si nadie es responsable de ellos. La quinta capa ancla los agentes de código en responsabilidades, políticas y procesos de emergencia.
Lo que recomienda HiddenLayer (práctica)
Bajo «Security Requires Ownership», HiddenLayer menciona cuatro puntos: una persona responsable (owner) para cada agente en uso productivo, la inclusión de los agentes de código en los modelos de amenazas y programas de gobernanza de IA existentes, procedimientos de respuesta a incidentes específicos para la IA agéntica y la revisión periódica de los permisos y de las integraciones de confianza. También la guía de Five Eyes del 01/05/2026 recomienda integrar los riesgos de la IA agéntica en los marcos existentes y practicar el modelado de amenazas.
Para las entidades NIS2, es una tarea de la dirección. Los órganos de dirección deben aprobar las medidas de gestión de riesgos, supervisar su aplicación y pueden ser considerados responsables (art. 20(1) y (2) de NIS2). En Alemania, el § 38 BSIG obliga a los órganos de dirección de las entidades esenciales e importantes a la aplicación, la supervisión y la formación periódica; la responsabilidad se rige por el derecho de sociedades. Por eso, una política para herramientas de código con IA debería estar aprobada por la dirección.
Elementos de una política para herramientas de código con IA (recomendación de VamiSec)
- Herramientas, modelos y modos de funcionamiento autorizados; uso solo a través de cuentas corporativas.
- Clases de datos: qué información puede introducirse en qué herramienta.
- Niveles de autonomía: qué puede hacer un agente por sí mismo, qué requiere aprobación y qué está prohibido.
- Reglas para paquetes: obtención solo a través del proxy interno, periodo de espera, ningún script de instalación sin aprobación.
- Proceso de aprobación para servidores MCP, skills y archivos de reglas, vinculado a una versión o un hash.
- Principio de los cuatro ojos para los merges, también en los pull requests de agentes.
- Registro, procedimiento de excepciones y recertificación de permisos e integraciones, por ejemplo, semestral.
- Formación: desde el Ómnibus Digital (Reglamento (UE) 2026/1744, en vigor desde el 27/07/2026), el art. 4 del Reglamento de IA exige a proveedores y responsables del despliegue medidas para apoyar la alfabetización en IA, pero no un nivel garantizado.
En el modelo de amenazas, el agente aparece como un actor propio con permisos; los archivos de reglas, las skills, los servidores MCP y las fuentes de paquetes son fronteras de confianza. El borrador de ENISA sobre desarrollo de software asistido por IA (v0.4, septiembre de 2026) describe para ello amenazas STRIDE como la introducción subrepticia de paquetes, skills o archivos de instrucciones maliciosos.
Playbook de respuesta a incidentes: paquete malicioso instalado o agente comprometido
- 1ContenerAislar
Desconectar de la red los hosts, contenedores y runners afectados, finalizar las sesiones de agente en curso y detener las pipelines que usen el paquete. Preservar las evidencias antes de reinstalar.
- 2ContenerRotar las credenciales
Todos los secretos accesibles: tokens del registro, tokens de la plataforma Git, accesos a la nube y a Vault, claves de API de modelos. Tras Shai-Hulud, CISA aconsejó expresamente la rotación. Sin el inventario de tokens de las capas 1 y 2, este paso queda incompleto.
- 3LimpiarRevisar lockfiles y cachés
¿Qué repositorios, lockfiles y cachés de paquetes y de CI contienen las versiones afectadas? En TanStack, el ataque se produjo a través de una caché de GitHub Actions envenenada: las cachés forman parte de la limpieza.
- 4LimpiarBuscar persistencia en la configuración del agente
Hooks y entradas MCP en las configuraciones de usuario y de proyecto, tareas de VS Code con runOn: folderOpen, nuevos runners autoalojados y flujos de trabajo, archivos .pth. En caso de duda, reinstalar en lugar de limpiar.
- 5NotificarComprobar las obligaciones de notificación
Desde el 11/09/2026, los fabricantes sujetos al CRA notifican las vulnerabilidades activamente explotadas de sus productos a través de la Single Reporting Platform, simultáneamente al CSIRT coordinador y a ENISA: alerta temprana en un plazo de 24 horas, notificación en un plazo de 72 horas e informe final a más tardar 14 días después de que esté disponible una medida correctora. Es relevante si el código malicioso ha podido llegar a un producto entregado (valoración de VamiSec; revisar jurídicamente en cada caso). Las entidades NIS2 y DORA comprueban en paralelo sus propias vías de notificación.
- 6AprenderAnalizar a posteriori
Documentar la causa, la etapa alcanzada y los puntos de ruptura que faltaban, recertificar permisos e integraciones e informar a los operadores del registro y a los maintainers.
Relación con la cadena de ataque: la gobernanza dificulta la etapa 07 (Propagación), porque está aclarado de antemano quién rota qué tokens, quién bloquea qué y quién notifica a quién. Al mismo tiempo, mantiene actualizadas las demás capas: sin recertificación, los permisos y las integraciones crecen de forma insidiosa.
Evidencia: registro de responsables
Cada agente productivo con persona responsable, finalidad, permisos y próxima fecha de revisión.
Evidencia: política aprobada
Acuerdo de la dirección con versión y ámbito de aplicación, junto con las evidencias de formación.
Evidencia: recertificación
Actas de la revisión de permisos e integraciones, incluidos los accesos retirados.
Evidencia: playbook ensayado
Ejercicio de mesa o técnico con fecha, participantes y mejoras derivadas.
Higiene de dependencias: lo que pueden hacer hoy npm, pnpm, Yarn, Bun, pip y uv
Los gestores de paquetes han incorporado mejoras notables en 2025 y 2026: tiempos de espera para las nuevas versiones y bloqueo de los scripts de instalación. Sin embargo, gran parte de ello no viene activado por defecto: tiene que activarlo usted.
En la obtención de paquetes, el peso principal recae en el periodo de espera —una antigüedad mínima de las nuevas versiones antes de su instalación— y en el bloqueo de los scripts de instalación. Preste atención a las unidades.
| Herramienta | Periodo de espera (desde la versión) | Por defecto 10/2026 | Scripts de instalación |
|---|---|---|---|
| npm | min-release-age en días (11.10.0) | ninguno | desde v12 (08/07/2026), allowScripts desactivado: scripts de dependencias solo tras aprobación mediante npm approve-scripts; --allow-git=none y --allow-remote=none predefinidos |
| pnpm | minimumReleaseAge en minutos (10.16) | 1 día (1440) desde pnpm 11 | desde v10, sin scripts de dependencias; pnpm 11: strictDepBuilds, aprobación mediante allowBuilds |
| Yarn | npmMinimalAgeGate (4.10), hoy como duración, p. ej., 1d | 1d desde 4.15 según el changelog; la documentación indica 1w | desde 4.14, enableScripts: false |
| Bun | minimumReleaseAge en segundos (1.3) | ninguno | solo una lista por defecto curada y trustedDependencies |
| uv | exclude-newer como duración relativa (0.9.17) | ninguno | posible código de instalación y de importación: prever aislamiento |
| pip | --uploaded-prior-to: fecha (26.0), duración en días (26.1) | ninguno | posible código de instalación y de importación: prever aislamiento |
| Renovate | presets security:minimumReleaseAgeNpm y …Pypi | 3 días, si el preset está activo | – |
| Dependabot | cooldown en días en dependabot.yml (GA 01/07/2025) | 3 días desde el 14/07/2026, solo actualizaciones de versión | – |
Estado: notas de la versión y documentación, comprobadas el 08/10/2026. En Python, el código de setup.py puede ejecutarse durante la instalación (Check Point, 2024) y el de los archivos .pth en cada inicio del intérprete (litellm 1.82.8).
Hay dos límites que deben tenerse en cuenta. En primer lugar, un periodo de espera intercepta las versiones maliciosas que, según pnpm, suelen detectarse y retirarse en el plazo de una hora, pero no un nombre alucinado que un atacante ocupa pronto y deja reposar. En segundo lugar, ignore-scripts es incompleto: las dependencias Git pueden ejecutar código a través de un .npmrc propio (contra ello, --allow-git=none desde npm 11.10.0), las dependencias por URL como en PhantomRaven necesitan --allow-remote=none (desde 11.15.0) y ningún bloqueo de scripts abarca el código de importación.
Configuración para builds y agentes (recomendación de VamiSec)
# Builds de CI y agentes: solo a través del proxy interno (marcador de posición)
registry=https://registry.intern.example/
# sin scripts de ciclo de vida
ignore-scripts=true
# solo versiones con más de 7 días de antigüedad (desde npm 11.10.0)
min-release-age=7
CISA recomendó ambos valores en la alerta sobre axios del 20/04/2026; en la alerta sobre Nx Console del 28/05/2026, CISA indicó al menos tres horas. Con ignore-scripts también dejan de ejecutarse los scripts pre y post propios; npm test y otros comandos iniciados explícitamente siguen funcionando.
# pyproject.toml: solo versiones con más de 7 días de antigüedad (desde uv 0.9.17)
[tool.uv]
exclude-newer = "7 days"
# Excepciones por paquete: exclude-newer-package
# pip desde 26.1: duración en días, además de hashes obligatorios
pip install --require-hashes --uploaded-prior-to P7D -r requirements.txt
uv acepta indicaciones como «7 days» o duraciones ISO 8601, pero no meses ni años. pip 26.0 solo admite momentos concretos; la opción solo surte efecto si el índice proporciona las horas de subida.
Excluir las actualizaciones de seguridad: un periodo de espera no debe retrasar las correcciones. Dependabot y Renovate lo omiten por defecto para las actualizaciones de seguridad, y los gestores de paquetes admiten listas de excepciones (min-release-age-exclude, minimumReleaseAgeExclude, minimumReleaseAgeExcludes, exclude-newer-package). PyPI aconseja combinar los periodos de espera con análisis de vulnerabilidades.
Lockfiles, revisión, proxy, provenance
En los entornos de CI y de agentes, instalar solo de forma reproducible: npm ci, pnpm install --frozen-lockfile, pip con --require-hashes. En el caso de LiteLLM, según PyPI, alrededor del 40 al 50 % de las instalaciones en la ventana del ataque no tenían versiones fijadas. OWASP describe el caso de un agente que regenera un lockfile a partir de especificaciones sin fijar y obtiene una versión menor comprometida; por eso, cada nueva dependencia y cada cambio en el lockfile necesitan una aprobación nominal en la revisión de dependencias. Técnicamente, esto lo impone un proxy de registro interno con lista de permitidos; el BSI y la ANSSI recomiendan una lista de permitidos de paquetes autorizados. Una mera comprobación de existencia no basta: el atacante puede haber registrado el nombre previamente (Spracklen et al.).
npm audit signatures comprueba las firmas del registro y las atestaciones de provenance (desde npm 9.5.0); desde el 14/11/2024, PyPI admite atestaciones conforme a PEP 740, que, según Trail of Bits, pip y uv no comprueban automáticamente. Ambas acreditan el origen, no la inocuidad: también los paquetes maliciosos de TanStack y Miasma llevaban provenance o firmas válidas (véase el capítulo 4). Como comprobación adicional es útil; como único criterio de aprobación, inadecuada.
Anclaje normativo: la recomendación de ENISA sobre gestores de paquetes (10/03/2026), jurídicamente no vinculante, aconseja utilizar registros oficiales y verificables, lockfiles y comprobaciones de integridad en CI/CD. Grundschutz++ prevé como requisitos SOLLTE (recomendados) prohibir los artefactos externos de fuentes desconocidas, comprobar su integridad y verificar si hay actualizaciones de seguridad (DEV.4.2, DEV.4.4, DEV.4.5); el Kompendium 2023 exige fuentes de confianza y la comprobación de los componentes desconocidos (CON.8.A6, CON.8.A20). El art. 21(2)(d) de NIS2 y el § 30(2), segunda frase, n.º 4 BSIG exigen seguridad de la cadena de suministro; a partir del 11/12/2027, los fabricantes sujetos al CRA tienen la obligación de diligencia debida respecto a los componentes de terceros conforme al art. 13(5), también expresamente para el código abierto.
Lo que exigen el CRA, NIS2, DORA y el AI Act
¿Quién es responsable cuando un agente de IA instala un paquete malicioso? En primer lugar, la empresa que incorpora o explota el componente, no el registro. Qué es hoy obligatorio, qué solo se aplica a partir del 11/12/2027 y qué es solo una guía.
El CRA, NIS2 y DORA parten de un enfoque similar: es responsable quien integra el componente o explota el sistema (valoración de VamiSec). Para el Cyber Resilience Act (CRA), lo muestra el ejemplo 34 de las directrices de la Comisión C(2026) 5252 del 27/07/2026: un desarrollador individual que publica una biblioteca libre de código abierto en un repositorio público de paquetes, y el propio repositorio, no tienen obligaciones derivadas del CRA. La obligación de diligencia debida del art. 13(5) recae, a partir del 11/12/2027, en el fabricante integrador, con un enfoque basado en el riesgo conforme al considerando 34. Las directrices no son vinculantes. Que el paquete lo eligiera una persona o un agente no cambia nada al respecto (valoración de VamiSec).
Cyber Resilience Act: obligación de notificación desde 2026, diligencia debida desde 2027
- Obligación desde el 11/09/2026 (art. 14(1)–(2)): notificar las vulnerabilidades activamente explotadas a través de la Single Reporting Platform (SRP) al CSIRT y a ENISA — alerta temprana en un plazo de 24 h, notificación en un plazo de 72 h, informe final a más tardar 14 días después de que esté disponible una medida correctora; también para los productos ya comercializados.
- Obligación a partir del 11/12/2027: diligencia debida con los componentes de terceros, incluido el software libre de código abierto (art. 13(5)); notificar las vulnerabilidades de los componentes a su fabricante o maintainer (apartado 6); no entregar productos con vulnerabilidades explotables conocidas (anexo I, parte I, punto 2, letra a).
- SBOM: el anexo I, parte II, punto 1 exige como mínimo las dependencias de primer nivel; solo la BSI TR-03183-2 v2.1.0 exige una resolución recursiva — buena práctica, no obligación del CRA. El CRA no prescribe ningún formato como CycloneDX o SPDX; la Comisión no recoge en su lista ningún acto de ejecución al respecto (art. 13(24), disposición potestativa; a 27/07/2026).
- Multas (art. 64(2)): por infracciones del anexo I, del art. 13 o del art. 14, hasta 15 millones de EUR o el 2,5 % del volumen de negocios anual mundial, si esta cuantía es superior.
NIS2 y BSIG: cadena de suministro y desarrollo como medidas mínimas
NIS2 exige seguridad en la cadena de suministro (art. 21(2)(d)) y en la adquisición, el desarrollo y el mantenimiento (letra e). El art. 21(3), según el cual las entidades, al elegir las medidas relativas a la cadena de suministro, tienen en cuenta también los procesos de desarrollo seguro de sus proveedores directos, no figura literalmente en el BSIG; puede invocarse mediante la interpretación conforme a la directiva. En Alemania se aplica desde el 06/12/2025 el § 30(2), segunda frase, n.º 4 y 5 BSIG; el órgano de dirección aplica, supervisa y responde, en caso de incumplimiento culposo, conforme al derecho de sociedades (§ 38 BSIG, art. 20 NIS2). Por medidas inexistentes o no documentadas, el § 65 prevé multas de hasta 10 millones de EUR (entidades esenciales) o 7 millones de EUR (entidades importantes) y, con un volumen de negocios total superior a 500 millones de EUR, de hasta el 2 % o el 1,4 % del volumen de negocios total. El Reglamento de Ejecución (UE) 2024/2690 solo es vinculante para los tipos de entidades enumerados en su art. 1, como los proveedores de servicios en la nube, de centros de datos y de servicios gestionados; para todos los demás sirve de orientación.
DORA: los anclajes precisos están en el RTS
Desde el 17/01/2025, DORA exige que los cambios en los sistemas de TIC se registren, prueben, evalúen, aprueben, implementen y verifiquen (art. 9(4)(e)), y mantiene la plena responsabilidad de las entidades financieras sobre los servicios TIC (art. 28(1)). Para las bibliotecas obtenidas libremente, el RTS 2024/1774 es más preciso (marco completo, título II): hacer un seguimiento de las bibliotecas para funciones críticas o importantes (art. 10(2)(d)), revisiones de código con pruebas estáticas y dinámicas (art. 16(3)), probar los paquetes de software a más tardar en la integración (apartado 4), proteger la integridad del código fuente (apartado 7), comprobar el código abierto antes de su paso a producción, en la medida de lo posible (apartado 8), y separar la aprobación y la implementación de los cambios (art. 17(1)). Un agente que hace merge de sus propios pull requests no encaja en ello (valoración de VamiSec).
AI Act y responsabilidad por productos
Según el AI Act, un asistente de código no suele ser un sistema de alto riesgo, ya que el desarrollo de software no figura en el anexo III. Para las empresas que lo utilizan queda el art. 4: desde el Ómnibus Digital (Reglamento (UE) 2026/1744, en vigor desde el 27/07/2026), deben adoptar medidas para apoyar la alfabetización en IA, sin tener que garantizar un nivel. Las obligaciones relativas a los modelos GPAI recaen en los proveedores de modelos, no en los usuarios. Según la Directiva sobre responsabilidad por productos defectuosos (UE) 2024/2853, el software es un producto; para los productos introducidos en el mercado después del 09/12/2026, el fabricante responde frente a las personas físicas también por los componentes defectuosos integrados bajo su control, y la falta de actualizaciones de seguridad no lo exime. La directiva surte efecto a través del derecho nacional; a 08/10/2026 no se ha verificado la promulgación del proyecto de ley del Gobierno alemán (BT-Drs. 21/4297).
| Norma | Referencia | Qué significa para las dependencias elegidas por IA | Aplicable desde |
|---|---|---|---|
| CRA · obligación | art. 14(1)–(2) | notificar en plazo a través de la SRP las vulnerabilidades activamente explotadas | 11/09/2026 |
| CRA · obligación | art. 13(5); anexo I, parte II, punto 1 | diligencia debida basada en el riesgo para cada componente de terceros integrado; SBOM como mínimo de primer nivel | 11/12/2027 |
| NIS2 / BSIG · obligación | art. 21(2)(d), (e); § 30(2), segunda frase, n.º 4, 5 BSIG | cadena de suministro y desarrollo como medidas mínimas documentadas | 06/12/2025 |
| Reglamento de Ejecución 2024/2690 · obligación para las entidades enumeradas | anexo, puntos 5.1.2 a), 6.1.2 c), 6.2, 6.6.1 c), 6.9 | entorno de desarrollo seguro, comprobación de la integridad, protección frente al malware | en vigor desde 2024 |
| DORA · obligación | art. 9(4)(e), art. 28(1); RTS 2024/1774, art. 10(2)(d), art. 16, art. 17(1) (título II) | nueva dependencia como cambio probado y aprobado por separado | 17/01/2025 |
| AI Act · obligación | art. 4 en la versión del Reglamento (UE) 2026/1744 | fomentar la alfabetización en IA, sin garantía de nivel | 02/02/2025; nueva redacción desde el 27/07/2026 |
| Responsabilidad por productos · tras la transposición | Directiva (UE) 2024/2853, art. 8(1), art. 11(2) | responsabilidad frente a personas físicas, también por los componentes integrados | productos posteriores al 09/12/2026 |
Columna 3: valoración de VamiSec. Solo los textos legales son vinculantes; las directrices de la Comisión y los documentos de ENISA y del BSI no lo son. Estado: 08/10/2026.
Guías: orientación no vinculante
- ENISA, Secure Use of Package Managers (10/03/2026): menciona expresamente el slopsquatting y recomienda hacer visibles los paquetes elegidos por IA y comprobarlos de forma automatizada en CI/CD.
- ENISA, AI-assisted software development (borrador v0.4, septiembre de 2026): paquetes alucinados, skills y archivos de instrucciones introducidos de forma subrepticia — aún no definitivo.
- BSI y ANSSI, AI Coding Assistants (04/10/2024): las alucinaciones de paquetes como vía hacia la «package confusion»; comprobación de plausibilidad, listas de permitidos, sandboxing.
- BSI Grundschutz++ DEV.4.2 a DEV.4.5 (requisitos SOLLTE, recomendados): prohibir los artefactos de fuentes poco fiables o desconocidas, también paquetes y modelos; SBOM, pruebas de integridad. Kompendium 2023: CON.8.A6, CON.8.A20.
El plan de 90 días y los indicadores
Tres fases de 30 días cada una: primero ver, después introducir puntos de ruptura y, por último, imponer y medir. Además, diez indicadores con valores objetivo como recomendación de VamiSec y evidencias que puede presentar a los auditores.
El plan es una recomendación de VamiSec y sigue la cadena de ataque: primero crea visibilidad y cierra las brechas evidentes, después introduce puntos de ruptura en las etapas 04 Resolución y 05 Ejecución y, por último, hace que las reglas sean vinculantes y medibles. El punto de partida es un inventario honesto de la situación, por ejemplo, con la autoevaluación de esta página. Las empresas reguladas empiezan por lo que ya está en vigor: obligaciones de notificación del CRA desde el 11/09/2026, medidas del BSIG desde el 06/12/2025, DORA desde el 17/01/2025.
| Fase | Medidas | Owner | Resultado |
|---|---|---|---|
| Días 1–30: visibilidad y medidas inmediatas | inventario de todas las herramientas de código con IA, agentes, servidores MCP y skills con sus permisos; desactivar de forma centralizada los modos de autoaprobación; desactivar los scripts de instalación en los entornos de CI y de agentes (npm: ignore-scripts, --allow-git=none, --allow-remote=none); configurar el periodo de espera en los gestores de paquetes y en los bots de actualización; registrar y rotar los tokens de larga duración | CISO con el responsable de AppSec; equipo de plataforma | inventario con owners, valores de partida de los indicadores, configuración inmediata versionada |
| Días 31–60: introducir puntos de ruptura | proxy de registro con lista de permitidos, acceso directo al registro bloqueado para builds y agentes; instalación solo desde el lockfile; revisión de dependencias con aprobación nominal de los nuevos paquetes; agentes en entornos aislados con lista de permitidos de egress; servidores MCP y skills solo aprobados y fijados; publicación mediante Trusted Publishing | equipos de plataforma y DevOps; responsable de AppSec | puntos de ruptura en la resolución y la ejecución, arquitectura de referencia del sandbox de agentes |
| Días 61–90: imponer y medir | aprobar la política para herramientas de código con IA; comprobaciones obligatorias en la protección de ramas; registro centralizado de las acciones de los agentes; red teaming con inyección de prompts y archivos de reglas preparados; ejercicio de incidentes con rotación de tokens y vía de notificación del CRA; primer informe de KPI | Head of Engineering con el CISO; el órgano de dirección lo aprueba | política aprobada, acta del ejercicio, informe de KPI al órgano de dirección |
Las fases, los owners y el orden son una recomendación de VamiSec. npm: --allow-git desde 11.10.0, --allow-remote desde 11.15.0; en npm v12 (08/07/2026), ambos están por defecto en none, y los scripts de instalación de las dependencias solo se ejecutan tras su aprobación.
Diez indicadores con valores objetivo
Mida lo que realmente interrumpe la cadena, no el número de formaciones. Los valores objetivo son recomendaciones de VamiSec, no umbrales regulatorios; la mayoría pueden obtenerse automáticamente de los logs del proxy, de la configuración de CI y de la configuración centralizada de los agentes. Lo arriesgados que son los modos sin confirmación lo muestra s1ngularity: según Wiz, el malware invocaba las CLI de IA instaladas localmente con flags como --dangerously-skip-permissions y --yolo para inventariar secretos. Informe trimestralmente al órgano de dirección; en las entidades NIS2, este debe supervisar en cualquier caso la aplicación de las medidas conforme al § 38 BSIG.
| Indicador | Fuente de medición | Valor objetivo (recomendación de VamiSec) |
|---|---|---|
| Proporción de builds que obtienen paquetes solo a través del proxy de registro | logs del proxy y del cortafuegos | día 90: ≥ 95 %; después, 100 % |
| Proporción de repositorios con periodo de espera activo | análisis de la configuración de los gestores de paquetes y de los bots de actualización | ≥ 90 %, antigüedad mínima ≥ 3 días, excluidas las actualizaciones de seguridad |
| Proporción de jobs de CI que instalan solo desde el lockfile | configuración de CI (npm ci, --frozen-lockfile, --require-hashes) | 100 % |
| Proporción de builds y entornos de agentes en los que los scripts de instalación solo se ejecutan tras aprobación | configuración de los gestores de paquetes, lista de permitidos | 100 % |
| Proporción de nuevas dependencias con aprobación documentada | historial de pull requests, revisión de dependencias | 100 % |
| Agentes con modo de autoaprobación o YOLO | configuración centralizada de los agentes, análisis de endpoints | 0 |
| Proporción de agentes en un entorno aislado con lista de permitidos de egress | inventario, políticas de red | 100 % en CI, ≥ 80 % en puestos de trabajo |
| Proporción de extensiones de agentes fijadas y aprobadas (servidores MCP, skills, plugins) | AI-BOM, lista de permitidos | 100 % |
| Tiempo mediano hasta la rotación de los tokens afectados tras una notificación de compromiso | tickets de incidentes, gestor de secretos | ≤ 24 h |
| Tokens de publicación y de CI de larga duración | inventario de tokens de npm, PyPI y CI | 0; publicación solo mediante Trusted Publishing |
Sobre la antigüedad mínima: tras el incidente de axios, CISA recomendó min-release-age=7 (días) y, tras el incidente de Nx Console, al menos tres horas; desde el 14/07/2026, Dependabot espera por defecto 3 días en las actualizaciones de versión, y pnpm 11, un día por defecto — las recomendaciones y los valores por defecto no están armonizados. Trusted Publishing sustituye a los tokens de larga duración, pero no acredita que el código sea benigno (TanStack y Miasma 2026).
Evidencias para auditores
- Inventario de las herramientas de código con IA, agentes, servidores MCP y skills con owner, versión y permisos (AI-BOM)
- Política para herramientas de código con IA, aprobada por el órgano de dirección (art. 20(1) de NIS2; aplicación y supervisión conforme al § 38 BSIG)
- Configuración versionada del proxy, los gestores de paquetes, los bots de actualización y las reglas de egress — el § 30(1) BSIG exige documentar el cumplimiento de las medidas
- Registros de aprobación de nuevas dependencias y extensiones de agentes procedentes del historial de pull requests, con aprobación humana de los cambios de los agentes (para entidades financieras sujetas a DORA: segregación de funciones conforme al art. 17(1) del RTS 2024/1774)
- SBOM por release: como mínimo las dependencias de primer nivel (CRA, anexo I, parte II, punto 1, a partir del 11/12/2027), mejor de forma recursiva conforme a la BSI TR-03183-2 v2.1.0
- Evidencias de pruebas de los paquetes de software a más tardar en la fase de integración (art. 16(4) del RTS 2024/1774) e informe de red teaming de los agentes
- Playbook de incidentes con lista de rotación de tokens y vías de notificación conforme al art. 14 del CRA (24 h / 72 h / 14 días), junto con el acta del ejercicio
- Informe trimestral de KPI al órgano de dirección
Autoevaluación · aprox. 10 minutos
Evaluación de preparación: agentes de código y cadena de suministro
29 preguntas en seis dimensiones: las cinco capas para agentes de código más la higiene de dependencias. Su perfil determina el nivel objetivo y los marcos normativos pertinentes. El resultado muestra en qué etapa sus controles interrumpen la cadena de ataque, sus mayores carencias con una hoja de ruta y las evidencias que esperan los auditores.
0 / 29 preguntas respondidas
Su resultado
Aún no ha respondido todas las preguntas: la evaluación es provisional.
Cobertura de la cadena de ataque
- 01Invención
- 02Registro
- 03Adopción
- 04Resolución
- 05Ejecución
- 06Acceso
- 07Propagación
Ninguna de sus respuestas alcanza el nivel “definido e implantado” en un punto de ruptura: hoy, un nombre de paquete inventado llega hasta la propagación.
Se tienen en cuenta los controles a partir del nivel 2 que interrumpen una etapa de la cadena: revisión de dependencias o aprobación obligatoria (adopción), proxy con lista de permitidos (resolución), scripts de instalación desactivados (ejecución), sandbox de agentes (acceso) y control de salida (propagación).
Sus cinco mayores carencias
Aún no ha respondido todas las preguntas: la evaluación es provisional.
Recibirá el whitepaper para CISO con hoja de ruta, plantillas y catálogo de auditoría. El resultado solo se envía si lo marca expresamente en el formulario.
La evaluación se ejecuta íntegramente en su navegador. No se almacena ni se transmite nada, salvo que usted mismo lo envíe a través del formulario.
Whitepaper gratuito
Slopsquatting & Coding-Agenten für CISOs — proteger la cadena de suministro de software con IA
El whitepaper (en alemán) traslada la situación del typosquatting y el slopsquatting y el modelo de cinco capas para agentes de código a un programa para CISO, AppSec y equipos de plataforma: desde el panorama de la situación, pasando por los controles del harness y la configuración de referencia, hasta las obligaciones, la hoja de ruta y el catálogo de auditoría.

48 páginasPDF, gratuitoAlemánActualizado 10/2026
- Resumen ejecutivo, página para el consejo de administración y diez claves, con una separación clara entre obligación, práctica y recomendación
- Cadena de ataque en siete etapas, mapa del harness con casos documentados y CVE, cinco capas con evidencias
- Configuración de referencia para npm, pnpm, Yarn, Bun, pip y uv, así como matriz de obligaciones CRA, NIS2/BSIG, DORA y AI Act
- Plan de 90 días, conjunto de KPI, RACI, modelo de política para agentes de código, módulo de seguridad para AGENTS.md y 30 preguntas de auditoría
Qué contiene el whitepaper “Slopsquatting & Coding-Agenten für CISOs”
Panorama de la situación y cadena de ataque
Resumen ejecutivo con diez claves, una valoración honesta del estado de la investigación sobre alucinaciones de paquetes, expedientes de casos desde crossenv hasta Mini Shai-Hulud y la cadena de ataque en siete etapas con todos los puntos de ruptura.
Cinco capas para el harness
Visibilidad, control, validación, monitorización y gobernanza, cada una con objetivos de control, pasos de implantación, evidencias y referencias a OWASP Agentic Top 10, LLM Top 10 y los CVE documentados.
Configuración de referencia
Periodo de espera, scripts de instalación, lockfile y proxy para npm, pnpm, Yarn, Bun, pip y uv, con valores predeterminados a octubre de 2026 y ejemplos de configuración listos para usar.
Obligaciones, plan y plantillas
Matriz de obligaciones CRA, NIS2/BSIG, DORA, AI Act y responsabilidad por productos defectuosos, plan de 90 días, conjunto de KPI, RACI, modelo de política para agentes de código, módulo de seguridad para AGENTS.md y 30 preguntas de verificación para la auditoría interna y externa.
Seguir leyendo
Control en tiempo de ejecución: cómo el Agent Control Standard comprueba las llamadas a herramientas antes de que se ejecuten
La monitorización fuera del modelo es el núcleo de la cuarta capa, y ahí es precisamente donde interviene el OWASP Agent Control Standard: un Guardian Agent recibe, a través de hooks, cada paso de un agente antes de que se ejecute y decide con una de cinco disposiciones. Así, una lista de permitidos de paquetes se convierte en una regla que ni siquiera un agente puede eludir. Nuestro análisis en profundidad del ACS explica los hooks, las disposiciones y la failure posture; el framework de HiddenLayer remite a la fuente primaria de las cinco capas.
19 hooks16 hooks de ciclo de vida y 3 hooks de skills en el ACS
5 disposicionesallow, deny, modify, ask, defer
5 capasDe la visibilidad a la gobernanza, según HiddenLayer
- Las instalaciones de paquetes de un agente pueden interceptarse como llamada a herramienta y contrastarse con la lista de permitidos.
- Si falta la decisión del Guardian, la failure posture determina si el agente se bloquea o sigue ejecutándose.
- Cada decisión queda registrada: evidencia para los auditores y base para la monitorización.
El Agent Control Standard es un proyecto de OWASP en fase temprana (especificación v0.1.0, release 0.1.2); la implementación de referencia es una prueba de concepto.
Glosario
Términos en torno al slopsquatting y los agentes de código
24 términos, de agent harness a typosquatting, explicados de forma breve y fiel a las fuentes.
términos encontrados
- Slopsquatting
- Registro de un nombre de paquete que inventan los modelos de IA para captar instalaciones de desarrolladores o agentes de código. El término se atribuye a Seth Larson (Python Software Foundation) y lo difundió Andrew Nesbitt en abril de 2025.
- Typosquatting
- Registro de nombres de paquete que solo se diferencian de paquetes populares por erratas o confusiones, como reqjuests o tensoflom, de una campaña en PyPI con más de 500 paquetes (Check Point 2024).
- Combosquatting
- Técnica emparentada con el typosquatting: un nombre conocido se combina, sin erratas, con añadidos como «setup», «helper» o «utils», para que el paquete parezca una herramienta complementaria oficial. Siguen este patrón nombres como opensearch-setup o elastic-opensearch-helper, del caso descrito por Microsoft en mayo de 2026; la propia Microsoft habla de typosquatting.
- Package Hallucinationalucinación de paquetes
- Un modelo de lenguaje sugiere una dependencia que no existe en el registro. En Spracklen et al., afectó al 19,7 % de 2,23 millones de referencias a paquetes; OWASP recoge el riesgo en LLM09 Misinformation.
- Package Confusion
- Término genérico para los ataques que inducen a instalar un paquete erróneo, por ejemplo, mediante nombres similares, como en el typosquatting. El BSI y la ANSSI (2024) describen, a partir de Spracklen et al., que las alucinaciones de paquetes pueden dar lugar a este tipo de ataques si los atacantes registran paquetes con nombres alucinados. Hoy, esta variante suele denominarse slopsquatting.
- Dependency Confusion
- Un gestor de paquetes descarga, en lugar de un paquete interno, un paquete público con el mismo nombre publicado por un atacante. Las contramedidas son asignaciones fijas de registro para los espacios de nombres internos y un proxy de registro.
- Agent HarnessHarness
- La capa de ejecución en torno al modelo: prompt de sistema, archivos de reglas, herramientas, skills, servidores MCP y lógica de orquestación. Según HiddenLayer, es la verdadera superficie de ataque de los agentes de código.
- Agente de códigoAI Coding Agent
- Herramienta de IA que no solo sugiere código, sino que modifica archivos, ejecuta comandos de terminal, instala paquetes y crea pull requests de forma autónoma, como Claude Code, Cursor o GitHub Copilot en modo agente.
- Servidor MCPModel Context Protocol
- Servicio que pone herramientas y fuentes de datos a disposición de un agente a través del Model Context Protocol. Cada servidor MCP es un componente de la cadena de suministro: según Koi Security (citado por The Register), el paquete npm no oficial postmark-mcp añadía desde la versión 1.0.16 una dirección del atacante en copia oculta a cada correo electrónico saliente.
- Tool Poisoning
- Instrucciones ocultas en la descripción de una herramienta MCP que los usuarios no ven, pero que el modelo sigue. En 2025, Invariant Labs mostró cómo una herramienta de apariencia inofensiva hacía que el agente leyera y transmitiera claves SSH y archivos de configuración.
- Rug Pull
- Un servidor MCP o una configuración ya aprobados cambian a posteriori, por ejemplo, la descripción de la herramienta o el comando que se inicia. Contramedida: fijar las versiones y exigir una nueva aprobación para cada cambio, como se implementó en Cursor tras CVE-2025-54136 (MCPoison).
- Agent SkillSkill
- Paquete de instrucciones y, en su caso, scripts que añade una capacidad a un agente y se obtiene de marketplaces o repositorios. En 2026, Snyk encontró al menos un problema crítico en 534 de 3.984 skills analizadas (13,4 %).
- Rules File Backdoor
- Técnica descrita por Pillar Security en 2025 en la que caracteres Unicode invisibles ocultan instrucciones en los archivos de reglas de Cursor o GitHub Copilot. Las personas no las ven en la revisión, pero el modelo las sigue.
- Prompt InjectionLLM01
- Instrucciones introducidas de forma subrepticia que un modelo trata como órdenes en lugar de como datos. En los agentes de código, a menudo de forma indirecta: a través de archivos README, issues, salidas de herramientas o páginas web que lee el agente.
- Script de ciclo de vidapreinstall, install, postinstall
- Script del package.json que npm ejecuta automáticamente durante la instalación. Muchos paquetes npm maliciosos lo utilizan, como Shai-Hulud 2.0 con un hook preinstall; npm v12 solo ejecuta por defecto este tipo de scripts de las dependencias tras su aprobación.
- Lockfile
- Archivo que registra las versiones resueltas exactas y las sumas de comprobación de todas las dependencias, como package-lock.json, pnpm-lock.yaml o pylock.toml. Si la CI instala solo a partir de él, ningún nombre de paquete nuevo llega a la build sin un cambio visible en el lockfile.
- Dependency Cooldownantigüedad mínima, release age gate
- Antigüedad mínima de una versión de un paquete antes de instalarse o proponerse como actualización. Intercepta las versiones maliciosas recién publicadas, pero no los nombres que un atacante ha registrado con antelación.
- Proxy de registrorepositorio interno de artefactos
- Almacenamiento intermedio interno entre desarrolladores, builds y registros públicos que replica los paquetes y, operado con una lista de permitidos, solo entrega paquetes aprobados. En opinión de VamiSec, un punto de ruptura central contra el slopsquatting, porque un nombre inventado no figura en la lista de permitidos.
- Trusted Publishingpublicación OIDC
- Publicación de paquetes desde la CI mediante identidades OIDC de corta duración en lugar de tokens de API de larga duración, disponible, entre otros, en PyPI (desde 2023) y npm (desde julio de 2025). Sustituye a los tokens de larga duración que podrían robarse, pero no protege frente a una pipeline comprometida, como en el caso de TanStack en mayo de 2026.
- Provenanceprueba de origen, atestación
- Prueba firmada de qué repositorio y de qué build procede un paquete. Acredita el origen, no la inocuidad: en TanStack y Miasma 2026, paquetes maliciosos llevaban una provenance válida.
- SBOMSoftware Bill of Materials
- Lista de materiales legible por máquina de todos los componentes de un software, por ejemplo, en CycloneDX o SPDX. A partir del 11/12/2027, el CRA exige como mínimo las dependencias de primer nivel, sin prescribir un formato; la BSI TR-03183-2 exige una resolución recursiva.
- AI-BOMAIBOM
- Lista de materiales para componentes de IA: modelos, agentes, servidores MCP, skills, plugins y prompts, con su origen y versión. OWASP menciona la SBOM y la AIBOM en ASI04 como contramedida frente a los riesgos de la cadena de suministro de los sistemas agénticos.
- Least Agency
- Principio del OWASP Top 10 for Agentic Applications 2026: dar a los agentes solo la autonomía que requiera la tarea. Amplía el mínimo privilegio con la cuestión de qué puede decidir un agente por sí mismo.
- Control de egressEgress Filtering
- Restricción del tráfico de red saliente a destinos aprobados según el principio de denegación por defecto (deny by default). En agentes y builds, dificulta que el código malicioso exfiltre datos a destinos ajenos o descargue paquetes eludiendo la lista de permitidos; siguen siendo posibles los canales a través de destinos aprobados como GitHub.
FAQ
Preguntas frecuentes sobre slopsquatting y agentes de código
Respuestas breves y sólidas, con fuente — a 08/10/2026.
El slopsquatting es un ataque a la cadena de suministro en el que un atacante registra un nombre de paquete que inventan los modelos de IA, para que desarrolladores o agentes de código instalen el paquete malicioso. El nombre se atribuye a Seth Larson, de la Python Software Foundation, y lo difundió Andrew Nesbitt el 08/04/2025, en sustancia como la variante de IA del typosquatting. La base la aporta el estudio de Spracklen et al. (USENIX Security 2025): de 2,23 millones de referencias a paquetes en 576.000 muestras de código de 16 modelos, el 19,7 % eran alucinadas. Importante para valorarlo: hasta ahora no se conoce ningún caso documentado públicamente en el que un atacante haya registrado con fines maliciosos un nombre demostrablemente alucinado y las víctimas lo hayan instalado a raíz de una sugerencia de IA.
El typosquatting apuesta por las erratas humanas y la confusión con nombres conocidos; el slopsquatting, por nombres que inventa un modelo de IA. En 2024, Check Point documentó más de 500 paquetes maliciosos de PyPI con nombres como reqjuests o tensoflom; el 28/05/2026, Microsoft describió 14 paquetes npm que aparecieron en cuatro horas. Ambos casos son typosquatting, no slopsquatting. Los nombres alucinados, en cambio, a menudo no son erratas: en Spracklen et al., solo el 13,4 % de los nombres de Python inventados estaba a dos pasos de edición como máximo de un paquete real, y el 48,6 %, a seis o más. Por eso, una detección basada en la similitud de nombres se queda corta. Muchas contramedidas funcionan contra ambos ataques: proxy de registro con lista de permitidos, periodo de espera, lockfiles y scripts de instalación desactivados.
Según el modelo y el estudio, entre un pequeño porcentaje y más de una quinta parte de los paquetes sugeridos. Spracklen et al. (USENIX Security 2025) midieron en total un 19,7 % de referencias a paquetes alucinadas: de media, un 5,2 % en los tres modelos comerciales de OpenAI probados y un 21,7 % en los modelos de código abierto. Muchos errores son reproducibles: en las pruebas de repetición, el 43 % de los nombres inventados reapareció en las diez ejecuciones y el 39 %, en ninguna. Un preprint sin revisión por pares de Churilov (2026) llega a un 4,62 a 6,10 % para cinco modelos actuales. Una prueba breve publicada en dev.to el 06/10/2026 con 30 prompts de npm encontró dos nombres inventados en Claude Haiku 4.5, uno en Copilot y tres en ChatGPT/Codex; según el autor, una señal, no un veredicto.
Hasta ahora no se conoce ningún caso malicioso documentado públicamente (a 08/10/2026). Sí está documentado, en cambio, que los nombres inventados se instalan realmente: para un experimento publicado en 2024, Bar Lanyado subió a PyPI un paquete vacío con el nombre alucinado de forma reiterada huggingface-cli; según Lasso Security, recibió más de 30.000 descargas en tres meses. En 2026, Aikido encontró en agent skills generadas por IA la llamada npx react-codeshift, que remitía a un paquete npm nunca publicado, difundida en al menos 237 repositorios, y registró el nombre de forma defensiva. Ambos paquetes eran marcadores de posición inofensivos. Koi Security atribuyó campañas como PhantomRaven al slopsquatting, sin publicar pruebas de que una IA hubiera sugerido los nombres. El riesgo es real, pero hasta ahora no se ha documentado públicamente ningún caso de daño.
Con varios controles cuyo núcleo, en opinión de VamiSec, es un proxy de registro interno con lista de permitidos: un nombre inventado o mal escrito no figura en la lista y no puede instalarse. Añada una antigüedad mínima para las nuevas versiones (npm min-release-age en días desde la versión 11.10.0, pnpm minimumReleaseAge en minutos, uv exclude-newer, pip --uploaded-prior-to), instalaciones solo desde el lockfile, scripts de instalación desactivados y una revisión de dependencias en el pull request. Desde el 08/07/2026, npm v12 solo ejecuta por defecto los scripts de instalación de las dependencias tras su aprobación. Para los paquetes propios: publicación mediante Trusted Publishing en lugar de con tokens; los tokens de escritura de npm caducan por defecto a los 7 días y, como máximo, a los 90. La provenance acredita el origen de un paquete, no su inocuidad.
El harness es todo lo que constituye un agente de código en torno al modelo de lenguaje: el prompt de sistema, los archivos de reglas, las herramientas, las skills, los servidores MCP y la lógica de orquestación que coordina las llamadas al modelo, las llamadas a herramientas y los flujos de trabajo. En su marco del 28/07/2026, HiddenLayer sostiene que la verdadera superficie de ataque es este harness y no el modelo; la causa de los ataques sería una confianza mal depositada. Los casos documentados lo respaldan: instrucciones ocultas en archivos de reglas (Rules File Backdoor, Pillar Security 2025), descripciones de herramientas de servidores MCP manipuladas (Invariant Labs 2025) o una inyección de prompts que desactivaba la solicitud de confirmación en GitHub Copilot (CVE-2025-53773, CVSS 3.1: 7,8).
Las cinco capas proceden del marco de HiddenLayer (28/07/2026): visibilidad, control, validación, monitorización y gobernanza. Visibilidad significa conocer cada agente, modelo, herramienta, servidor MCP y skill con sus permisos, incluida la IA en la sombra. El control limita el daño: permisos mínimos, aprobación humana para acciones con consecuencias, solo herramientas aprobadas, tráfico de red saliente restringido. La validación comprueba antes de confiar: red teaming, revisión de las herramientas de terceros, incluidos los metadatos ocultos, aprobación de versiones concretas en lugar de «latest». La monitorización se realiza fuera del modelo. La gobernanza ancla los owners, los modelos de amenazas y la respuesta a incidentes. En la autoevaluación, VamiSec añade la higiene de dependencias como sexta dimensión.
No. ignore-scripts impide que npm ejecute los scripts de ciclo de vida de los paquetes durante la instalación y cierra así una vía de ejecución frecuente, como los hooks de instalación del caso descrito por Microsoft el 28/05/2026. Quedan tres brechas: las dependencias Git pueden traer un .npmrc propio que sobrescriba la ruta al programa Git y ejecute código pese a ignore-scripts (contramedida: --allow-git=none desde npm 11.10.0); las dependencias por URL descargan código de servidores arbitrarios (--allow-remote=none desde npm 11.15.0); y el código malicioso que solo se ejecuta al importar o al iniciar el intérprete no es un script de ciclo de vida, como el archivo .pth de litellm 1.82.8. Por eso, combine la opción con un proxy de registro, un periodo de espera y entornos aislados de build y de agentes.
A partir del 11/12/2027, el CRA exige que los fabricantes actúen con la diligencia debida al integrar componentes de terceros, expresamente también en el caso del software libre de código abierto (art. 13(5)). El alcance depende del riesgo; el considerando 34 menciona, por ejemplo, la comprobación del historial de actualizaciones, el cotejo con la base de datos europea de vulnerabilidades y pruebas de seguridad adicionales. Según las directrices no vinculantes de la Comisión C(2026) 5252 (ejemplo 34), el repositorio de paquetes y un desarrollador individual que publique allí software libre no tienen obligaciones derivadas del CRA; la diligencia debida recae en el fabricante integrador. A ello se suman una SBOM que incluya como mínimo las dependencias de primer nivel (anexo I, parte II, punto 1) y la notificación de las vulnerabilidades detectadas al fabricante o maintainer del componente (art. 13(6)). Las obligaciones de notificación del art. 14 se aplican ya desde el 11/09/2026.
Por lo general, no. Los sistemas de alto riesgo según el art. 6(2) son solo los ámbitos de uso enumerados en el anexo III, y el desarrollo de software no figura entre ellos. La situación puede ser distinta si una herramienta se utilizara, por ejemplo, para evaluar el rendimiento de los empleados (anexo III, punto 4, letra b). En cualquier caso, las obligaciones de alto riesgo del anexo III solo se aplican a partir del 02/12/2027. Para las empresas que utilizan asistentes de código queda sobre todo el art. 4: desde el Ómnibus Digital (Reglamento (UE) 2026/1744, en vigor desde el 27/07/2026), deben adoptar medidas para apoyar la alfabetización en IA, sin tener que garantizar un nivel determinado. Las obligaciones relativas a los modelos de uso general recaen en los proveedores de modelos, no en los usuarios.
Un dependency cooldown (periodo de espera) es una antigüedad mínima que debe haber alcanzado una nueva versión de un paquete antes de instalarse o de proponerse como actualización. La idea: las versiones maliciosas suelen detectarse y retirarse rápidamente; pnpm justifica la función en que esto suele ocurrir en el plazo de una hora. Las unidades difieren: npm min-release-age en días, pnpm minimumReleaseAge en minutos (desde pnpm 11, por defecto 1.440, es decir, un día), Bun en segundos, Yarn npmMinimalAgeGate como duración, p. ej., 1d, uv exclude-newer como duración, pip --uploaded-prior-to como fecha o, desde la versión 26.1, como P3D. Desde el 14/07/2026, Dependabot espera por defecto tres días en las actualizaciones de versión, excluidas las actualizaciones de seguridad. Límite: los nombres registrados con antelación superan cualquier periodo de espera.
El nivel de madurez se mide con una autoevaluación a lo largo de las cinco capas más la higiene de dependencias y con unos pocos indicadores objetivos. El VamiSec Readiness Check de esta página evalúa 29 preguntas en seis dimensiones en cuatro niveles, de «inexistente» a «impuesto y medido», y muestra en qué etapa de la cadena de ataque actúan sus controles. Como indicadores recomendamos, entre otros, la proporción de builds a través del proxy de registro, la proporción de repositorios con periodo de espera, el número de agentes con autoaprobación (objetivo: cero), el tiempo mediano hasta la rotación de tokens y la proporción de extensiones de agentes fijadas. Informe de los valores trimestralmente al órgano de dirección.
Estándares y fuentes
Los contenidos de esta página se basan en las siguientes guías y estudios disponibles públicamente.
ThreatLocker · 2026
How to mitigate typosquatting and slopsquatting attacks in npm and PyPI ↗
Fuente de partida: contramedidas para npm y PyPI del 15/09/2026; blog de fabricante.
Harsh, DEV Community · 2026
I Tested 3 AI Coding Tools for Slopsquatting. Here’s How Many Fake Packages They Invented. ↗
Fuente de partida: prueba breve con 30 prompts de npm del 06/10/2026, anecdótica y calificada por el propio autor como señal.
HiddenLayer · 2026
A Security Framework for Coding Agents and their Harnesses ↗
Fuente de partida: cinco capas, visibilidad, control, validación, monitorización y gobernanza (28/07/2026).
Spracklen et al., USENIX Security · 2025
We Have a Package for You! A Comprehensive Analysis of Package Hallucinations by Code Generating LLMs ↗
Estudio primario: el 19,7 % (440.445 de 2,23 millones) de las referencias a paquetes de 576.000 muestras de código de 16 modelos eran alucinadas.
Lasso Security · 2024
Diving Deeper into AI Package Hallucinations ↗
Experimento de Bar Lanyado con el marcador de posición huggingface-cli y más de 30.000 descargas en tres meses.
Aikido Security · 2026
Agent Skills Are Spreading Hallucinated npx Commands ↗
react-codeshift: comando npx alucinado en agent skills generadas por IA, registrado de forma defensiva.
Churilov, arXiv · 2026
The Range Shrinks, the Threat Remains: Re-evaluating LLM Package Hallucinations on the 2026 Frontier-Model Cohort ↗
Preprint sin revisión por pares: tasas de alucinación de cinco modelos actuales y nombres comunes.
Microsoft Security · 2026
Typosquatted npm packages used to steal cloud and CI/CD secrets ↗
14 paquetes npm con typosquatting en cuatro horas el 28/05/2026; typosquatting, no slopsquatting.
Check Point · 2024
PyPI Inundated by Malicious Typosquatting Campaign ↗
Más de 500 paquetes maliciosos de PyPI en marzo de 2024; typosquatting clásico sin relación con la IA.
Wiz · 2025
s1ngularity: supply chain attack leaks secrets on GitHub: everything you need to know ↗
El malware abusaba de las CLI de IA instaladas localmente con flags que eluden las confirmaciones.
GitHub Changelog · 2025
Strengthening npm security: Important changes to authentication and token management ↗
Tokens granulares de escritura de npm de nueva creación: vigencia por defecto de 7 días, máximo de 90 días.
GitHub Changelog · 2026
npm install-time security and GAT bypass2fa deprecation ↗
npm v12 (08/07/2026): scripts de instalación de las dependencias solo tras aprobación; dependencias Git y por URL bloqueadas por defecto.
pnpm · 2026
pnpm 11.0 ↗
Nuevos valores por defecto: minimumReleaseAge de 1.440 minutos (un día), sin subdependencias Git ni tarball, scripts de build solo tras aprobación (allowBuilds).
Pillar Security · 2025
New Vulnerability in GitHub Copilot and Cursor: How Hackers Can Weaponize Code Agents ↗
Rules File Backdoor: instrucciones Unicode invisibles en archivos de reglas.
Invariant Labs · 2025
MCP Security Notification: Tool Poisoning Attacks ↗
Definición de tool poisoning, rug pull y tool shadowing en servidores MCP.
OWASP GenAI Security Project · 2025
OWASP Top 10 for Agentic Applications for 2026 ↗
ASI04 Agentic Supply Chain Vulnerabilities, ASI05 Unexpected Code Execution y el principio Least Agency.
OWASP GenAI Security Project · 2024
LLM09:2025 Misinformation ↗
Recoge las bibliotecas inexistentes sugeridas por los modelos como riesgo de generación de código insegura.
OpenSSF · 2025
Security-Focused Guide for AI Code Assistant Instructions ↗
Guía para instrucciones seguras de agentes; menciona las dependencias alucinadas y el slopsquatting.
BSI y ANSSI · 2024
AI Coding Assistants ↗
Documento de las autoridades del 04/10/2024: las alucinaciones de paquetes como puerta de entrada para la package confusion; contramedidas.
ENISA · 2026
ENISA Technical Advisory for Secure Use of Package Managers ↗
Recomendación no vinculante del 10/03/2026 que menciona expresamente el slopsquatting como vector de ataque.
Unión Europea · 2024
Reglamento (UE) 2024/2847 (Cyber Resilience Act) ↗
Obligación de diligencia debida para los componentes de terceros (art. 13(5), a partir del 11/12/2027), obligaciones de notificación (art. 14, desde el 11/09/2026), SBOM (anexo I, parte II, punto 1).
Comisión Europea · 2026
Directrices sobre la aplicación del Cyber Resilience Act, C(2026) 5252 final ↗
Directrices no vinculantes del 27/07/2026; el ejemplo 34 atribuye la obligación de diligencia debida al fabricante integrador.
gesetze-im-internet.de · 2025
Ley alemana del BSI (BSIG) en la versión de la NIS2UmsuCG, § 30 ↗
Medidas de gestión de riesgos, incluida la cadena de suministro (apartado 2, segunda frase, n.º 4), así como la adquisición, el desarrollo y el mantenimiento (n.º 5); nuevo BSIG en vigor desde el 06/12/2025 (BGBl. 2025 I n.º 301).
Unión Europea · 2024
Reglamento Delegado (UE) 2024/1774 (RTS sobre gestión del riesgo de TIC) ↗
Concreta DORA para el marco completo (título II): seguimiento de las bibliotecas de código abierto, pruebas de los paquetes de software, gestión de cambios.
¿Implantar agentes de código sin abrir la cadena de suministro?
VamiSec le ayuda con el inventario y la política para herramientas de código con IA, con el proxy de registro, el periodo de espera y el bastionado de los scripts de instalación, con el sandboxing y la monitorización de agentes, así como con el red teaming de agentes de código, en línea con el CRA, NIS2 y DORA.