Skip to main content
Sign in →

Detección de Deriva de Herramientas

Detecta cuando las definiciones de herramientas MCP cambian inesperadamente después del registro — abordando OWASP MCP Top 10 #6 (Integridad de Definición de Herramientas). ShieldAgent hashea el manifiesto completo de herramientas en el momento de la conexión y lo compara en cada solicitud posterior, bloqueando o alertando cuando se detecta deriva.

La amenaza

OWASP MCP Top 10 #6 (Integridad de Definición de Herramientas) describe ataques donde un servidor MCP malicioso o comprometido altera silenciosamente sus definiciones de herramientas después de que un agente ya las ha aprobado y almacenado en caché. Dado que la mayoría de los clientes MCP confían en el manifiesto de herramientas recibido al inicio, el agente continúa llamando a la herramienta — ahora ejecutando una operación diferente controlada por el atacante.

Sustitución de esquema

Un atacante modifica el esquema JSON de una herramienta para que el agente envíe datos a un endpoint diferente o con parámetros distintos a los previstos.

Envenenamiento de descripción

La descripción de la herramienta se cambia después del registro para incluir payloads de inyección de prompts que se devuelven al agente en la siguiente llamada de descubrimiento de capacidades.

Deriva en la cadena de suministro

Un servidor MCP legítimo es actualizado por su proveedor y su manifiesto de herramientas cambia sin conocimiento del equipo de seguridad, rompiendo las suposiciones de seguridad.

Cómo lo detecta ShieldAgent

Cuando un agente se conecta por primera vez a través del proxy, ShieldAgent captura una instantánea del manifiesto de herramientas del servidor MCP — la lista completa de herramientas con sus nombres, esquemas y descripciones. Esta instantánea se hashea y se almacena como la línea base registrada.

En cada respuesta posterior de tools/list que el proxy observa, el manifiesto actual se vuelve a hashear y se compara con la línea base. Una discrepancia activa un evento de deriva. Dependiendo de la configuración, la respuesta se bloquea o se deja pasar con una alerta.

tools/list response
Re-hashear manifiesto
Comparar con línea base
Coincidencia → pasar|Discrepancia → evento de deriva

Qué se hashea

El hash cubre el contenido semántico del manifiesto, no la codificación de red, por lo que las diferencias en el orden de las claves JSON no producen falsos positivos. Los siguientes campos se incluyen por herramienta:

CampoPor qué importa
nameIdentifica la herramienta. Renombrar = nueva herramienta o sustitución engañosa.
descriptionSe entrega al agente como indicación de capacidad — objetivo de inyección.
inputSchema (JSON Schema completo)Determina qué datos envía el agente a la herramienta.
annotations (si están presentes)Indicadores de capacidad como readOnly, destructive — un cambio aquí es relevante para la política.

Seguimiento de versiones

ShieldAgent mantiene un historial de versiones para el manifiesto de herramientas de cada servidor registrado. Cada vez que se reconoce y aprueba un evento de deriva (a través del panel o la API), el nuevo manifiesto se almacena como la línea base actual y la línea base anterior se conserva en el historial con fines de auditoría.

Campo de versiónDescripción
baselineHashcryptographic hash de la instantánea del manifiesto aprobado (hex).
baselineVersionEntero con incremento monotónico. 1 = registro inicial.
capturedAtMarca de tiempo ISO 8601 de cuando se observó esta versión por primera vez.
approvedAtMarca de tiempo del reconocimiento en el panel/API. Null = deriva no aprobada.
approvedByID del agente o usuario que aprobó el cambio.

Configuración

ConfiguraciónPor defectoDescripción
Tool drift detectiontrueActiva las verificaciones de integridad de definición de herramientas.
Action on driftalertAcción ante deriva: alert (registro + evento de auditoría) o block (rechazar la respuesta).
Hash algorithmsha256Algoritmo de hash: sha256 o sha512.
Include annotationstrueIncluye las anotaciones de herramientas MCP en el hash. Establece false para ignorar cambios solo en anotaciones.

Eventos de auditoría y API

Cada detección de deriva se persiste como un evento de auditoría tool_drift que incluye el hash anterior y actual, la diferencia de nombres de herramientas cambiadas y la acción tomada.

json
{
  "id": "aev_...",
  "agentId": "agt_...",
  "tenantId": "ten_...",
  "eventType": "tool_drift",
  "action": "alert",
  "riskScore": 75,
  "details": {
    "serverId": "srv_...",
    "serverName": "filesystem-mcp",
    "previousHash": "a3f8...",
    "currentHash": "c912...",
    "baselineVersion": 2,
    "changedTools": ["read_file"],
    "addedTools": [],
    "removedTools": []
  },
  "timestamp": "2026-04-25T10:00:00.000Z"
}

Endpoints de API

GET/tenants/:tenantId/audit-events?eventType=tool_driftLista eventos de deriva de herramientas. Admite filtros ?agentId=, ?serverId=, ?from=, ?to=.
GET/tenants/:tenantId/servers/:serverId/tool-manifestObtiene la línea base del manifiesto de herramientas aprobado actual para un servidor.
POST/tenants/:tenantId/servers/:serverId/tool-manifest/approveAprueba el manifiesto con deriva actual como la nueva línea base.

Integración con políticas

Usa security.toolDrift.detected como condición de política para bloquear automáticamente solicitudes cuando hay un evento de deriva activo en cualquier herramienta que el agente está intentando usar:

json
{
  "name": "Block on active tool drift",
  "priority": 5,
  "conditions": [
    { "field": "security.toolDrift.detected", "op": "eq", "value": true }
  ],
  "action": "block",
  "response": {
    "code": 403,
    "message": "Tool definition has changed since last approval. Request blocked pending review."
  }
}
Detección de Deriva de Herramientas