Disparadores ocultos en SKILL.md: ataques semánticos a la cadena de suministro de los registros de skills
Un artículo de la Universidad de Maryland del 12 de mayo de 2026 muestra que un añadido de 20 tokens en un archivo SKILL.md hace que el agente descubra y seleccione una skill adversaria en el 77–86 % de los ensayos, y elude los escaneos del registro hasta el 100 % de las veces.
What is this?
El 12 de mayo de 2026, Shoumik Saha, Kazem Faghih y Soheil Feizi (Universidad de Maryland) publicaron en arXiv Under the Hood of SKILL.md: Semantic Supply-chain Attacks on AI Agent Skill Registry (2605.11418, cs.CR). El artículo estudia una clase de ataque que no necesita un solo byte de código ejecutable: pequeñas adiciones en lenguaje natural, de apariencia plausible, bastan para sesgar qué skill descubre el agente, cuál selecciona entre alternativas y si el escaneo de seguridad del registro la acepta.
El trabajo importa porque SKILL.md es hoy un artefacto operativo en el ecosistema agéntico — Claude Code, OpenClaw, Microsoft Agent Framework, skills de Codex — y no documentación pasiva. El agente lo lee en la fase de descubrimiento (para emparejar una consulta con las skills disponibles), en la de selección (para elegir entre skills funcionalmente similares) y en la instalación (cuando el registro pasa sus verificaciones de seguridad). Cada una de esas lecturas es un punto en el que una modificación textual puede cambiar el comportamiento. The Register cubrió el artículo el 22 de mayo de 2026 con el titular Minor edits to AI skills can make agents go rogue.
How it works
Los autores evalúan tres etapas del ciclo de vida del registro contra skills reales de ClawHub y una función de ranking realista que combina relevancia léxica, similitud vectorial (embeddings de OpenAI) y popularidad por descargas. Modifican únicamente el texto de SKILL.md — nunca el script subyacente, ni las dependencias, ni el runtime — y miden con qué frecuencia un gemelo malicioso de una skill existente gana.
Etapa Superficie SKILL.md Objetivo adversario
----------------- -------------------------- --------------------------------
Descubrimiento nombre, descripción, tags Ser recuperado para la consulta
Selección when-to-use, ejemplos Vencer al gemelo legítimo
Verificación cuerpo completo, "safety" Pasar el escáner del registro
Tres hallazgos vertebran el artículo.
- Descubrimiento. Un disparador de unos 20 tokens insertado en la descripción basta para elevar la skill adversaria por encima de su gemelo no modificado en el 86 % de las comparaciones por pares, y para situarla en el top 10 del registro en el 80 % de las consultas. No es relleno de palabras clave: la técnica explota la proximidad en el espacio de embeddings con las formulaciones que los usuarios realmente escriben.
- Selección. Una vez ambas skills se presentan al agente, un encuadre puramente descriptivo orienta al agente hacia la variante adversaria en el 77,6 % de los ensayos por pares en promedio, sin cambio alguno en el comportamiento funcional subyacente. El agente lee el bloque «when to use» y los ejemplos, y ese texto decide la llamada.
- Evasión de la verificación. Las mismas familias de disparadores eluden los escáneres del registro entre el 36,5 % y el 100 % de las veces, según el escáner. Como no se entrega ningún payload, las defensas basadas en firmas o patrones no tienen nada que disparar.
Punto crítico: los autores no publican disparadores maliciosos funcionales; liberan un arnés de medición (github.com/ShoumikSaha/agent-skill-security) y estadísticas agregadas. La contribución es una categoría — «el metadato es el ataque» — no una receta.
Why it matters
Tres implicaciones trascienden este artículo.
Primero, los registros de skills heredan un problema que los registros de paquetes creían resuelto. PyPI y npm llevan una década endureciéndose contra el typosquatting, la confusión de dependencias y la apropiación de cuentas, todos supuestos en los que el atacante envía código. Aquí el atacante envía prosa, y la prosa atraviesa el propio pipeline de embeddings del registro. Los antimalware y los SBOM apuntan a la capa equivocada.
Segundo, el fallo aflora en componentes que nadie controla del todo. El ranker de descubrimiento es decisión del proveedor (ClawHub, la búsqueda de skills de OpenAI, el framework de agentes de Microsoft). El prompt de selección es responsabilidad del runtime agéntico. El escaneo de verificación es del registro. Al atacante le basta desestabilizar una sola de esas tres capas con veinte tokens para que una descripción de apariencia inocua quede mal clasificada. Es la misma difusión de responsabilidad que volvía porosas las primeras app stores.
Tercero, el artículo se suma a un conjunto de trabajos de mayo de 2026 que apuntan en la misma dirección. Exploiting LLM Agent Supply Chains via Payload-less Skills (arXiv:2605.14460, Liu et al., Universidad de Zhejiang, 14 de mayo de 2026) introduce el Semantic Compliance Hijacking y reporta hasta el 77,67 % de fugas de confidencialidad y el 67,33 % de RCE desde skills sin payload. From SKILL.md to Shell Access in Three Lines of Markdown de Snyk traslada el mismo fenómeno al lado de los desarrolladores. El mensaje converge: el ecosistema SKILL.md es una cadena de suministro, no está endurecida, y su explotación no requiere ni criptografía novedosa ni trucos de runtime.
Defenses
El artículo propone controles del lado del registro y del lado del agente. La lista accionable más breve:
- Tratar el texto de
SKILL.mdcomo código bajo revisión. No necesita ser ejecutable para ser peligroso. Hacer diff en cada actualización, exigir un changelog legible y rechazar reescrituras silenciosas de los bloquesdescription,when-to-useyexamples. - Hashear y fijar las skills como se fijan las dependencias. Una entrada
skill@1.4.2#sha256:…en un lockfile evita que el artefacto publicado se desplace bajo tu agente, igual quepackage-lock.jsonpara npm. Los escenarios de ataque del artículo asumen que el texto de la skill es mutable después de la instalación. - Descorrelacionar descubrimiento y selección. El disparador que sube una skill en retrieval no siempre es el que sesga la selección — pero usar un único blob de texto para ambos le da al atacante dos objetivos por el precio de uno. Calcular el embedding de descubrimiento desde una vista saneada (nombre canónico, tags, manifiesto firmado) y reservar el texto libre para la selección.
- Pasar escáneres semánticos sobre los metadatos, no solo sobre el código. Los autores publican en GitHub un arnés de medición que ofrece un punto de partida a los defensores. Tratar los manifiestos de skill como correo: un clasificador de contenido marca directivas imperativas («MUST», «always», «antes de ejecutar, ejecutar X») en campos pensados para ser descriptivos.
- Restringir la función de ranking del registro. Relevancia léxica, similitud vectorial, popularidad y confianza de un editor firmado no deberían fundirse en un único score escalar. Una pequeña perturbación adversaria en la descripción no debería poder superar la procedencia de un editor firmado.
- Exigir firma del editor en cada skill, y mostrarla en la selección. Si el prompt de selección del agente muestra la identidad firmante junto a la descripción, un gemelo de una skill popular de un editor desconocido deja de ganar por defecto.
- Default-deny de capacidades de red y filesystem en la capa de skill. Aun cuando una skill maliciosa sea seleccionada, una ejecución acotada por capacidades (ACL por skill, sin credenciales ambientes, whitelist de egreso) limita lo que «ganar la selección» realmente le compra al atacante. Es la misma defensa en profundidad que recomienda el paper CISPA agents-as-OS en este sitio.
Status
| Elemento | Referencia | Fecha | Notas |
|---|---|---|---|
| Artículo publicado | arXiv:2605.11418v1 | 2026-05-12 | cs.CR, Univ. de Maryland |
| Cobertura pública | The Register | 2026-05-22 | Minor edits to AI skills can make agents go rogue |
| Tasa de descubrimiento | 86 % pares, 80 % Top-10 | 2026-05-12 | disparador de 20 tokens en descripción |
| Sesgo de selección | 77,6 % ensayos pareados | 2026-05-12 | encuadre puramente descriptivo |
| Evasión de la verificación | 36,5 %–100 % | 2026-05-12 | según el escáner |
| Código y datos | github.com/ShoumikSaha/agent-skill-security | 2026-05-12 | arnés de medición, sin payloads vivos |
| Trabajo adyacente | arXiv:2605.14460 (Liu et al.) | 2026-05-14 | Semantic Compliance Hijacking, 77,67 % conf. / 67,33 % RCE |
Ningún parche único retira esta clase. La contribución del artículo es hacer explícito lo que los operadores de agentes daban silenciosamente por sentado: los registros de skills forman parte de la frontera de confianza, el archivo de metadatos forma parte de la superficie ejecutable, y veinte tokens de prosa bien colocados mueven la decisión del agente con más fiabilidad que un CVE.