sistema: OPERATIVO
← volver a todos los hacks
AGENTS MEDIUM NEW

VIPER-MCP: 67 CVE por fallos de tipo taint en 40 000 servidores MCP

Un artículo de arXiv del 20 de mayo de 2026 auditó 39 884 repositorios de servidores MCP de código abierto, confirmó 106 zero-days de extremo a extremo y obtuvo 67 identificadores CVE. La historia es el patrón: entrada de agente no confiable que alcanza sinks de shell, red y archivos.

2026-06-05 // 7 min affects: mcp-protocol, mcp-servers, llm-agents

What is this?

El 20 de mayo de 2026, un equipo (Pengyu Sun, Qishu Jin, Enhao Huang, Zifeng Kang, Xin Liu, Dakun Shen y Song Li) publicó VIPER-MCP en arXiv (cs.CR, 2605.21392). Es un marco de auditoría automatizada para servidores Model Context Protocol (MCP): los pequeños programas que exponen herramientas (comandos de shell, peticiones HTTP, acceso a archivos, consultas de bases de datos) a un agente LLM.

Las cifras del titular: en un escaneo de 39 884 repositorios de servidores MCP de código abierto, VIPER-MCP encontró 106 vulnerabilidades zero-day, confirmó cada una con una traza de explotación de extremo a extremo y ha conseguido la asignación de 67 identificadores CVE hasta la fecha. Los autores indican que todos los hallazgos confirmados se divulgaron de forma responsable a los desarrolladores afectados. Cubrimos esto no porque algún fallo concreto sea inédito —son fallos de inyección clásicos— sino porque la medición cuantifica un patrón que el ecosistema MCP arrastra desde sus inicios: una entrada en lenguaje natural del agente que llega, sin sanear, hasta un sink sensible.

How it works

Una vulnerabilidad «de tipo taint» es una ruta donde una entrada controlada por el atacante (la fuente) alcanza una operación peligrosa (el sink) sin validación suficiente por el medio. En un servidor MCP la fuente es un argumento de herramienta que el modelo rellena; el sink es lo que el manejador de la herramienta hace con él. Cuando ese manejador invoca un shell, abre un socket, construye una ruta de archivo o ensambla una consulta, un argumento sin restringir se convierte en inyección de comandos, SSRF, traversía de directorios o inyección SQL — y como las herramientas MCP se ejecutan con los privilegios del servidor, el estado final suele ser ejecución remota de código. Es la misma clase que los hallazgos de back-end MCP de Akamai y el mismo cruce de frontera que Microsoft documentó cuando los prompts se convirtieron en shells.

La aportación de VIPER-MCP es hacer esto auditable a escala sin ahogarse en falsos positivos. Combina dos pasadas, descritas aquí a nivel de método, no de payload:

Etapa                 Qué hace
--------------------  ----------------------------------------------------------
Escaneo estático 2x   El análisis de taint estándar marca rutas fuente->sink
                      candidatas, y luego una pasada «anchor-query» añade estructura
                      a nivel de función para que una alerta de archivo se resuelva
                      en un manejador de herramienta MCP concreto y una cadena de
                      llamadas concreta.
Confirmación dinámica Un bucle guiado por retroalimentación refina los prompts en
                      lenguaje natural hacia el sink marcado. Dos mutadores corren
                      de forma independiente: uno corrige la deriva de selección de
                      herramienta, otro profundiza la penetración del parámetro.
                      Semillas puntuadas por fitness guían la búsqueda.
Veredicto             Una ruta solo se reporta si una traza de extremo a extremo
                      alcanza realmente el sink — un «hallazgo» es por tanto un
                      exploit confirmado, no una advertencia sin validar.

El interés metodológico: los escáneres MCP anteriores producían o bien alertas estáticas imposibles de triar, o bien dependían de plantillas de payload fijas que se perdían los fallos que requerían una forma de argumento específica o una ruta de varios pasos. Frente a dos referencias existentes, los autores reportan una tasa del 4,6 % de falsos positivos y 7,7 % de falsos negativos. Aquí no se reproduce ningún prompt de explotación; la referencia canónica es el artículo y los registros CVE asignados.

Why it matters

