Reservar cita

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).

  • 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.

Nueve claves sobre el slopsquatting y los agentes de código

Resumen de cada clave: despliegue para ver detalles, cifras y fuentes.

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

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

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
Controles por capa
  • 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.

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.

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
  1. 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?
  2. Antigüedad, mantenedores, descargasRecién creado, apenas descargas, cambio de mantenedor poco antes de la versión: deténgase y pregunte.
  3. 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.
  4. Repositorio y provenance¿Hay un repositorio vinculado, encaja el código con la descripción, existe build provenance?
  5. 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 normativoCRAArt. 14 desde el 11/09/2026; art. 13 y anexo I a partir del 11/12/20275NIS2 / BSIGen vigor8DORAaplicable desde el 17/01/20257AI Actescalonado desde 20252Resp. productospara productos introducidos en el mercado después del 09/12/2026; a través del Derecho nacional1Guí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.

  • 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.

01Situación actual

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ónAsistente (sugerencia)Agente (ejecución)
Nombre del paqueteaparece en el chat o en el código; una persona decide sobre la instalaciónse instala directamente en el terminal
Contextoel prompt de la desarrolladora o el desarrolladorREADME, 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
Permisosninguno propiolos de la sesión: sistema de archivos, red, tokens, perfiles en la nube
Extensionesapenasservidores MCP, skills, hooks, plugins
Punto de controlrevisión antes del commitdiá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.

02Patrón conocido

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ónPrincipioEjemplo documentado
Omisiónfaltan caracteres«suport-color», claramente inspirado en supports-color (SANDWORM_MODE, Socket 2026)
Inserción, sustitución, transposiciónse añade, se sustituye o se intercambia un carácter«reqjuests» (requests), «tensoflom» (tensorflow) – Check Point 2024
Homoglifoscaracteres 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)
Separadoresvariació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, marcanombre conocido más un añadido como -setup, -helper o -utilityimitaciones de herramientas de OpenSearch y Elasticsearch, en parte con URL de repositorio falsificada (Microsoft 2026); imitaciones de Claude Code (Socket 2026)
Confusión de scopeun paquete con scope (@nombre/…) imita a uno sin él, o al revésno 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.

03Nueva clase de ataque

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.

HallazgoResultado (Spracklen et al.)Consecuencia para la defensa
Tipo de modeloComerciales, 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
TemperaturaA mayor temperatura, más alucinaciones (máximo: GPT-4 8,9 %, GPT-3.5 31,8 %); otros parámetros de decodificación no ayudaronTambién los ajustes conservadores generan paquetes inventados
Reproducibilidad500 prompts, diez veces cada uno: 43 % en todas las ejecuciones, 58 % más de una vez, 39 % nunca másMuchos nombres inventados son predecibles y, por tanto, registrables
Especificidad del modeloEl 81 % de los nombres procedía de uno solo de los 16 modelosIntersección pequeña; el riesgo depende del modelo
Distancia entre nombresDe 76.489 nombres de Python: 13,4 % con distancia de Levenshtein 1–2, 37,9 % con 3–5, 48,6 % con 6 o másEn su mayoría no son erratas: la detección clásica de typos no funciona
Confusión de lenguajeEl 8,7 % de los nombres de Python inventados son paquetes npm realesUn nombre existente no es automáticamente el correcto
Contramedidas en el modeloRAG (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.

04Del nombre al código

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ónCuándo se ejecuta el códigoCaso documentado¿Lo detiene npm ignore-scripts?
Scripts de ciclo de vida de npm (preinstall, install, postinstall)durante la instalacióncaso de Microsoft 05/2026; Shai-Hulud 09 y 11/2025sí
Paquete fuente de Python (setup.py)durante la instalación desde el paquete fuenteCheck Point 2024no aplicable (pip)
Archivo .pthen cada inicio del intérprete de Python, sin importlitellm 1.82.8 (24/03/2026): el archivo figuraba en RECORD y las comprobaciones de hash no saltaronno; no es un script de ciclo de vida
Código en tiempo de importaciónen el primer import o requireseñalado por OWASP en ASI05no
Dependencia Gitdurante la instalación: un .npmrc incluido puede sobrescribir la ruta al programa gitmotivo de --allow-git=none (GitHub, 18/02/2026)no
Dependencia por URLla carga útil se descarga durante la instalación desde una dirección HTTP, invisible en el tarball del registroPhantomRaven (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

  1. CLI 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.

  2. Phishing, 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.

  3. Gusano 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.

  4. preinstall 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.

  5. Equipo 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.

  6. Provenance 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.

05Superficie de ataque

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 explotadoReferencia 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.3LLM01, 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 usuarioLLM01, 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_rsaASI02, 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 servidorASI01, 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 terminalLLM01, 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.3ASI04, 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 descubridoresLLM01, 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 todasASI01, 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ó nadaASI01, 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.

06Capa 1 de 5 · Visibilidad

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é registrarFuente de los datosResponsable
Agentes y harness: herramienta, versión, mododistribución de software, inventario de endpoints, listas de extensiones de los IDEequipo de plataforma
Modelos y proveedorescontratos, compras, logs del gateway de IA o del proxycompras junto con AppSec
Servidores MCP, skills, archivos de reglasarchivos de configuración en repositorios y directorios personales, p. ej., mcp.json, settings.json, AGENTS.mdresponsables de los repositorios
Identidades y permisos de los agentesproveedor de identidades, gestión de tokens del registro, la plataforma Git y la nubeIAM
Dependenciasgeneración de la SBOM en la pipeline de CI, lockfilesequipo de producto
IA en la sombralogs de DNS y del proxy cotejados con la lista de permitidosseguridad de la información
Interacciones en tiempo de ejecucióntelemetría de hooks de los agentes, logs de auditoría, EDRSOC

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).

07Capa 2 de 5 · Control

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)

  1. Entorno 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.

  2. IdentidadAsignar 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.

  3. TokensCredenciales 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.

  4. Herramientas, 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).

  5. RedLimitar 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.

  6. Configuració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).

