Detectar riesgo de path traversal / acceso arbitrario a archivos
detect_path_traversal_riskAnaliza el código fuente de una herramienta MCP que lee, escribe o borra un archivo a partir de una ruta que le pasa el agente (abrir un documento, guardar un adjunto, exportar un reporte) en busca de señales de riesgo de path traversal: una operación de archivo (fs.readFile, fs.writeFile, open, shutil, send_file, y equivalentes) cuya ruta depende de una variable/entrada externa sin ninguna validación reconocible contra secuencias de escape ("../") cerca, una referencia directa a una ruta sensible del sistema (/etc/passwd, una llave SSH, un archivo de credenciales) dentro de la propia operación, y ausencia de rechazo explícito de rutas absolutas (aunque sí se filtren las secuencias "../", una ruta absoluta directa puede seguir escapando del directorio permitido). Motivada por ser la categoría MÁS GRANDE de vulnerabilidades reales encontradas en un censo de 2026 sobre 9.695 servidores MCP escaneados: acceso arbitrario a archivos fue el 17.7% de los 4.982 problemas encontrados (880 casos) — más grande que denegación de servicio, inyección de comandos o SSRF. Caso real: CVE-2026-40576 (CVSS 9.4, crítico) en un servidor MCP de Excel, donde su función de rutas permitía tanto rutas absolutas como secuencias "../" sin resolverlas contra el directorio permitido. Es un análisis estático por patrones de texto (no ejecuta el código) — mismo enfoque que detect_ssrf_risk. Requiere una llave de acceso válida (usos gratis o créditos) — ver POST /crear-llave.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"codigo": "<codigo>"
},
"name": "detect_path_traversal_risk"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| codigo | Yes | El código fuente de la función/herramienta que lee, escribe o borra un archivo, en texto plano. | |
| lenguaje | No | Solo informativo (ej. "javascript", "python") — la detección ya cubre varios lenguajes a la vez, este campo no cambia el resultado. |