In this article
Cómo prevenir vulnerabilidades de path traversal en los controladores de funciones de servidores MCP
El Model Context Protocol (MCP) está ganando popularidad como una forma estandarizada para que los asistentes de IA interactúen con herramientas externas y fuentes de datos. A medida que crece la adopción de MCP, también aumenta la importancia de proteger los servidores MCP frente a posibles vulnerabilidades. Una investigación reciente sobre la seguridad de MCP realizada por Raul Onitza-Klugman, del equipo de investigación de seguridad de Snyk, destacó los riesgos asociados a los servidores MCP vulnerables y subrayó la necesidad de contar con medidas de seguridad sólidas.
Comprender MCP y sus implicaciones de seguridad
En esencia, MCP es un protocolo abierto diseñado para conectar herramientas, servicios o fuentes de datos externos con modelos de lenguaje grandes (LLM). Funciona como un puente entre las aplicaciones de IA y los recursos a los que necesitan acceder, como bases de datos locales, API o herramientas de línea de comandos.
Los servidores MCP ofrecen tres capacidades principales: recursos, herramientas y prompts. Los recursos son archivos o bloques de datos de solo lectura que los LLM pueden inspeccionar, mientras que las herramientas son funciones o comandos que los LLM pueden ejecutar.
La seguridad de los servidores MCP es fundamental porque suelen ejecutarse de forma local en la computadora de un desarrollador, que puede contener información confidencial, como claves de API, credenciales y propiedad intelectual. Un servidor MCP vulnerable puede convertirse en un vector de ataque y provocar filtraciones de datos, ejecución de código u otras actividades maliciosas.
Como se mencionó anteriormente, la investigación de Raul describe cómo los atacantes explotaron un servidor MCP de AWS y un servidor MCP de Markdown para extraer datos y ejecutar comandos arbitrarios mediante técnicas indirectas de inyección de prompts. Esto demuestra cómo un eslabón débil de la cadena, el código del servidor MCP, puede convertirse en un punto vulnerable que provoque filtraciones importantes de datos y riesgos de seguridad.
Compartir recursos de forma insegura en servidores MCP
Los recursos de los servidores MCP permiten exponer datos como información de solo lectura que los LLM pueden usar como contexto. Por ejemplo, un servidor MCP puede definir registros de bases de datos, el estado de una aplicación u otros tipos de contenido de texto o datos binarios como recursos. Estos recursos se identifican mediante URI únicos y suelen contener esquemas de protocolo personalizados. Una guía anterior sobre cómo crear servidores MCP de Node.js que comparten recursos ofrece instrucciones detalladas para implementar recursos en servidores MCP.
Código inseguro en la definición de recursos de servidores MCP
Las prácticas de codificación inseguras en las definiciones de recursos de los servidores MCP pueden provocar vulnerabilidades de path traversal. Una vulnerabilidad de path traversal se produce cuando un atacante puede manipular la ruta de un archivo para acceder a archivos o datos confidenciales fuera del directorio previsto.
Esto puede ocurrir cuando los datos proporcionados por el usuario no se limpian ni validan correctamente. También puede presentarse fácilmente en recursos de servidores MCP que implementan el acceso a archivos en el disco para devolver su contenido desde el controlador de funciones de un recurso determinado del servidor MCP.
Considera el siguiente ejemplo de código vulnerable en Node.js:
server.resource(
"pipeline-workflows",
new ResourceTemplate("pipeline-workflows://{name}", { list: undefined }),
async (uri, { name }) => {
const decodedName = decodeURIComponent(name);
let filePath = path.resolve(process.cwd(), '.github/workflows/', `${decodedName}.yaml`);
// check if filepath exists
if (!accessSync(filePath)) {
// then try without the .yaml suffix incase the user provided the full filename
filePath = path.resolve(process.cwd(), '.github/workflows/', decodedName);
}
if (accessSync(filePath)) {
let fileContents = '';
try {
fileContents = readFileSync(filePath, 'utf-8');
} catch (e) {
writeFileSync('/tmp/mcp_log.log', `ERROR READING FILE: ${e}\n`, { flag: 'a' });
}
return {
contents: [{
uri: uri.href,
text: fileContents
}]
};
}
}
);
const transport = new StdioServerTransport();
await server.connect(transport);En este ejemplo, filePath se construye con datos proporcionados por el usuario (decodedName). Si un atacante puede manipular el parámetro de nombre, podría acceder a archivos fuera del directorio previsto y exponer información confidencial.
Riesgos de seguridad de las vulnerabilidades de path traversal en servidores MCP
El impacto de una vulnerabilidad de path traversal en un servidor MCP puede ser considerable. Un atacante podría acceder a archivos confidenciales, como archivos de configuración, claves SSH u otros datos privados. Esto podría facilitar otros ataques, como la ejecución de código o la extracción de datos.
Detectar y corregir vulnerabilidades de path traversal
Snyk Code es una herramienta de pruebas de seguridad de aplicaciones estáticas (SAST) que puede ayudar a detectar y corregir vulnerabilidades de path traversal en el código de servidores MCP.
Cuando instales la extensión de Snyk para VS Code, funcionará como un complemento de análisis estático de código, similar a ESLint. Los análisis son increíblemente rápidos: cada vez que guardes el contenido de un archivo, Snyk lo analizará para detectar posibles vulnerabilidades de seguridad en el código.
La siguiente captura de pantalla muestra cómo Snyk ahora resalta, en la línea 140, el código del servidor MCP que implementa la función server.resource() (del SDK de TypeScript Model Context Protocol). Esto muestra claramente una ruta de código que sería vulnerable a un ataque de path traversal si se proporcionara una entrada peligrosa a esta función.

