PTENES
MÓDULO 1.1

🛡️ Seguridad de agentes y tools

Modela amenazas entre el contenido, el agente, las tools, el usuario y el backend, y aplica controles proporcionales al efecto.

6

Temas

3h

Carga

Expert

Nivel

Security

Tipo

0 de 60%
1

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.

Entrada no confiable estado inicial Política + autorización decisión observable Efecto limitado resultado verificable

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

01

límite de confianza

02

principal

03

data flow

04

asset

2

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.

PreguntaContrato sólidoContrato 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

01

STRIDE

02

abuse case

03

attack path

04

impact

3

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.

1

Observa

Captura el estado, la entrada y el contexto antes de la acción.

2

Decide

Valida las precondiciones y elige la transición permitida.

3

Ejecuta

Aplica la regla compartida y respeta la cancelación.

4

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

01

data vs instruction

02

provenance

03

allowlist

04

policy

4

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 });
Entrada

Es pequeña, está descrita y se puede validar.

Ejecución

Reutiliza la regla real de la aplicación.

Salida

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

01

alcance

02

token de corta duración

03

resource bound

04

deny by default

5

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

01

intent binding

02

versión del estado

03

objetivo

04

expiry

6

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. 1. Explica el problema sin usar el nombre de la tecnología.
  2. 2. Diseña el estado anterior y posterior.
  3. 3. Implementa la prueba funcional más pequeña.
  4. 4. Provoca una falla y registra la recuperación.
  5. 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

01

red team

02

replay

03

suplantación

04

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