Saltar al contenido
Fali Fuentes

Dos fallos críticos en servidores MCP exponen repositorios y bypass SSRF

Read this article in English

El 8 de noviembre de 2026 se publicaron dos avisos de seguridad en el repositorio oficial modelcontextprotocol/servers que afectan a la capa de tooling del Model Context Protocol (MCP). Ambos fallos fueron reportados por ShieldPi y están bajo revisión de los mantenedores, que confirman validez técnica parcial. No existe parche oficial en el momento de redactarse este artículo; la defensa pasa por controles de red, sistema de archivos y despliegue con mínimo privilegio.

Contexto: MCP y la capa de tooling expuesta

MCP define un protocolo estandarizado para que agentes LLM invoquen herramientas locales o remotas como sistema de archivos, Git, HTTP o bases de datos. Los servidores de referencia mcp-server-git y mcp-server-fetch implementan esas capacidades y se ejecutan con los privilegios del proceso que los lanza. Cualquier fallo en su validación de entradas rompe el modelo de confianza «el agente solo ve lo que el servidor permite» y abre vectores de movimiento lateral o exfiltración.

La superficie de ataque crece cuando múltiples agentes comparten servidores MCP sin segmentación por scope o identidad. Un escape de confinamiento en Git o un bypass SSRF en fetch permite a un agente malicioso —o a un prompt inyectado— alcanzar recursos fuera de su ámbito: repositorios privados, metadatos de nube, servicios internos. La gravedad no reside en el protocolo MCP, sino en la implementación de sus servidores de referencia.

Ambos avisos se publicaron como GitHub Security Advisories el mismo día, lo que indica coordinación de divulgación responsable. Los mantenedores (PederHP) reconocen que «algunas reclamaciones técnicas parecen válidas» y advierten que presentaciones automatizadas adicionales conllevarán bloqueo. Esa respuesta sugiere parches en días, no semanas, pero hasta entonces la exposición es real en cualquier despliegue con versiones 2026.11.4 o 2026.10.24.

CVE-2026-41902: escape de confinamiento en mcp-server-git

La función validate_opened_repo verifica worktree, git dir y common dir, pero omite .git/objects, objects/info/alternates y symlinks en objects/. Un repositorio crafted dentro de la raíz permitida que apunte su alternates a una base de objetos externa —o tenga objects/ como symlink a un pool fuera— permite a git_show devolver commits y blobs ajenos, y a git_checkout/git_create_branch materializar historial externo en el worktree autorizado.

La reproducción confirmada describe la creación de dos repositorios (allowed/crafted y outside), escritura de la ruta de objetos externa en crafted/.git/objects/info/alternates, e invocación de git_show contra el servidor iniciado con –repository allowed. El control negativo (repo hermano sin alternates) falla correctamente, lo que aísla la causa en la validación incompleta de alternates.

El impacto abarca divulgación cruzada de secretos, código propietario e historial, además de write priming del worktree autorizado desde almacén externo. El fix propuesto exige resolver .git/objects y cada target de alternates tras abrir el repo, exigiendo que queden bajo la raíz autorizada o rechazando alternates de plano, y revalidar en cada herramienta que resuelva objetos. Véase el aviso completo en GitHub Security Advisory #5487.

CVE-2026-41904: bypass SSRF en mcp-server-fetch

La guardia _is_public_address desenrolla formas IPv4-mapped y NAT64 bien conocidas, pero omite el rango fec0::/10 (IPv6 site-local deprecado) y confía en ip.is_global, que devuelve True para fec0::1. Resultado: la lista de permitidos SSRF acepta peticiones a destinos no públicos. La prueba de concepto se reproduce en versiones 2026.11.4 y 2026.10.24; la matriz de 36 casos rechaza correctamente bucles, RFC1918, link-local, redirecciones 307/308, userinfo, trailing-dot, uppercase-host, 0.0.0.0 y [::].

La nota de alcanzabilidad aclara que en kernel moderno fec0::1 suele agotar tiempo de espera; la forma traducida [::ffff:0:127.0.0.1] se normaliza y bloquea correctamente. Es un fallo de corrección del clasificador de la guardia (su modelo de amenazas incluye destinos no públicos), no un exploit probado contra servicios de metadatos en hosts por defecto. El fix propuesto bloquea explícitamente fec0::/10 y ::ffff:0:0/96, y aplica deny-by-default sobre not ip.is_global más comprobaciones de rangos reservados/site-local.

La superficie afectada es cualquier despliegue de mcp-server-fetch que resuelva URLs controladas por el usuario o el agente. El vector permite pivotar a redes internas si hay servicios escuchando en site-local. Detalles técnicos y matriz de pruebas en GitHub Security Advisory #5492.

