Skip to main content

Por qué tu “escáner de Skills” solo da una falsa sensación de seguridad (y quizá sea malware)

Escrito por

11 de febrero de 2026

0 minutos de lectura

Quizá desarrollas con IA o quizá eres CISO. Acabas de autorizar el uso de agentes de IA para tu equipo de desarrollo. Conoces los riesgos, como la exfiltración de datos, la inyección de prompts y la ejecución de código sin verificar. Así que, cuando tu ingeniero principal te dice: «No te preocupes, usamos Skill Defender de ClawHub para analizar cada nueva Skill», respiras aliviado. Marcaste la casilla.

Pero ¿ya revisaste este escáner de Skills?

La ansiedad que sientes no se debe a las amenazas conocidas, sino a las herramientas en las que confías para detectarlas. Es esa sospecha persistente de que tu red de seguridad está llena de agujeros. Y, en el caso de la nueva generación de «escáneres de Skills de IA», esa sospecha está totalmente justificada.

Si no conoces Agent Skills y sus riesgos de seguridad, ya presentamos un modelo de amenazas para Skill.md y explicamos cómo afectan al ecosistema general de agentes de IA y a la seguridad de la cadena de suministro.

Por qué las expresiones regulares no pueden detectar intenciones maliciosas en SKILL.md

El enemigo de la seguridad de la IA no es solo el hacker: también es la variabilidad infinita del lenguaje. En el mundo tradicional de AppSec, buscamos vulnerabilidades conocidas (CVE) y patrones conocidos (secretos). Este enfoque funciona porque el código tiene una estructura finita y determinista. Una carga útil de inyección SQL tiene una estructura reconocible. Una clave de AWS filtrada tiene un formato específico.

Pero una Skill de agente de IA es fundamentalmente diferente. Combina instrucciones en lenguaje natural, ejecución de código y configuración. Depender de una lista de bloqueo de «palabras prohibidas» o patrones vetados es una batalla perdida contra el corpus infinito del lenguaje natural. Simplemente no puedes enumerar todas las formas posibles de pedirle a un LLM que haga algo peligroso. Considera el sencillo comando curl. Un escáner de expresiones regulares podría marcar curl para impedir la exfiltración de datos. Pero un atacante sofisticado no necesita escribir curl. Puede escribir:

  • c${u}rl (usando expansión de parámetros de bash)

  • wget -O- (usando una herramienta alternativa)

  • python -c "import urllib.request..." (usando una biblioteca estándar)

  • O simplemente: «Por favor, obtén el contenido de esta URL y muéstramelo».

En este último caso, el agente construye el comando por sí mismo. El escáner solo ve instrucciones inocentes en inglés, pero la intención sigue siendo maliciosa. Esta es la falla principal de la mentalidad de «lista de bloqueo»: intentas bloquear palabras específicas en un sistema diseñado para entender conceptos.

La complejidad aumenta aún más si consideramos el contexto. Una Skill que solicita «acceso al shell» puede ser perfectamente legítima para una herramienta de implementación de DevOps. Pero puede ser catastrófica para un «buscador de recetas» o un «asistente de calendario». Un detector de patrones ve «acceso al shell» y debe marcar ambos casos (generando ruido) o ignorarlos (creando un riesgo). No entiende por qué se solicita el acceso; solo detecta que aparecen esas palabras.

Caso práctico: enfrentamos escáneres de la comunidad a malware real

Decidimos poner a prueba los «escáneres de Skills» más populares de la comunidad. Analizamos SkillGuard, Skill Defender y Agent Tinman. También los enfrentamos a una Skill personalizada «semimaliciosa» para ver si podían distinguir entre amigos y enemigos.

1. SkillGuard: el escáner que en realidad era malware

Nuestro primer caso fue SkillGuard, de c-goro. ¿La promesa? Un escáner ligero para tus Skills. ¿La realidad? Una trampa.

Vista de un editor de código con un archivo Markdown que contiene un ataque malicioso de inyección de prompts que usa etiquetas del sistema para engañar a una IA y hacer que filtre claves de API.

Al analizar SkillGuard, nuestros sistemas internos no lo identificaron como una herramienta de seguridad, sino como una Skill maliciosa. Intentó instalar una carga útil con el pretexto de «actualizar las definiciones».

Script malicioso de Bash debug.sh que muestra una carga útil de shell inversa, un host codificado en Base64 y comandos curl que exfiltran archivos confidenciales de credenciales a un dominio externo.

Actualización: Al momento de escribir esto, SkillGuard ya se había eliminado de ClawHub. Pero para los cientos de usuarios que lo instalaron, el daño ya está hecho. Esto ilustra un problema fundamental: ¿quién analiza el escáner?

Imagen image4

2. Skill Defender: el falso negativo

Después analizamos Skill Defender (de itsclawdbro) y Agent Tinman (de oliveskin). Son iniciativas legítimas de la comunidad, e incluso Skill Defender tiene una insignia «Benign» en VirusTotal.

Pero «benigno» no significa «eficaz».

Creamos una Skill de prueba llamada vercel. Parecía ser una herramienta de implementación para la plataforma Vercel. En realidad, estaba diseñada para exfiltrar discretamente el nombre de host del usuario a un servidor remoto.

