Escudo de Lanzamiento MCP (STDIO)
detect_mcp_stdio_launch_riskAnaliza el código que arma la conexión de un CLIENTE MCP por transporte "stdio" (StdioClientTransport del SDK de TypeScript, StdioServerParameters del SDK de Python) en busca de una falla de DISEÑO confirmada en los cuatro SDKs oficiales de MCP (Python, TypeScript, Java, Rust) en 2026: el sistema operativo ejecuta el campo "command" de inmediato al construir/conectar el transporte, ANTES de que exista ninguna validación del protocolo MCP — "incluso cuando el comando malicioso falla en establecer una sesión MCP válida... el comando ya se ejecutó" (Cloud Security Alliance). Si "command"/"args" viene de una entrada externa sin restringirlo a una lista de lanzadores conocidos, cualquiera que controle ese campo ejecuta código arbitrario. Detecta: (1) "command" dependiente de una entrada externa sin ninguna validación reconocible contra una lista de lanzadores permitidos; (2) una variante más sutil ("brecha de rehidratación"): el archivo sí valida en algún lado, pero el lanzamiento analizado viene de una configuración ya guardada/ cargada antes, sin volver a validar al momento de lanzarla de verdad — el patrón exacto detrás de CVE-2026-30623 (LiteLLM) antes de su parche; (3) un comando SÍ presente en una lista blanca razonable (python, node, etc.) cuyos argumentos incluyen una bandera de ejecución directa de código (-c/-e/--eval) con un valor que no es fijo — la lista blanca por nombre de binario no alcanza si el atacante solo elige el código que ese binario ya permitido va a ejecutar; y (4) la falsa sensación de seguridad de asumir que si el comando no resulta un servidor MCP válido "el protocolo fallaría" y ahí termina el problema. También documentado en CVE-2026-22688 (Tencent WeKnora, CVSS 9.9): mismo patrón, expuesto en un endpoint "/test" sin control de acceso de administrador. Distinto y complementario a detect_command_injection_risk: ese cubre la inyección de comandos clásica vía una shell del sistema; este cubre el contrato específico de los SDKs de MCP, donde el riesgo existe aunque no haya ninguna shell de por medio. Es un análisis estático por patrones de texto (no ejecuta el código) — mismo enfoque que detect_command_injection_risk y detect_missing_auth_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_mcp_stdio_launch_risk"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| codigo | Yes | El código que arma la conexión stdio de un cliente MCP (construcción de StdioClientTransport/StdioServerParameters), en texto plano. | |
| lenguaje | No | Solo informativo (ej. "javascript", "python") — la detección ya cubre varios SDKs a la vez, este campo no cambia el resultado. |