Ciberseguridad · Seguridad MCP · 7 min

Inyección de comandos y validación de entradas: proteger herramientas que ejecutan acciones

Los parámetros propuestos por un modelo deben tratarse como entrada no confiable. La seguridad depende de validar el tipo, el alcance y el efecto de cada operación.

Inyección de comandosValidaciónMCPSeguridad de herramientas
Validación antes de ejecutarSecuencia de validación y autorización que precede a la ejecución de una herramienta MCP. Las entradas inválidas terminan en rechazo seguro antes de producir efectos.01Entrada02Esquema03Autorización04Función específica05Recurso
Validación antes de ejecutarLas entradas inválidas terminan en rechazo seguro antes de producir efectos.
Operación específica frente a intérprete generalComparación conceptual entre una herramienta de capacidad limitada y una herramienta de ejecución general. Evitar exponer al modelo un intérprete general cuando basta una operación delimitada.01Acción predefinida02Parámetros tipados03Intérprete general04Alcance amplio
Operación específica frente a intérprete generalEvitar exponer al modelo un intérprete general cuando basta una operación delimitada.

Introducción

Una herramienta puede parecer una función sencilla y terminar ejecutando un proceso, consultando una base de datos o modificando un recurso externo. Si la entrada se concatena en un comando o se interpreta sin controles, aparece un riesgo de inyección. La causa está en el diseño y la implementación de la herramienta, no en MCP como protocolo.

Validar el significado, no solo el formato

Define esquemas estrictos: tipos, longitudes, formatos y campos permitidos. Rechaza valores inesperados con errores claros. Pero una entrada que cumple el esquema puede seguir estando fuera de autorización: comprueba también que el usuario puede operar sobre ese recurso y que la herramienta permite esa acción en su contexto.

Cuando necesites invocar un proceso, utiliza APIs estructuradas o ejecución con argumentos separados en vez de concatenar datos en una cadena de shell. Evita intérpretes cuando no sean necesarios. Usa rutas permitidas, directorios de trabajo controlados y un entorno aislado con permisos mínimos.

Para operaciones con efectos, limita la acción a una tarea concreta; no conviertas instrucciones libres del modelo en comandos arbitrarios. Aplica límites de tiempo, salida y recursos. El servicio que recibe la petición debe validar su propia autorización: la validación del cliente o una confirmación de interfaz no bastan.

Pruebas y errores seguros

Prueba límites, campos ausentes, tipos incorrectos y entradas inesperadas con datos de prueba no dañinos. Comprueba que una operación rechazada no deja efectos parciales. Mantén mensajes de error útiles para diagnosticar, sin devolver secretos, rutas internas o detalles que no sean necesarios.

Conclusión

La defensa combina validación semántica, autorización, APIs seguras, aislamiento y pruebas negativas. La salida más segura suele ser una operación estrecha y predefinida, no un intérprete general conectado al modelo.

Fuentes y rigor

Referencias

Referencias verificadas el 25 de septiembre de 2026. La especificación puede cambiar; comprueba las versiones vigentes antes de tomar decisiones de implementación.

Conclusión

La defensa combina validación semántica, autorización, APIs seguras, aislamiento y pruebas negativas. La salida más segura suele ser una operación estrecha y predefinida, no un intérprete general conectado al modelo.

Sigue explorando

Artículos relacionados