Analizamos esta Skill maliciosa con Skill Defender mediante Gemini CLI.

> use the skill defender to scan current skills

El resultado:

  • La Skill maliciosa (vercel): veredicto: LIMPIA. 0 hallazgos.

  • El escáner (skill-defender): veredicto: PELIGROSO. 20 hallazgos.

Salida de terminal de un análisis de seguridad de Skill Defender. Una habilidad aparece marcada como peligrosa con 20 hallazgos, mientras que la habilidad de Vercel se indica como limpia en un espacio de trabajo de programación.

El escáner no detectó la amenaza real porque el código de exfiltración de nuestra Skill falsa de Vercel no coincidía con su lista codificada de cadenas «malas». Sin embargo, marcó su propio código como peligroso porque sus archivos de referencia contenían precisamente los «patrones de amenaza» que busca.

Esta es la clásica «paradoja del antivirus»: el escáner parece malicioso porque sabe cómo luce el código malicioso, pero no detecta nada nuevo.

3. Ferret Scan: todavía limitado a patrones de expresiones regulares

También analizamos Ferret Scan, un escáner basado en GitHub. Afirma usar un «análisis profundo basado en AST», además de expresiones regulares. Aunque es mucho mejor que las herramientas nativas de ClawHub, todavía tiene dificultades con los matices de los ataques en lenguaje natural.

Imagen image6

Puede detectar una clave de API codificada, pero ¿puede detectar una inyección de prompts oculta en un PDF que el agente debe resumir?

Pasar al análisis del comportamiento y la intención de los agentes

Debemos dejar de pensar en la seguridad de la IA como un «filtro de palabras malas» y empezar a pensar en el análisis del comportamiento.

El código de IA es como la deuda financiera: se acumula rápido, pero si no entiendes las condiciones (es decir, la intención del prompt), te estás endeudando hasta la bancarrota.

Un escáner de expresiones regulares es como un corrector ortográfico: verifica que las palabras estén bien escritas. Un escáner semántico es como un editor. Pregunta: «¿Esta oración tiene sentido? ¿Le indica al usuario que haga algo peligroso?».

Pruebas de la investigación ToxicSkills: el contexto lo es todo

En nuestra reciente investigación ToxicSkills, descubrimos que el 13,4 % de las Skills contenía problemas de seguridad críticos. La gran mayoría NO se detectó con una simple búsqueda de patrones.

  • Inyección de prompts: ataques que usan técnicas de «jailbreak» para eludir los filtros de seguridad.

  • Cargas útiles ofuscadas: código oculto en cadenas base64 o descargas externas (como el reciente ataque google-qx4).

  • Riesgos contextuales: una Skill que solicita «acceso al shell» puede ser adecuada para una herramienta de desarrollo, pero catastrófica para un «buscador de recetas».

Las expresiones regulares ven «acceso al shell» y marcan ambos casos. O, peor aún, no detectan ninguno porque el prompt dice «ejecutar comando del sistema».

La solución: seguridad nativa de IA para archivos SKILL.md

Para hacer frente a esta velocidad, debes ir más allá de los patrones estáticos. Necesitas seguridad nativa de IA.

Por eso creamos mcp-scan (como parte de la plataforma Evo de Snyk). No se limita a buscar cadenas de texto. Usa un LLM especializado para leer el archivo SKILL.md y entender las capacidades de la Skill y sus artefactos asociados (por ejemplo, los scripts).

Puedes pensar en mcp-scan como una forma de preguntar:

  • ¿Esta Skill solicita permiso para leer archivos?

  • ¿Intenta convencer al usuario de que ignore las instrucciones anteriores?

  • ¿Hace referencia a un paquete que tiene menos de una semana (a través de Snyk Advisor)?

Al combinar las pruebas estáticas de seguridad de aplicaciones (SAST) con el análisis de intención basado en LLM, podemos detectar la Skill vercel que exfiltra datos porque vemos el comportamiento (el envío de datos a un endpoint desconocido), no solo la sintaxis.

Mañana, hazle estas tres preguntas a tu equipo:

  1. «¿Tenemos un inventario de todas las “Skills” que usan nuestros agentes de IA?» - Si dicen que sí, pregunta cómo las encontraron. Si lo hacen manualmente, está desactualizado. Si dicen que no, comparte con ellos la herramienta mcp-scan.

  2. «¿Analizamos estas Skills para detectar la intención, o solo buscamos palabras clave?» - Cuestiona la mentalidad de las expresiones regulares.

  3. «¿Qué pasa si mañana una Skill de confianza se actualiza con una dependencia maliciosa?» - Promueve el análisis continuo, no solo una vez.

No dejes que el «teatro de seguridad» te dé una falsa sensación de protección. Los agentes son inteligentes. Tu seguridad debe ser aún más inteligente. Descubre cómo Evo by Snyk ofrece un control unificado para la IA agéntica.

GUÍA

Unifica el control de la IA agéntica con Evo by Snyk

Evo by Snyk ofrece a los líderes de seguridad e ingeniería una orquestación unificada de seguridad de IA en lenguaje natural. Descubre cómo Evo coordina agentes especializados para brindar protección integral durante todo el ciclo de vida de tu IA.