Construimos los puestos de control que hoy le faltan a los agentes de IA: auditoría de las herramientas a las que se conectan, y una barrera de aprobación humana antes de que una acción irreversible se ejecute sola.
En palabras simples: revisamos las herramientas que usa tu agente de IA para que nadie pueda engañarlo y hacerle pagar, borrar o filtrar datos sin tu permiso.
"Ninguna acción irreversible — pagar, borrar, transferir — debería ejecutarse sola sin que alguien la haya mirado primero."
servidores MCP encontrados expuestos en internet; en la muestra revisada a mano, ninguno pedía autenticación (Knostic, 2025).
de las descargas de herramientas de agentes ya son de acción directa — no solo lectura de datos; hace 16 meses eran el 27% (estudio de 177.000 herramientas MCP, 2026).
robados en un solo ataque a Binance, en octubre de 2026, a partir de un dispositivo comprometido (fuente). Las acciones irreversibles necesitan un puesto de control.
Cada herramienta es un módulo independiente que ataca un problema real y documentado de la gobernanza de agentes de IA — sin tocar las demás. Hoy son 30; la meta es llegar a 100.
Un puntaje de confianza para cada servidor MCP, y una simulación de política de retención antes de dejar que el agente actúe solo.
Cómo se usa: conecta tu agente de IA al servidor con tu llave de acceso y pídele que revise el manifiesto de un servidor MCP nuevo antes de conectarse, y que confirme cada acción riesgosa (pagar, borrar, transferir) antes de ejecutarla sola.
Revisa el texto de una herramienta MCP en busca de instrucciones ocultas para el agente — el mismo patrón detrás del robo de una llave SSH vía una "calculadora" y del secuestro silencioso de un servidor de WhatsApp en 2025-2026.
Cómo se usa: antes de confiar en una herramienta MCP nueva, pídele a tu agente que revise su descripción con Garita Escudo — si tiene una instrucción escondida, te avisa antes de que el agente la siga sin que te enteres.
Antes de confiar en un paquete del que depende un servidor MCP, revisa si ya tiene una falla de seguridad conocida y publicada (CVE), consultando la base de datos abierta OSV.dev. Un paquete puede pasar todas las demás revisiones y aun así tener una falla ya documentada en su propio código.
Cómo se usa: dile a tu agente el nombre y el ecosistema del paquete (por ejemplo, "npm" y "left-pad") — te devuelve cada falla conocida, con su gravedad, fecha y un link para leer más.
Una herramienta puede verse inofensiva cuando la apruebas por primera vez, y cambiar después para esconder una instrucción peligrosa. Compara la versión que aprobaste contra la versión de ahora, y te dice exactamente qué cambió.
Cómo se usa: guarda la versión de un servidor MCP que ya revisaste, y la próxima vez que te conectes, pídele a tu agente que la compare contra la versión actual antes de volver a confiar en ella.
Un agente de código carga y confía de inmediato, sin ningún paso de aprobación, en los archivos de instrucciones que viven en tu propio repositorio — una puerta que Garita Escudo nunca mira. Caso real (Mitiga, 2026): un repositorio con archivos de reglas envenenados llevó a un agente de código a robar llaves de AWS y enumerar entornos de Kubernetes y Terraform en menos de 2 minutos.
Cómo se usa: antes de confiar en un repositorio nuevo (o después de clonarlo), pídele a tu agente que revise sus archivos de instrucciones con esta herramienta — si alguno tiene una instrucción para leer y exponer tus credenciales, te avisa antes de que el agente la siga.
Un asistente de código con IA a veces alucina el nombre de un paquete que no existe — y desde 2026 hay campañas activas que registran esos nombres alucinados de verdad, con malware adentro. Caso real (agosto 2026): una sola campaña publicó 800-1.000+ paquetes maliciosos en npm con nombres diseñados para parecer alucinaciones de IA (Cloud Security Alliance).
Cómo se usa: antes de instalar una dependencia nueva (sobre todo una que te sugirió un agente), dale su nombre a esta herramienta — revisa antigüedad, historial de versiones, similitud con paquetes populares y scripts de instalación automática, y avisa si el paquete ni siquiera existe todavía.
Un agente con memoria persistente puede guardar una instrucción plantada por un tercero — un documento, una página web, un resumen automático — que recién se activa en una sesión sin relación con el ataque original. Documentado en el método MINJA (NeurIPS 2025, +95% de éxito contra agentes en producción) y en un ataque real contra Gemini (investigador Rehberger, 2025).
Cómo se usa: antes de guardar (o después de recuperar) una nota, un resumen o cualquier texto en la memoria de un agente, pasalo por esta herramienta — revisa gatillos condicionales, combinaciones de "recordalo para siempre" + "no lo menciones", suplantación de autoridad del sistema, y exfiltración programada a futuro.
Una herramienta que le hace una petición HTTP a una URL controlada por el agente puede terminar usada para que el servidor pida, en su nombre, un recurso interno: el endpoint de metadata de la nube (roba credenciales temporales de AWS/GCP/Azure), un panel de administración, o cualquier servicio en la red privada. Documentado en un censo real de 2026 sobre 9.695 servidores MCP: SSRF fue el 8.5% de los 4.982 problemas encontrados, dentro de un 60% de servidores con algún problema de seguridad.
Cómo se usa: pegale a esta herramienta el código de la función que hace la petición HTTP — revisa falta de validación de la URL, IPs privadas o de metadata hardcodeadas, TLS desactivado, redirecciones sin revalidar, y ausencia de restricción de esquema.
Una herramienta que lee, escribe o borra un archivo usando una ruta que depende de una entrada externa puede terminar accediendo a cualquier archivo del sistema — credenciales, llaves SSH, configuración — si esa ruta no se valida. Es la categoría más grande del censo 2026 de servidores MCP (17.7% de 9.695 servidores, 880 casos) y el patrón exacto detrás de CVE-2026-40576 (CVSS 9.4), una falla sin autenticar en un servidor MCP de Excel.
Cómo se usa: pegale a esta herramienta el código de la función que lee, escribe o borra un archivo — revisa falta de validación contra secuencias "../", rutas sensibles hardcodeadas (/etc/passwd, llaves SSH, credenciales) y ausencia de un rechazo explícito de rutas absolutas.
Una herramienta que arma un comando de shell a partir de una entrada del agente puede terminar ejecutando cualquier comando que un atacante logre colar — encadenado con ";", "&&" o "|" — aunque el "comando base" ya esté validado contra una lista de permitidos. Es la segunda categoría más grande del censo 2026 de servidores MCP (9.6%, 476 casos) y el patrón exacto detrás de CVE-2026-55581/55582 (mcp-shell, CVSS hasta 8.6), cuyo "modo seguro" solo revisaba el primer token del comando.
Cómo se usa: pegale a esta herramienta el código de la función que ejecuta el comando — revisa falta de validación/escape en llamadas que invocan una shell, el patrón "descargar y ejecutar" (curl/wget a bash), y ausencia de filtrado de metacaracteres de shell.
Una herramienta que arma una consulta SQL a partir de una entrada del agente, en vez de usar parámetros preparados, puede terminar ejecutando cualquier sentencia que un atacante logre colar. Caso real de mayor perfil: Datadog Security Labs (2025) encontró inyección SQL en el servidor MCP de referencia de Postgres de Anthropic (hoy archivado): su modo "solo lectura" se podía saltar enviando un COMMIT seguido de sentencias de escritura. 4.2% del censo 2026 de servidores MCP (211 casos).
Cómo se usa: pegale a esta herramienta el código de la función que ejecuta la consulta — revisa concatenación/interpolación sin parametrizar, y si el código afirma ser "solo lectura" sin ninguna aplicación real de esa restricción.
Un middleware o herramienta MCP que recibe un token de autorización y lo reenvía tal cual hacia otra API — o deja pasar la petición sin validarlo — es el clásico "confused deputy" que la propia especificación de MCP prohíbe explícitamente. Caso real de mayor perfil: CVE-2026-48039 (Meta Ads MCP, CVSS 9.1 crítico), donde un middleware reenviaba peticiones sin validar el header Authorization y filtraba el token de larga duración del operador. El mismo patrón aparece en CVE-2025-6514 (CVSS 9.6) y CVE-2026-27826 (CVSS 8.2).
Cómo se usa: pegale a esta herramienta el código del middleware o la función que maneja el token — revisa reenvío sin validar hacia otra llamada saliente, ausencia de verificación antes de dejar pasar la petición, verificación de JWT sin el claim "audience", y tokens expuestos como parámetro de una URL.
Una API key, un token o una contraseña escrita tal cual en el código o en un archivo de configuración queda expuesta a cualquiera que vea ese archivo. Un estudio real de Hush Security (septiembre 2026) escaneó ~82.000 archivos de configuración MCP públicos: 1 de cada 8 credenciales estaba embebida en texto plano, el 53% con acceso a nivel de toda la organización, y el 80% de las que tenían política de expiración nunca expiraban por defecto. También documentado por Trend Micro (48% de 19.402 servidores MCP con almacenamiento inseguro) y catalogado como MCP01 en el OWASP MCP Top 10.
Cómo se usa: pegale a esta herramienta el código o el archivo de configuración — revisa formatos reconocibles de credenciales reales (OpenAI, AWS, GitHub, Slack, Google, llaves PEM), asignaciones literales a variables/llaves de nombre de credencial, líneas ".env", y valores de reserva hardcodeados. Reconoce placeholders comunes para no marcarlos como riesgo.
Funciones como pickle.load(), torch.load() (usada para cargar modelos de IA) o yaml.load() sin un cargador seguro no solo leen datos — pueden reconstruir objetos arbitrarios, y un objeto puede ejecutar código al reconstruirse. Basta con que esos bytes vengan de afuera. Caso real: CVE-2025-45146 (CVSS 9.8, crítico) en ModelCache, una librería de caché para agentes de IA. CVE-2025-32434 (CVSS 9.3) mostró que ni siquiera la mitigación recomendada por PyTorch bastaba sola en versiones anteriores a la 2.6.0.
Cómo se usa: pegale a esta herramienta el código que carga un dato serializado — revisa pickle/torch.load/yaml.load sin su forma segura, y la firma clásica de un payload malicioso (un método __reduce__ que ejecuta un comando del sistema).
Ninguna herramienta individual tiene que estar rota: basta con juntar una que lea datos privados o contenido externo no confiable con una que pueda enviar/publicar datos hacia afuera, sin un paso de aprobación real entre medio. Caso real: CVE-2026-77255 (mcp-atlassian, CVSS 8.6) dejaba que el parámetro de adjuntos de una herramienta leyera cualquier archivo local y lo subiera solo a un ticket de Jira. Mismo patrón detrás de EchoLeak/CVE-2025-32711 (Microsoft 365 Copilot) y del caso reportado por Invariant Labs en un servidor MCP de GitHub.
Cómo se usa: pegale a esta herramienta el manifiesto de un servidor MCP (mismo formato que audit_mcp_server) — revisa qué herramientas leen datos privados/no confiables, cuáles pueden mandar datos hacia afuera sin un campo de confirmación exigido en su esquema, y marca con más severidad cuando coinciden las tres piezas completas.
Un motor de plantillas no solo "rellena espacios en blanco" — su lenguaje de expresiones puede llamar métodos y recorrer atributos de objetos. Si el TEXTO de la plantilla (no solo los datos que la rellenan) viene de afuera, un atacante puede escribir código dentro de la plantilla y terminar ejecutándolo en el servidor. Motivada por CVE-2026-33154 (CVSS 8.1, Dynaconf), un aviso en Agenta-AI (plataforma de evaluación de LLMs) y un aviso en LangChain mismo — el framework de agentes más usado — por inyección en plantillas de prompt.
Cómo se usa: pegale a esta herramienta el código que compila una plantilla — revisa si la fuente de la plantilla depende de una entrada externa en vez de un texto fijo, si falta un entorno sandboxeado, y si el código confunde "escapar la salida" (que no protege acá) con una defensa real.
Una herramienta que evalúa código en tiempo de ejecución — eval(), Function() de JS, exec() de Python, vm.runInContext() de Node — a partir de un texto que no escribió el desarrollador (respuesta de un modelo, documento recuperado de un pipeline RAG, parámetro de herramienta) le da a quien controle ese texto ejecución arbitraria dentro del propio proceso del agente. Caso real: CVE-2026-26030 (CVSS 9.8, feb 2026) en Microsoft Semantic Kernel — un filtro de vector store interpolaba contenido recuperado de un documento indexado directo en un eval(), dando RCE a partir de datos envenenados de RAG. También detecta una falsa mitigación: vm2 está deprecada desde 2023 tras varias fugas de sandbox críticas.
Cómo se usa: pegale a esta herramienta el código que evalúa código dinámicamente — revisa si el argumento depende de una entrada externa en vez de un texto fijo, el patrón de "eval implícito" en setTimeout/setInterval con un string, y si el código usa vm2 (no confiable) en vez de isolated-vm (aislamiento real) para "sandboxear" la ejecución.
Un servidor MCP que expone su transporte HTTP/SSE sin validar el header Origin deja una puerta abierta a que una página web maliciosa haga que el navegador de la víctima hable directamente con ese servidor — que suele correr en localhost — como si fuera un cliente de confianza (rebinding DNS). Bindear solo a 127.0.0.1 no alcanza: es precisamente lo que el rebinding rompe. No es un bug aislado: el mismo patrón apareció de forma independiente en 2026 en los SDK oficiales de Rust (CVE-2026-42559, CVSS 8.8) y Java, y en mysql-mcp-server (Python).
Cómo se usa: pegale a esta herramienta el código que arma el transporte HTTP/SSE (el constructor del transporte o el registro de la ruta) — revisa si falta una validación reconocible del header Origin, y si el código confunde "solo escucha en localhost" (que no protege acá) con una defensa real contra rebinding.
Un servidor MCP que expone su transporte HTTP/SSE sin verificar autenticación antes de despachar la petición deja sus herramientas abiertas a cualquiera que sepa la URL — sin login, sin llave de API, sin token. Es el patrón más repetido entre los CVEs de MCP de 2026: CVE-2026-44895 (CVSS 9.1, crítico) en un servidor MCP de GitLab — sin autenticación y con CORS totalmente abierto, cualquiera podía invocar sus 86 herramientas (incluido borrar repos) usando el token del operador. Mismo patrón confirmado en Azure MCP Server (Microsoft), deepseek-mcp-server, NetLicensing-MCP, obsidian-web-mcp y mcp-documentation-server.
Cómo se usa: pegale a esta herramienta el código que arma el transporte HTTP/SSE (el constructor del transporte o el registro de la ruta) — revisa si falta una verificación reconocible de autenticación, y si además el CORS está completamente abierto, la combinación exacta que hizo explotable a CVE-2026-44895.
Cuando un cliente MCP se conecta por stdio (en vez de HTTP/SSE), los SDKs oficiales ejecutan el campo command de inmediato al construir la conexión — antes de que exista ninguna validación del protocolo MCP. Falla de diseño confirmada en 2026 en los cuatro SDKs oficiales (Python, TypeScript, Java, Rust). Caso real: CVE-2026-30623 en LiteLLM, donde un endpoint de "probar conexión" pasaba el command que mandaba el propio usuario directo al lanzador. También detecta brechas de "rehidratación" (se valida al guardar pero no al lanzar, el mismo patrón detrás de CVE-2026-30623 antes de su parche) y el bypass vía banderas de ejecución directa (-c/-e/--eval) aunque el binario esté en la lista blanca. También documentado en CVE-2026-22688 (Tencent WeKnora, CVSS 9.9).
Cómo se usa: pegale a esta herramienta el código que arma la conexión stdio de un cliente MCP (StdioClientTransport, StdioServerParameters) — revisa si el command depende de una entrada externa sin lista de lanzadores permitidos, si el lanzamiento viene de una configuración ya guardada sin revalidar, y si una bandera de ejecución directa esquiva una lista blanca que sí existe.
Una expresión regular con cuantificadores anidados (ej. (a+)+, (\s*\w+)*, (a|a)*) aplicada sobre una entrada sin tope de longitud puede colgar el proceso del agente entero con un solo string cuidadosamente armado (ReDoS, CWE-1333). Motivada por CVE-2026-0621 (CVSS 7.5): un regex de validación vulnerable, alcanzable sin autenticación, en un servidor/herramienta MCP ampliamente desplegado. También detecta la variante de un regex compilado dinámicamente (RegExp(x)/re.compile(x)) a partir de una fuente no controlada por el desarrollador.
Cómo se usa: pegale a esta herramienta el código que compila o aplica una expresión regular — revisa cuantificadores anidados aplicados contra una entrada variable sin tope de longitud ni motor con timeout/librería segura, y regex compilados dinámicamente desde una variable.
Un servidor que busca una sesión solo por el ID que trae la petición y confía en ella sin comparar ningún campo de dueño contra quien la presenta ahora, es vulnerable a secuestro de sesión: quien consiga ese ID hereda la sesión de otro cliente por completo. Motivada por CVE-2026-52869 (CVSS alto). También detecta IDs de sesión generados con poca entropía (Math.random(), Date.now() solo, un contador) — adivinables por fuerza bruta.
Cómo se usa: pegale a esta herramienta el código que busca o genera sesiones — revisa búsquedas por ID sin vínculo de dueño verificado después, y generación de IDs de sesión con poca entropía en vez de un generador criptográficamente seguro.
Un verificador de JWT/OAuth puede "tener" una validación de audiencia que un lector apurado asumiría que funciona, pero que falla en modo abierto: un catch() que silencia el rechazo, una rama de "no coincide" que solo loguea, o todo el chequeo condicionado a una bandera de configuración apagable. Motivada por CVE-2026-14541 (confusión de audiencia OAuth en MCP). Distinto del chequeo superficial de Escudo de Tokens: esta herramienta mira el VERIFICADOR PROPIO del servidor con más profundidad.
Cómo se usa: pegale a esta herramienta el código del verificador de tokens de tu servidor — revisa catch() que silencian el rechazo de audiencia, ramas de "no coincide" que no bloquean la petición, chequeos condicionados a una bandera, y ausencia total de validación de "aud".
Una herramienta que lee un cuerpo/archivo completo en memoria sin tope de tamaño, o que reserva un array/buffer o corre un bucle cuyo tamaño viene directamente de un número que controla quien llama, deja la puerta abierta a que un solo mensaje agote toda la memoria o CPU del proceso. Motivada por CVE-2026-14539 (CVSS alto). Distinto de herramientas que miran la lógica de los datos: acá el problema es puramente de recursos, sin importar el contenido.
Cómo se usa: pegale a esta herramienta el código que lee un body/archivo, o que reserva memoria/itera según una cantidad externa — revisa express.json()/bodyParser sin "limit", streams acumulados sin chequeo de tamaño, lecturas de archivo sin fs.statSync() antes, y arrays/bucles sin tope dependiendo de una variable.
Un servidor MCP que crea una sola instancia de McpServer/Server al arrancar y la reutiliza para atender a todos los clientes (en vez de una instancia nueva por sesión) puede mezclar el estado de un cliente con el de otro. Lo mismo pasa con una variable mutable a nivel de módulo que una herramienta registrada lee. Motivada por CVE-2026-25536 (CVSS 7.1) en el propio SDK oficial de TypeScript de MCP — catalogado por OWASP como "Context Injection and Over Sharing".
Cómo se usa: pegale a esta herramienta el código que arma el transporte HTTP/SSE de tu servidor MCP — revisa una instancia de servidor a nivel de módulo reutilizada dentro de un handler de petición, y estado mutable (let/var) a nivel de módulo referenciado dentro de una herramienta registrada.
La función de "sampling" de MCP deja que un servidor le pida al modelo del cliente que genere una completion. Un cliente/host que cumple esa petición sin ningún paso reconocible de revisión humana — lo que la propia especificación de MCP recomienda exigir — deja que un servidor malicioso esconda instrucciones que el modelo sigue sin que nadie note nada raro, incluida la invocación encubierta de herramientas. Documentado en una investigación de Unit42 (Palo Alto Networks, diciembre 2025).
Cómo se usa: pegale a esta herramienta el código del lado cliente/host que maneja peticiones de sampling entrantes — revisa ausencia de aprobación humana, invocación encubierta de herramientas (callTool) desde el mismo handler, y falta de tope de tokens (maxTokens).
Cuando un cliente de MCP valida el resultado de una herramienta contra el outputSchema que el propio servidor le mandó, y usa jsonschema con su resolución de referencias por defecto, un servidor malicioso puede meter un $ref que apunte a una URL externa (SSRF). Peor: si esa llamada de red es síncrona dentro de una función async, un endpoint que nunca responde congela el event loop entero del proceso. Motivada por CVE-2026-116686 (CVSS 6.5) en el SDK oficial de Python de MCP.
Cómo se usa: pegale a esta herramienta el código del lado cliente que valida outputSchema/inputSchema con jsonschema, o que hace llamadas de red dentro de una función async — revisa esquemas no confiables sin Registry/Resolver, y llamadas síncronas sin timeout dentro de async def.
Una herramienta que puede transferir, retirar, pagar o borrar sin que su esquema de entrada EXIJA un campo de confirmación, y/o sin ningún tope máximo en un campo de monto, es "agencia excesiva" (OWASP LLM06). Motivada por el hackeo de Binance de octubre 2026 (6.300 millones de dólares): según la propia empresa, todo empezó con el portátil comprometido de un ingeniero, desde el que se autorizaron retiros masivos. Un tope por operación y una aprobación independiente son exactamente los controles que buscan frenar ese tipo de ataque.
Cómo se usa: pegale a esta herramienta un manifiesto MCP (mismo formato que audit_mcp_server) — revisa herramientas con una acción irreversible/de alto valor sin confirmación exigida en required, y campos de monto sin tope máximo (maximum/exclusiveMaximum).
Las APIs de los modelos devuelven una llamada a herramienta en un campo estructurado y dedicado (tool_calls/function_call/tool_use) — se llena solo cuando el modelo invocó de verdad el mecanismo nativo. Si el código de orquestación en cambio escanea el texto libre de la respuesta buscando un patrón que "parece" una llamada (TOOL_CALL:, un bloque ```json, <tool_call>) y la ejecuta, cualquier contenido con esa forma — incrustado en un documento, una web, o el resultado de otra herramienta que el modelo simplemente repite — puede terminar ejecutado como si fuera real. Documentado en octubre 2026 contra 6 frameworks de agentes: LangGraph, Microsoft Agent Framework, Google ADK 2.0, AutoGen, AWS Strands y CrewAI.
Cómo se usa: pegale a esta herramienta el código de orquestación del lado del agente que interpreta la respuesta del modelo — revisa parseo de texto libre en busca de marcas de llamada a herramienta, si ese parseo dispara una ejecución real, y si el código lee o no el campo estructurado de la API.
Ninguna herramienta de Garita Labs reemplaza el criterio humano — cada una lo activa justo antes de que importe. Así funciona el flujo de la primera, Garita MCP; las demás se conectan al mismo servidor, con la misma llave.
Pega el manifiesto de un servidor MCP y obtén un puntaje basado en señales estándar: autenticación declarada, anotaciones de riesgo (destructiveHint, openWorldHint) y superficie de herramientas expuesta.
Define tu política de retención y comprueba, antes de conectar el agente en serio, si una acción como pagar o borrar pasaría sola o quedaría retenida para revisión humana.
Garita MCP ya se puede usar hoy, sin costo. Los planes de pago y el cobro en USDT / USDC llegan en cuanto la pasarela esté lista.
Sin cuentas, sin tarjetas guardadas — por ahora, solo la herramienta. El cobro en cripto se activa en cuanto conectemos la pasarela.
Límites: las herramientas de Garita Labs detectan riesgos conocidos y documentados. No son una certificación ni garantizan que un sistema sea 100% seguro. Úsalas solo sobre sistemas propios o con autorización escrita de su dueño.
¿Quieres saber cómo responde tu agente a clientes reales? Veredix pone a prueba agentes de IA antes de que hablen con clientes, como tercero independiente.