La capa de servidores MCP es ya una cadena de suministro de software amplia y de rápido crecimiento, que la mayoría de los equipos instalan en lugar de escribir. Las mediciones de junio de 2026 ponen cifras a la exposición: según el resumen de MCP de Adversa, Censys contó 12 520 servicios MCP accesibles desde Internet (la mayoría sin autenticar), y un estudio de medición aparte halló que aproximadamente el 40 % de los servidores remotos exponen sus herramientas sin autenticación alguna. VIPER-MCP añade la dimensión de calidad del código: una fracción notable de esos servidores también arrastra fallos de tipo taint explotables en sus manejadores de herramientas.

Se derivan dos consecuencias. Primero, un servidor MCP vulnerable convierte la prompt injection en RCE. Si un atacante puede influir en el contenido que lee un agente —una página web, un documento, un comentario— puede dirigirlo para que llame a una herramienta defectuosa con un argumento hostil. El agente es el vehículo de entrega; el fallo del servidor es el payload. Segundo, 67 CVE en 40 000 repositorios significa que tu grafo de dependencias casi con certeza incluye algunas. A diferencia de un aviso aislado, es una clase que hay que barrer, no una línea que se parchea una vez.

Defenses

Las correcciones son poco vistosas y bien conocidas — la brecha es que el código de los servidores MCP a menudo se las salta.

  1. Trata cada argumento de herramienta como entrada no confiable. El modelo no es un invocador de confianza; sus argumentos pueden estar influidos por un atacante vía inyección indirecta. Valida tipo, longitud y conjunto de caracteres permitido en la frontera del manejador antes de que el valor alcance cualquier sink.

  2. Elimina los sinks peligrosos. Evita shell=True / comandos construidos por concatenación (pasa vectores de argumentos), parametriza cada consulta de base de datos, resuelve y confina las rutas de archivo a una raíz en lista blanca, y restringe las peticiones salientes a una lista blanca de destinos para bloquear el SSRF. Nunca pases un argumento de herramienta a eval/exec.

  3. Ejecuta los servidores con mínimo privilegio y aislamiento. Reduce el radio de impacto: usuario dedicado de bajo privilegio, sandbox o contenedor, sin credenciales cloud ambientales, filtrado de egress de red. Un RCE confinado es un incidente; uno sin confinar es una brecha.

  4. Autentica y des-expón los servidores remotos. Pon autenticación delante de cada servidor MCP remoto y retira de la Internet pública los que no la tienen — el movimiento de mayor impacto, y el que los recuentos de exposición muestran que la mayoría de operadores aún omite.

  5. Audita antes de confiar en un servidor de terceros. Escaneo de taint estático (lo que VIPER-MCP automatiza) más revisión de qué servidores cargas al arranque. Comprueba si alguna de las 67 CVE asignadas afecta a tus dependencias y sigue los parches upstream.

  6. Añade una capa de confianza y admisión. Combina lo anterior con propuestas como la admisión atestiguada de servidores de herramientas (clearance firmada, listas blancas deny-by-default) y las consideraciones de diseño de seguridad de MCP de la NSA como base.

Status

ElementoReferenciaFechaNotas
Artículo VIPER-MCParXiv:2605.21392 (cs.CR)2026-05-20Marco de auditoría estática + dinámica para servidores MCP
Alcance del escaneoArtículo2026-05-2039 884 repositorios de servidores MCP de código abierto
HallazgosArtículo2026-05-20106 zero-days confirmados, 67 CVE asignadas hasta la fecha
DivulgaciónArtículo2026-05-20Divulgación responsable; asignación de CVE coordinada
Exposición del ecosistemaAdversa / Censys2026-06-0412 520 servicios MCP expuestos en Internet, ~40 % de servidores remotos sin autenticar

El encuadre correcto no es «MCP está roto» — es que los servidores MCP son software corriente con bugs de inyección corrientes, desplegados con un privilegio extraordinario y a menudo sin autenticación. El agente que tienen delante solo hace que la fuente sea más fácil de alcanzar para un atacante. Barre tus servidores en busca de las CVE divulgadas, elimina los sinks, y pon autenticación y aislamiento delante de todo lo que pueda ejecutar un comando.

Sources