Detectar riesgo de inyección SQL
detect_sql_injection_riskAnaliza el código fuente de una herramienta MCP que ejecuta una consulta SQL a partir de una entrada que le pasa el agente (un nombre de usuario, un filtro de búsqueda, un identificador cualquiera) en busca de dos señales de riesgo distintas: (1) el patrón clásico de inyección — una llamada que ejecuta SQL crudo (.query, .execute, .raw, .exec_driver_sql, mysqli_query, y equivalentes) con la consulta armada por concatenación o interpolación de una variable/entrada externa, en vez de un parámetro preparado, sin ninguna función de escape reconocible cerca; y (2) un patrón propio de Garita motivado por un caso real: el código (o su comentario/descripción) afirma que la herramienta es de "solo lectura", pero no hay ninguna señal de que eso se aplique de verdad a nivel de base de datos — exactamente lo que Datadog Security Labs encontró en el servidor MCP de referencia de Postgres de Anthropic, donde la restricción de "solo lectura" vivía únicamente en el texto que lee el agente, no como un permiso real. Motivada por un censo real de 2026 sobre 9.695 servidores MCP escaneados: inyección SQL fue el 4.2% de los 4.982 problemas encontrados (211 casos). También documentado en CVE-2026-7206 (sqlite-mcp) y CVE-2025-66335 (Apache Doris MCP Server). Es un análisis estático por patrones de texto (no ejecuta el código) — mismo enfoque que detect_ssrf_risk, detect_path_traversal_risk y detect_command_injection_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_sql_injection_risk"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| codigo | Yes | El código fuente de la función/herramienta que ejecuta una consulta SQL, 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. |