Mitigaciones inmediatas y límites

Para mcp-server-git: montar el repositorio servido en sistema de archivos read-only para el proceso del servidor; usar –repository apuntando a copia bare sin alternates ni symlinks en objects/; ejecutar con usuario dedicado sin lectura fuera de la raíz. Requiere control del despliegue (Docker, systemd, K8s). No protege si el atacante escribe en el repo servido vía otra herramienta MCP con escritura.

Para mcp-server-fetch: denegar tráfico saliente a fec0::/10 y ::ffff:0:0/96 en firewall/host (iptables/nftables, security groups cloud); forzar deny-by-default en egress con allow-list de dominios necesarios. No corrige el bug lógico; un atacante que controle DNS o use IPv4-mapped válido podría pivotar si hay otros fallos. Restringir esquema a https:// y dominios permitidos si el servidor expone esa configuración.

Medidas transversales: inventario y versionado exacto de cada servidor MCP por entorno; principio de menor privilegio (contenedor/usuario propio, FS read-only salvo directorios explícitos, egress mínimo); logging de invocaciones (git_show, git_checkout, fetch) con parámetros y solicitante; alertas en patrones anómalos (IPs privadas, ../, alternates); verificación de integridad de imágenes (cosign/sigstore, SBOM) y revisión de provenance de PRs de fix; suscripción a GitHub Security Advisories del repo y CVE/NVD.

Próximos pasos y arquitectura defensiva

Hoy: identificar todos los despliegues de mcp-server-git y mcp-server-fetch (versiones 2026.11.4 o 2026.10.24) y aplicar mitigaciones temporales de red y FS. En 24-48 h: implementar reglas egress deny-by-default y allow-list de dominios para fetch; montar repos Git servidos en read-only sin alternates. En cuanto salga parche: desplegar versión corregida (esperada en días), validar en staging que resuelve los PoC descritos.

Revisar arquitectura MCP: evaluar si el modelo «servidor por capacidad» (Git, fetch, FS, SQL) está correctamente segmentado y si cada agente tiene su propio scope de servidores (zero-trust entre agentes). La capa de tooling es la superficie más expuesta cuando agentes autónomos invocan herramientas; la segmentación por identidad y propósito reduce radio de explosión de cualquier fallo individual.

Estos fallos no son vulnerabilidades del protocolo MCP, sino de implementaciones de referencia. La pronta publicación en GitHub Security Advisories y la respuesta de mantenedores indican parches oficiales inminentes; hasta entonces, los controles de red, sistema de archivos y despliegue con mínimo privilegio son la única defensa verificada. Mantener visibilidad de advisories y cadena de suministro cerrará el ciclo cuando lleguen los fixes.

Ficha estructurada para consulta y agentes de IA

{
  "format": "rafael-fuentes-article/1.0",
  "language": "es",
  "title": "Dos fallos críticos en servidores MCP exponen repositorios y bypass SSRF",
  "summary": "Análisis técnico de CVE-2026-41902 y CVE-2026-41904: escape de confinamiento en mcp-server-git y bypass SSRF en mcp-server-fetch. Mitigaciones inmediatas sin parche oficial.",
  "author": "Rafael Fuentes",
  "publicationDate": "2026-11-09T06:01:35.033+01:00",
  "eventDate": "2026-11-08",
  "url": "https://falifuentes.com/rafael-fuentes-2026-11-09-am-es/",
  "translation": {
    "language": "en",
    "url": "https://falifuentes.com/rafael-fuentes-2026-11-09-am-en/"
  },
  "topics": [
    "Ciberseguridad",
    "Español",
    "IA",
    "Inteligencia artificial",
    "Noticias de Ciberseguridad"
  ],
  "sources": [
    "https://github.com/modelcontextprotocol/servers/issues/5487",
    "https://github.com/modelcontextprotocol/servers/issues/5492"
  ]
}
SYSTEM_EXPERT
Rafael Fuentes – BIO

Soy un experto en ciberseguridad con más de veinte años de experiencia liderando proyectos estratégicos en la industria. A lo largo de mi carrera, me he especializado en la gestión integral de riesgos cibernéticos, la protección avanzada de datos y la respuesta efectiva a incidentes de seguridad. Poseo una certificación en Ciberseguridad Industrial, que me ha dotado de un conocimiento profundo en el cumplimiento de normas y regulaciones clave en ciberseguridad. Mi experiencia abarca la implementación de políticas de seguridad robustas y adaptadas a las necesidades específicas de cada organización, asegurando un entorno digital seguro y resiliente.

Comparte
Scroll al inicio