08Capa 3 de 5 · Validación

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)

ComponenteQué comprobarArtefacto de aprobación
Servidores MCPorigen, código fuente o imagen, descripciones completas de las herramientas, permisos y destinos de red solicitadosentrada en la lista de permitidos con versión y hash; cada cambio obliga a una nueva aprobación
Skills y archivos de reglastexto en claro de las instrucciones, caracteres invisibles, comandos de instalación incrustados, referencias externasrevisión como si fuera código, CODEOWNERS, commit fijado
Paquetesexistencia, antigüedad, difusión, maintainers, scripts de instalaciónrevisión de dependencias en el pull request, entrada en el proxy
Configuración del agenteautoaprobación, hooks, entradas MCP, endpoint del modelocotejo con la configuración centralizada antes del despliegue
Código generado por IAlas mismas comprobaciones que para el código humano: revisión, SAST, DAST, pruebascomprobaciones 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

  1. Definir 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.

  2. Ejecutar 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.

  3. Medir

    ¿Con qué frecuencia inventa paquetes el agente? ¿Sigue instrucciones inyectadas? ¿Funcionan la aprobación, el proxy y el aislamiento de la capa 2?

  4. Repetir

    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).

09Capa 4 de 5 · Monitorización

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ñalFuenteRespuesta
node, python o bun leen durante una instalación archivos de credenciales como ~/.npmrc, ~/.aws/credentials, ~/.ssh/, ~/.claude.json o .envEDR, auditoría de acceso a archivos en puestos de trabajo y runnersdetener el proceso, aislar el host, rotar los tokens accesibles
hooks, entradas MCP, valores de autoaprobación o tareas con runOn: folderOpen nuevos o modificadosmonitorización de la integridad de archivos, diff en el pull request, telemetría de hooksrevertir el cambio, aclarar el origen, revisar el host
conexiones desde la build o el agente a dominios recién registrados o desconocidoslogs de DNS y del proxybloquear y evaluar el destino, revisar la sesión
escalada de privilegios: nueva regla sudo, /etc/hosts modificado, runner autoalojado recién registradoEDR, log de auditoría de la plataforma Gitaislar 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-packagestelemetría de procesos, logs de CI, monitorización de la integridad de archivoscancelar el job, identificar el paquete desencadenante
consumo repentino de una clave de API de un modelo o accesos a servicios de IA no aprobadosfacturación, gateway de IA, proxybloquear 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.

10Capa 5 de 5 · Gobernanza

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

  1. ContenerAislar

    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.

  2. ContenerRotar 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.

  3. LimpiarRevisar 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.

  4. LimpiarBuscar 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.

  5. NotificarComprobar 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.

  6. AprenderAnalizar 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.

11Higiene de dependencias · Gestores de paquetes

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.

HerramientaPeriodo de espera (desde la versión)Por defecto 10/2026Scripts de instalación
npmmin-release-age en días (11.10.0)ningunodesde 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
pnpmminimumReleaseAge en minutos (10.16)1 día (1440) desde pnpm 11desde v10, sin scripts de dependencias; pnpm 11: strictDepBuilds, aprobación mediante allowBuilds
YarnnpmMinimalAgeGate (4.10), hoy como duración, p. ej., 1d1d desde 4.15 según el changelog; la documentación indica 1wdesde 4.14, enableScripts: false
BunminimumReleaseAge en segundos (1.3)ningunosolo una lista por defecto curada y trustedDependencies
uvexclude-newer como duración relativa (0.9.17)ningunoposible 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)ningunoposible código de instalación y de importación: prever aislamiento
Renovatepresets security:minimumReleaseAgeNpm y …Pypi3 días, si el preset está activo–
Dependabotcooldown 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)

