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.
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:
| 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 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ón | Descripción |
|---|---|
| baselineHash | cryptographic hash de la instantánea del manifiesto aprobado (hex). |
| baselineVersion | Entero con incremento monotónico. 1 = registro inicial. |
| capturedAt | Marca de tiempo ISO 8601 de cuando se observó esta versión por primera vez. |
| approvedAt | Marca de tiempo del reconocimiento en el panel/API. Null = deriva no aprobada. |
| approvedBy | ID del agente o usuario que 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). |
| Hash algorithm | sha256 | Algoritmo de hash: sha256 o sha512. |
| Include annotations | true | Incluye 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.
{
"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
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."
}
}