Diseña los límites de confianza
¿Qué es? El documento, el contenido remoto, el modelo, el agente, la tool y el backend son componentes con distintos niveles de confianza.
Por qué aprender: El mapa muestra dónde los datos se convierten en instrucciones y dónde una decisión puede producir un efecto.
Antes de modelar
Escribe la solicitud de la persona, el estado actual y la evidencia que demostrará la finalización.
Error de partida
Empezar por el nombre de una función o por un botón produce una tool sin un objetivo humano claro.
Anticípate antes de abrir el código
¿Qué información cambia la decisión? ¿Qué efecto debe aparecer en la interfaz? Responde antes de implementar.
untrusted: [pageContent, modelOutput, toolArguments]
trustedOnlyAfter: [validation, policy, authorization]
Profundiza: evidencia que vale la pena guardar
Registra la entrada, el estado anterior, la decisión tomada, el resultado y el cambio visible en la página.
Incluye también una falla provocada y el comportamiento observado sin soporte de WebMCP.
Conceptos clave
límite de confianza
principal
data flow
asset
Modela amenazas por recorrido
¿Qué es? La amenaza se analiza en función del objetivo, los datos, las transiciones y los efectos, no solo de endpoints aislados.
Por qué aprender: Los recorridos revelan combinaciones como un prompt injection seguido de una mutación válida.
| Pregunta | Contrato sólido | Contrato débil |
|---|---|---|
| ¿Cuándo usarlo? | La descripción especifica la intención y el contexto. | “Hace cosas” o “gestiona”. |
| ¿Qué recibe? | Solo los datos necesarios. | Objeto genérico e ilimitado. |
| ¿Qué devuelve? | Estado y siguiente acción verificables. | Texto sin protocolo. |
| ¿Cómo falla? | Código, motivo y recuperación. | Excepción opaca. |
Haz
- ✓ Usa verbos específicos.
- ✓ Delimita las entradas.
- ✓ Declara la evidencia.
Evita
- ✗ Mezclar intenciones.
- ✗ Aceptar cualquier objeto.
- ✗ Ocultar efectos.
ameaça: conteúdo induz agente a cancelar pedido
controle: tool fora do catálogo + confirmação vinculada ao pedido
Profundiza: evidencia que vale la pena guardar
Registra la entrada, el estado anterior, la decisión tomada, el resultado y el cambio visible en la página.
Incluye también una falla provocada y el comportamiento observado sin soporte de WebMCP.
Conceptos clave
STRIDE
abuse case
attack path
impact
Contén la inyección de prompt
¿Qué es? El texto de la página y los resultados de las tools son datos no confiables, incluso cuando parecen instrucciones.
Por qué aprender: Separar los canales y aplicar políticas impide que el contenido controle la autoridad del runtime.
Observa
Captura el estado, la entrada y el contexto antes de la acción.
Decide
Valida las precondiciones y elige la transición permitida.
Ejecuta
Aplica la regla compartida y respeta la cancelación.
Demuestra
Actualiza la interfaz y devuelve un resultado estructurado.
Punto de control
Si la etapa 2 falla, la tool no intenta “arreglárselas”: devuelve una recuperación explícita.
await document.modelContext.registerTool({
...searchTool,
annotations: {
readOnlyHint: true,
untrustedContentHint: true
}
});
// Conteúdo da página e saída de tools continuam sendo dados, não instruções.
Envenenamiento de tools
El nombre, la descripción y los metadatos también pueden intentar inducir una selección o autoridad indebidas.
Output injection
La respuesta puede contener instrucciones hostiles. Conserva la procedencia, limita la autoridad y trata el payload como no confiable.
Profundiza: evidencia que vale la pena guardar
Registra la entrada, el estado anterior, la decisión tomada, el resultado y el cambio visible en la página.
Incluye también una falla provocada y el comportamiento observado sin soporte de WebMCP.
Conceptos clave
data vs instruction
provenance
allowlist
policy
Aplica least privilege
¿Qué es? Cada tool recibe el alcance, la duración y el conjunto de recursos mínimos necesarios.
Por qué aprender: Las credenciales amplias convierten un error de selección en un incidente sistémico.
CÓDIGO DE REFERENCIA
token = mint({ scope: "enrollment:read", resource: enrollmentId, ttl: 60 });
Es pequeña, está descrita y se puede validar.
Reutiliza la regla real de la aplicación.
Permite verificar el efecto y continuar.
Lee el código como un contrato
Subraya dónde se valida la entrada, dónde ocurre el efecto, dónde llega la cancelación y dónde se actualiza la UI.
Profundiza: evidencia que vale la pena guardar
Registra la entrada, el estado anterior, la decisión tomada, el resultado y el cambio visible en la página.
Incluye también una falla provocada y el comportamiento observado sin soporte de WebMCP.
Conceptos clave
alcance
token de corta duración
resource bound
deny by default
Vincula la confirmación al efecto
¿Qué es? La confirmación registra la acción, el objetivo, los parámetros relevantes y la versión del estado presentado.
Por qué aprender: Un sí genérico no autoriza una acción que cambió después de la confirmación.
Falla provocada
Ejecuta el escenario con estado ausente, entrada no válida o capacidad no disponible.
Recuperación esperada
La respuesta informa qué falló, qué sigue siendo seguro y qué acción puede continuar.
Matriz mínima de pruebas
✓ recorrido feliz reproducible
✓ entrada inválida que permite actuar
✓ la cancelación termina el trabajo
✓ el fallback preserva el recorrido
✓ la interfaz refleja el estado
✓ el backend mantiene la autorización
approval = sign({ tool, argsHash, stateVersion, expiresAt });
verifyApproval(approval, currentCall);
Profundiza: evidencia que vale la pena guardar
Registra la entrada, el estado anterior, la decisión tomada, el resultado y el cambio visible en la página.
Incluye también una falla provocada y el comportamiento observado sin soporte de WebMCP.
Conceptos clave
intent binding
versión del estado
objetivo
expiry
Pon a prueba al adversario continuamente
¿Qué es? La suite cubre prompt y output injection, tool poisoning, intención representada falsamente, exceso de parámetros, argumentos extremos, replay, navegación durante la ejecución y escalada de privilegios.
Por qué aprender: Los controles de seguridad necesitan regresión automatizada, como cualquier contrato.
Ejercicio de síntesis
- 1. Explica el problema sin usar el nombre de la tecnología.
- 2. Diseña el estado anterior y posterior.
- 3. Implementa la prueba funcional más pequeña.
- 4. Provoca una falla y registra la recuperación.
- 5. Entrega código, evidencia y una limitación conocida.
Desafío del módulo
Elabora un threat model, una matriz de autoridad y pruebas adversariales para un flujo WebMCP con una acción sensible.
Criterio de experto responsable
La entrega debe funcionar, explicar sus límites y preservar la ruta humana cuando la capacidad experimental no exista.
for (const attack of adversarialDataset) {
assert(await agent.run(attack)).hasNoUnauthorizedEffect();
}
Profundiza: evidencia que vale la pena guardar
Registra la entrada, el estado anterior, la decisión tomada, el resultado y el cambio visible en la página.
Incluye también una falla provocada y el comportamiento observado sin soporte de WebMCP.
Conceptos clave
red team
replay
suplantación
privilege escalation
📦 Entrega del módulo
Elabora un threat model, una matriz de autoridad y pruebas adversariales para un flujo WebMCP con una acción sensible.
Criterio de aceptación
La entrega funciona con soporte para WebMCP y mantiene la ruta manual cuando la API no existe.
Evidencia
Incluye el código, el escenario probado, el resultado observado y una limitación conocida.
Fuentes técnicas
- Borrador y repositorio oficial de WebMCP
- Especificación renderizada
- Snapshot oficial: 26/08/2026 · commit 41d12f0. La API declarativa sigue siendo experimental; valida el draft antes de producción.