Qué detecta y qué no

Ver en Markdown

Qué texto revisa MCP Shield, sus detectores de inyección de instrucciones y patrones DLP, y qué pasa sin revisar.

En esta página

MCP Shield revisa el texto con patrones deterministas. Esta página dice exactamente qué texto, con qué detectores y qué pasa sin que nadie lo mire.

Qué texto se revisa

DirecciónAjusteTexto
Del cliente al servidorinspect_requestsparams.arguments de tools/call, los params de resources/read, params.arguments de prompts/get
Del servidor al clienteinspect_responsesTodas las cadenas de result y de error de las respuestas del servidor a peticiones con id (resultados de herramientas, contenido de recursos, prompts y las descripciones de herramientas de tools/list), y los params de las peticiones que el servidor manda al cliente (sampling/createMessage, elicitation/create)

Las respuestas JSON se leen enteras, hasta 2 MiB. Los flujos de eventos del servidor (text/event-stream, de un POST o del flujo GET) se revisan evento a evento según llegan; cada evento se reenvía en cuanto está revisado, así que el streaming y el vaciado del búfer siguen funcionando.

Inyección de instrucciones y exfiltración

Los mismos 27 detectores que protegen los endpoints de IA, en inglés y en español. Cada uno solo se ejecuta si aparece alguna de sus palabras clave en el texto, así que el tráfico normal se salta casi todos. Sus ids empiezan por:

  • pi.: anulación de instrucciones, extracción del prompt de sistema, personajes y modos de jailbreak, avisos de sistema o de cumplimiento falsos, órdenes de ocultar algo al usuario, tokens de plantilla de chat, llamadas, resultados de herramientas y turnos de conversación falsificados, envenenamiento de memoria, órdenes de llamar a una herramienta, saltarse la aprobación, e instrucciones dentro de comentarios HTML, en base64 o codificadas por porcentaje o en hexadecimal.
  • agent.: órdenes destructivas como rm -rf / o DROP TABLE.
  • exfil.: scripts remotos pasados a una shell, recolección de secretos, envío de datos del equipo, exfiltración por una imagen o un enlace renderizados.
  • hidden.: texto escondido a quien lee: caracteres de ancho cero, caracteres de etiqueta Unicode, texto oculto con CSS.

Fugas de credenciales (DLP)

IdQué encuentra
dlp.aws_access_keyIds de clave de acceso de AWS (AKIA…)
dlp.github_tokenTokens personales y de servidor de GitHub (ghp_…, ghs_…)
dlp.stripe_secret_key, dlp.stripe_test_keyClaves secretas de Stripe (sk_live_…, sk_test_…)
dlp.private_keyCabeceras de clave privada PEM
dlp.database_urlURL de conexión de PostgreSQL, MySQL y MongoDB
dlp.slack_tokenTokens de Slack (xox…)
dlp.sendgrid_key, dlp.mailgun_keyClaves de SendGrid y Mailgun
dlp.openai_key, dlp.anthropic_keyClaves de proyecto, de cuenta de servicio y de administración de OpenAI, claves de Anthropic (sk-ant-…)
dlp.openwaf_token, dlp.openwaf_egress_tokenTokens de API de OpenWAF (owf_…) y marcadores de OpenWAF Egress (OWE_TOKEN_…)
dlp.generic_api_secretUn valor entre comillas de 20 caracteres o más asignado a api_secret o secret_key

Un hallazgo DLP se guarda redactado: solo sus cuatro primeros caracteres seguidos de …. El secreto nunca llega a los eventos, al panel ni a la API.

Comprobaciones de política

Además de la revisión, cada mensaje JSON-RPC del cliente se compara con la política del endpoint. Sus ids de detección son mcp.method_not_allowed, mcp.tool_denied, mcp.tool_not_allowed, mcp.rate_limited, mcp.parse_error, mcp.invalid_request y mcp.too_large.

Qué no se detecta

  • Lo que ningún patrón describe. No hay clasificador semántico ni modelo de lenguaje. Las instrucciones parafraseadas, otros idiomas y las codificaciones que los detectores no cubren pasan. Un resultado limpio no demuestra que un mensaje sea seguro.
  • Las notificaciones. Su contenido no se revisa, en ninguna dirección. Las del cliente sí pasan por los métodos permitidos.
  • Las peticiones del servidor al cliente (sampling/createMessage, elicitation/create) se revisan pero solo se anotan; nunca se sustituyen.
  • Las respuestas del cliente a esas peticiones no se revisan.
  • Respuestas grandes o codificadas. Una respuesta JSON de más de 2 MiB, un evento SSE de más de 2 MiB y una respuesta que sigue llegando comprimida (Content-Encoding) pasan sin cambios. El informe las cuenta como sin revisar.
  • Peticiones grandes en modo registro. Un cuerpo de más de max_request_kb pasa sin revisar en modo registro; en modo aplicar se rechaza.
  • Los parámetros de otros métodos. completion/complete, logging/setLevel, los métodos de listado y el resto solo se comparan con los métodos permitidos.
  • Recursos y prompts por nombre. Las listas de herramientas solo valen para tools/call; no hay lista de URI de recursos ni de nombres de prompt.
  • Cabeceras y query string.
  • Autenticación. MCP Shield nunca valida el token; lo hace tu servidor.

Falsos positivos

Una herramienta que devuelve material de seguridad, como registros de ataques bloqueados, una página sobre inyección de instrucciones o un .env de ejemplo, disparará detecciones con contenido legítimo. Por eso la revisión empieza en log: lee primero los ids y los fragmentos de las detecciones en los eventos, y deja block para los endpoints en los que un resultado sustituido es aceptable.

Última actualización:

↑↓ para moverte↵ para abriresc para cerrar