Snyk acelera la mitigación de riesgos al brindar este tipo de impulso a la productividad de los desarrolladores directamente en sus flujos de trabajo del IDE.
Y eso no es todo: ¡Snyk también puede corregir este problema de seguridad! Quizás hayas notado la anotación en la línea: “Corrige este problema: Path Traversal”. Así es como funciona la corrección automática de Snyk:

Cómo empezar a usar Snyk Code
Obtén tu complemento de Snyk para el IDE, ¡es gratis!
Snyk Code usa análisis avanzados con IA (conocidos como IA simbólica) para identificar posibles problemas de seguridad en el código, incluidas las vulnerabilidades de path traversal. Al integrar Snyk Code en tu flujo de trabajo de desarrollo, puedes identificar y corregir vulnerabilidades de seguridad de forma proactiva antes de que se conviertan en un problema.
Esta herramienta analiza el código de tu servidor MCP (o cualquier otro código que tú o el LLM generen) para detectar posibles problemas de seguridad y ofrece informes detallados y recomendaciones para corregirlos. Puedes integrarla en tu IDE o canalización de CI/CD para detectar problemas de seguridad en las primeras etapas del proceso de desarrollo.
Buenas prácticas para proteger los servidores MCP
Para prevenir vulnerabilidades de path traversal en los servidores MCP, sigue estas buenas prácticas de codificación segura:
Valida y limpia los datos proporcionados por el usuario para impedir que se usen datos maliciosos al construir rutas de archivos.
Genera las rutas correctamente con convenciones seguras para evitar ataques de path traversal (puedes aprender de CVE anteriores, como files-bucket-server y static-dev-server).
Aplica prácticas de codificación segura al definir recursos de servidores MCP, como el uso de listas de permitidos y el manejo adecuado de errores.
Integra una herramienta SAST como Snyk Code en tu flujo de trabajo de desarrollo para detectar y corregir posibles vulnerabilidades de seguridad.
¿Qué sigue para la seguridad de MCP?
A medida que MCP evoluciona, es fundamental mantenerse al tanto de los posibles riesgos de seguridad y las buenas prácticas para proteger los servidores MCP. Para obtener más información, consulta estos recursos:
Cómo explotar servidores MCP vulnerables a la inyección de comandos
Curso de Snyk Learn sobre path traversal
No subestimes los ataques de inyección de prompts. Te recomendamos especialmente leer cómo la inyección de prompts puede explotar el texto de un PDF y eludir la técnica de usar un LLM como juez.
Si priorizas la seguridad y sigues las buenas prácticas, podrás garantizar la integridad de tus servidores MCP y protegerlos frente a posibles vulnerabilidades.
¿Te interesa saber más sobre el análisis de MCP? Explora Snyk Labs hoy mismo o accede a la versión de prueba de MCP Scan de Snyk e Invariant Labs.
Descubre Snyk Labs
Tu espacio para conocer las últimas investigaciones y experimentos en seguridad de IA.