El blog de seguridad de FireAI

Por FireAI Security & Research Team · Publicado

El punto ciego de MCP: cuando un documento puede hacer que su agente de IA actúe

El punto ciego de MCP: cuando un documento puede hacer que su agente de IA actúe

Anthropic presentó el Protocolo de contexto modelo (MCP) el 25 de noviembre de 2024 como "un estándar abierto que permite a los desarrolladores crear conexiones bidireccionales seguras entre sus fuentes de datos y herramientas impulsadas por IA". En la práctica, MCP permite que un asistente de IA llame a programas locales, llamados servidores MCP, que leen archivos, consultan bases de datos o acceden a la web en su nombre. Esto es realmente útil y también es un nuevo tipo de superficie de ataque: el modelo decide a qué herramienta llamar en función del texto que lee, y no siempre puede distinguir sus instrucciones de las de otra persona.

Cómo se ejecuta realmente un servidor MCP

La especificación MCP define dos transportes. Sobre stdio, “el cliente inicia el servidor MCP como un subproceso” y los dos hablan sobre entrada y salida estándar. A través de HTTP Streamable (que reemplazó el transporte HTTP+SSE original de la especificación de noviembre de 2024), el servidor se ejecuta como su propio proceso local y el cliente le envía solicitudes HTTP, recibiendo opcionalmente una secuencia de eventos enviados por el servidor (Especificación MCP, transportes). De cualquier manera, un servidor MCP local generalmente se ejecuta con los mismos permisos de archivo y red que la persona que lo inició, porque nada en el protocolo requiere lo contrario.

La especificación en sí señala directamente el riesgo de la variante HTTP: requiere que los servidores validen el encabezado Origin, recomienda vincularse a 127.0.0.1 en lugar de 0.0.0.0 cuando se ejecuta localmente y exige autenticación en cada conexión, advirtiendo que sin esto, “los atacantes podrían usar la nueva vinculación de DNS para interactuar con servidores MCP locales desde sitios web remotos”.

El mecanismo: un diputado confundido

El nombre clásico de este modo de falla es problema de diputado confundido: “un programa de computadora que es engañado por otro programa (con menos privilegios o menos derechos) para que haga un mal uso de su autoridad”. Un agente de IA con acceso a la herramienta MCP es un suplente con autoridad real (para leer sus archivos, realizar solicitudes de red) y actúa siguiendo instrucciones que pueden provenir del contenido que solo se le pidió resumir o analizar. Cuando ese contenido contenga sus propias instrucciones, el agente podrá seguirlas en lugar de las suyas o además de ellas. Esto es lo que la clase de riesgos Top 10 para aplicaciones LLM de OWASP llama inyección rápida y agencia excesiva: OWASP: Top 10 para aplicaciones LLM; @@ENLACE2@@.

Un caso demostrado: el servidor GitHub MCP

Esto no es teórico. El 26 de mayo de 2025, Laboratorios invariantes reportados realizó una prueba de concepto contra el servidor oficial GitHub MCP, que tenía aproximadamente 14.000 estrellas GitHub en ese momento. Su configuración: se pidió a un agente con acceso a un repositorio público y privado que revisara los problemas abiertos en el público. Una emisión elaborada en el repositorio público contenía instrucciones ocultas; el agente, leyéndolo como parte de su tarea normal, los siguió y en la demostración expuso detalles del repositorio privado, incluida información que los investigadores describen como personal, al hilo del problema controlado por el atacante. Invariant Labs fue explícito en que se trataba de una prueba de concepto demostrada en repositorios de prueba, no un ataque observado en la naturaleza, y que "esto no es una falla en el código del servidor GitHub MCP en sí, sino más bien un problema arquitectónico fundamental que debe abordarse a nivel del sistema agente". El modelo utilizado en la demostración fue Claude 4 Opus.

La trifecta letal

El 16 de junio de 2025, Simon Willison denominó el patrón detrás de casos como este “Trifecta letal”: un agente que tiene (1) acceso a datos privados, (2) exposición a contenido que no es de confianza y (3) una forma de comunicarse externamente. "Si su agente combina estas tres características, un atacante puede engañarlo fácilmente para que acceda a sus datos privados y se los envíe". Nombra específicamente a MCP como colaborador: "El problema con el Protocolo de contexto modelo (MCP) es que anima a los usuarios a mezclar y combinar herramientas de diferentes fuentes que pueden hacer cosas diferentes", lo que hace que sea fácil terminar con las tres propiedades activas en una sesión sin decidirlo.

Por qué esto es difícil de ver para las herramientas de endpoints

Desde el punto de vista del sistema operativo, no sucedió nada inusual en el caso de GitHub MCP: una aplicación confiable y firmada leyó un texto e hizo una solicitud de red a través de un proceso auxiliar local para el cual estaba configurada. No hay ningún binario malicioso que marcar ni ninguna explotación de un error de seguridad de la memoria. La solicitud que importa, la que lleva los datos, tiene la misma forma que cualquier otra llamada de herramienta que el agente realiza correctamente cien veces al día.

Lo que realmente reduce el riesgo.

  • Proporcione a cada servidor MCP las herramientas y el alcance de archivos más limitados que necesita, no un amplio acceso al sistema de archivos o al shell, de modo que una llamada a una herramienta secuestrada tenga menos que hacer.
  • Trate cualquier contenido que un agente lea fuera de su control (problemas, páginas web, archivos descargados) como entrada no confiable, la misma disciplina que aplicaría a la entrada del usuario en cualquier otro sistema.
  • Siga la guía a nivel de transporte que proporciona la propia especificación MCP: vincule los servidores locales al host local, requiera autenticación, valide el encabezado de origen.
  • Observe o controle el paso que comparten todas las versiones de este ataque: la conexión saliente que transportaría datos al atacante. Ese paso ocurre después de que el modelo ya ha sido engañado, por lo que es el lugar más confiable para detectarlo.

El papel de FireAI y de HisnLabs

The step an injected agent cannot skip is the outbound connection that carries your data out, which is exactly what a per-app firewall like FireAI is built to see and stop, whether the process asking to connect is a familiar app or an MCP server it has never seen before.

FireAI es el propio producto de HisnLabs: un cortafuegos con IA integrada para Mac. Muestra, en lenguaje claro, cada conexión que hacen tus aplicaciones y te deja decidir qué sale de tu Mac; su IA funciona en el propio equipo, así que tu tráfico nunca se envía a HisnLabs ni a nadie más. El equipo de investigación en seguridad de HisnLabs es quien mantiene esas decisiones fiables: cataloga qué dominios son simple telemetría frente a un servicio real, sigue el país y la red detrás de una conexión, y entrena el modelo local (la función Autopilot) con tráfico real, sin que nada salga de tu Mac.

Puedes leer las decisiones técnicas detrás de esto, o probar FireAI durante 17 días, en FireAI, de HisnLabs.

Fuentes