.npmrc
# 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.

uv (pyproject.toml) y pip
# 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.

12Normativa

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).

NormaReferenciaQué significa para las dependencias elegidas por IAAplicable desde
CRA · obligaciónart. 14(1)–(2)notificar en plazo a través de la SRP las vulnerabilidades activamente explotadas11/09/2026
CRA · obligaciónart. 13(5); anexo I, parte II, punto 1diligencia debida basada en el riesgo para cada componente de terceros integrado; SBOM como mínimo de primer nivel11/12/2027
NIS2 / BSIG · obligaciónart. 21(2)(d), (e); § 30(2), segunda frase, n.º 4, 5 BSIGcadena de suministro y desarrollo como medidas mínimas documentadas06/12/2025
Reglamento de Ejecución 2024/2690 · obligación para las entidades enumeradasanexo, puntos 5.1.2 a), 6.1.2 c), 6.2, 6.6.1 c), 6.9entorno de desarrollo seguro, comprobación de la integridad, protección frente al malwareen vigor desde 2024
DORA · obligaciónart. 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 separado17/01/2025
AI Act · obligaciónart. 4 en la versión del Reglamento (UE) 2026/1744fomentar la alfabetización en IA, sin garantía de nivel02/02/2025; nueva redacción desde el 27/07/2026
Responsabilidad por productos · tras la transposiciónDirectiva (UE) 2024/2853, art. 8(1), art. 11(2)responsabilidad frente a personas físicas, también por los componentes integradosproductos 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.
13Implantación

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.

FaseMedidasOwnerResultado
Días 1–30: visibilidad y medidas inmediatasinventario 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ónCISO con el responsable de AppSec; equipo de plataformainventario con owners, valores de partida de los indicadores, configuración inmediata versionada
Días 31–60: introducir puntos de rupturaproxy 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 Publishingequipos de plataforma y DevOps; responsable de AppSecpuntos de ruptura en la resolución y la ejecución, arquitectura de referencia del sandbox de agentes
Días 61–90: imponer y mediraprobar 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 KPIHead of Engineering con el CISO; el órgano de dirección lo apruebapolí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.

IndicadorFuente de mediciónValor objetivo (recomendación de VamiSec)
Proporción de builds que obtienen paquetes solo a través del proxy de registrologs del proxy y del cortafuegosdía 90: ≥ 95 %; después, 100 %
Proporción de repositorios con periodo de espera activoaná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 lockfileconfiguració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ónconfiguración de los gestores de paquetes, lista de permitidos100 %
Proporción de nuevas dependencias con aprobación documentadahistorial de pull requests, revisión de dependencias100 %
Agentes con modo de autoaprobación o YOLOconfiguración centralizada de los agentes, análisis de endpoints0
Proporción de agentes en un entorno aislado con lista de permitidos de egressinventario, políticas de red100 % en CI, ≥ 80 % en puestos de trabajo
Proporción de extensiones de agentes fijadas y aprobadas (servidores MCP, skills, plugins)AI-BOM, lista de permitidos100 %
Tiempo mediano hasta la rotación de los tokens afectados tras una notificación de compromisotickets de incidentes, gestor de secretos≤ 24 h
Tokens de publicación y de CI de larga duracióninventario de tokens de npm, PyPI y CI0; 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

00 / 06Perfil

Tres preguntas sobre su entorno. Determinan el nivel objetivo, ocultan las preguntas que no proceden y muestran en la evaluación los marcos normativos que le son aplicables.

  1. ¿Qué rol corresponde a su empresa?

    Selección múltiple. El rol determina el nivel objetivo y los marcos normativos de la evaluación.

  2. ¿Qué herramientas de código con IA se utilizan en su organización?

    Las preguntas sobre el acceso al terminal y las aprobaciones solo se plantean si intervienen agentes.

  3. ¿Qué ecosistemas de paquetes utiliza?

Nivel objetivo3 — Impuesto y medido

Como fabricante CRA, entidad NIS2 o entidad financiera, sus controles deberían estar impuestos y medidos: su objetivo es el nivel 3. Si no se indica nada, también se aplica el nivel 3.

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.

Portada del whitepaper de VamiSec “Slopsquatting & Coding-Agenten für CISOs”
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
Descarga gratuita

Solicitar whitepaper

Slopsquatting & Coding-Agenten für CISOs — proteger la cadena de suministro de software con IA

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.

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.