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 registra las herramientas disponibles en el servidor MCP como una línea base aprobada. Esta línea base captura los nombres, esquemas y descripciones de las herramientas que el agente fue autorizado originalmente a usar.
En cada respuesta posterior de tools/list , el conjunto actual de herramientas se compara con la línea base aprobada. Cualquier cambio activa un evento de deriva. Dependiendo de la configuración, la respuesta se bloquea o se deja pasar con una alerta.
Qué se monitoriza
ShieldAgent monitoriza los siguientes aspectos de cada definición de herramienta en busca de cambios:
| Campo | Por qué importa |
|---|---|
| name | Identifica la herramienta. Renombrar = nueva herramienta o sustitución engañosa. |
| description | Se 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 las definiciones de herramientas de cada servidor. Cuando reconoces y apruebas un evento de deriva (a través del panel o la API), las herramientas actualizadas se convierten en la nueva línea base aprobada. Las líneas base anteriores se conservan con fines de auditoría.
| Campo de versión | Descripción |
|---|---|
| baselineVersion | Número de versión. 1 = registro inicial, se incrementa con cada cambio aprobado. |
| capturedAt | Cuándo se observó por primera vez esta versión de definición de herramienta. |
| approvedAt | Cuándo un miembro del equipo aprobó el cambio. Vacío si aún está pendiente de revisión. |
| approvedBy | Quién aprobó el cambio. |
Configuración
| Configuración | Por defecto | Descripción |
|---|---|---|
| Tool drift detection | true | Activa las verificaciones de integridad de definición de herramientas. |
| Action on drift | alert | Acción ante deriva: alert (registro + evento de auditoría) o block (rechazar la respuesta). |
| Include annotations | true | Incluye las anotaciones de herramientas MCP en la línea base. 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.
{
"id": "aev_...",
"agentId": "agt_...",
"tenantId": "ten_...",
"eventType": "tool_drift",
"action": "alert",
"riskScore": 75,
"details": {
"serverId": "srv_...",
"serverName": "my-mcp-server",
"previousHash": "a3f8...",
"currentHash": "c912...",
"baselineVersion": 2,
"changedTools": ["read_file"],
"addedTools": [],
"removedTools": []
},
"timestamp": "2026-04-25T10:00:00.000Z"
}SDK y Panel
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:
{
"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."
}
}