Ir al contenido

Mapa de amenazas

Listá el contenido no confiable, los datos sensibles y las acciones hacia afuera. Después revisá cada sesión del agente. Si una sesión junta las tres, tenés dos opciones: cortar una o poner una aprobación humana.

También cubre la inyección de instrucciones: texto escondido en un contenido que le da órdenes al agente. Y cubre los permisos de herramientas, incluidos los servidores MCP. MCP es un protocolo para conectar herramientas a un agente.

Copiá el bloque con el botón de la esquina, o abrí el archivo en GitHub.

templates/es/mapa-de-amenazas.md
# Mapa de amenazas: [nombre del agente]
<!--
Cómo usar esta plantilla:
- Completala antes de dar acceso a herramientas reales.
- Supuesto de partida: un atacante logra que el agente lea un texto escrito por él.
Un filtro o un detector de ataques baja el riesgo, pero no cuenta como defensa.
- Las defensas que cuentan no dependen del modelo: permisos, separación y aprobación humana.
-->
- Fecha: [AAAA-MM-DD]
- Autor: [nombre]
- Revisó (seguridad): [nombre]
## 1. Contenido no confiable
<!--
Es no confiable todo lo que puede escribir alguien de afuera: correos, páginas web,
tickets, PDF, respuestas de APIs y descripciones de herramientas de terceros.
-->
| Entrada | Quién la puede escribir | ¿Confiable? |
|---|---|---|
| [ej.: texto del ticket] | [cualquier cliente] | no |
| [...] | [...] | [...] |
## 2. Datos sensibles
| Dato | Tipo (personal, financiero, secreto, interno) | Herramienta que lo lee |
|---|---|---|
| [ej.: historial de pedidos] | [personal] | [pedidos.leer] |
| [...] | [...] | [...] |
## 3. Acciones hacia afuera o que cambian estado
<!--
Cualquier pedido a una URL cuenta como salida hacia afuera, igual que un mensaje.
Por ejemplo: una búsqueda, un fetch, una imagen en markdown, un link que se previsualiza
o una traza que va a una herramienta de terceros. Un atacante puede meter datos en esa URL.
-->
| Acción | Herramienta | ¿Reversible? | Alcance máximo |
|---|---|---|---|
| [ej.: enviar correo al cliente] | [correo.enviar] | no | [un destinatario] |
| [ej.: mostrar una imagen en markdown con una URL que arma el modelo] | [respuesta del chat] | no | [solo dominios de la lista permitida] |
| [...] | [...] | [...] | [...] |
## 4. La trifecta, sesión por sesión
<!--
La trifecta son tres condiciones juntas: contenido no confiable, datos sensibles y acciones hacia afuera.
Una sesión es todo lo que el agente tiene en contexto a la vez.
Pedir una URL ya es una salida hacia afuera (ver la sección 3): una búsqueda o una imagen cuentan.
Si una sesión junta las tres columnas, cortá una o poné una aprobación humana.
-->
| Sesión o flujo | No confiable | Sensible | Hacia afuera | ¿Las tres? | Qué cortamos y cómo |
|---|---|---|---|---|---|
| [ej.: responder ticket] | sí | sí | sí | sí | [la respuesta pasa por aprobación humana] |
| [...] | [...] | [...] | [...] | [...] | [...] |
Formas de cortar una de las tres:
- Separá en dos pasos: uno lee el contenido no confiable sin herramientas de acción. El otro actúa sin ver ese contenido, con datos ya estructurados.
- Sacá el acceso a datos sensibles en la sesión que lee contenido de afuera.
- Limitá las salidas a un menú cerrado de acciones o a destinos fijos (por ejemplo, una lista de dominios permitidos).
- Pedí aprobación humana atada a la acción exacta. Ver politica-de-acciones.md.
## 5. Inyección de instrucciones
<!--
Inyección de instrucciones: texto en los datos que el modelo obedece como si fuera una orden.
Para cada escenario, suponé que el ataque funciona. Anotá qué lo frena.
-->
| Escenario | Qué logra el atacante si funciona | Control que lo frena (fuera del modelo) |
|---|---|---|
| [ej.: un ticket pide reenviar el historial a otra dirección] | [fuga de datos personales] | [correo.enviar solo al dueño del pedido] |
| [ej.: un PDF pide aprobar un reembolso] | [pérdida de dinero] | [reembolso en nivel confirmar, con tope] |
| [...] | [...] | [...] |
## 6. Permisos de herramientas (incluye MCP)
<!-- MCP (Model Context Protocol) es un protocolo para conectar herramientas al agente. -->
| Herramienta o servidor | Dueño | Versión fijada (hash: huella única del contenido) | Identidad que usa | Alcance de la credencial | Lee / escribe |
|---|---|---|---|---|---|
| [...] | [...] | [...] | [identidad propia del agente, con permisos delegados por el usuario] | [...] | [...] |
- [ ] Cada servidor MCP está en un inventario con dueño y una decisión escrita.
- [ ] El agente usa una identidad propia y permisos delegados por cada usuario. Esos permisos nunca son más amplios que los del usuario.
- [ ] Los servidores MCP remotos (por HTTP) autentican por usuario, con OAuth (un estándar para delegar permisos) y alcances. No hay claves compartidas.
- [ ] Los servidores MCP locales (stdio, en la misma máquina) toman las credenciales del entorno. Esas credenciales son del agente y tienen el mínimo alcance.
- [ ] Cada servidor acepta solo tokens emitidos para él y no reenvía tokens.
- [ ] Revisamos la descripción completa de cada herramienta y la fijamos por hash. Si cambia, la desactivamos hasta revisarla.
- [ ] No hay permisos comodín ("todas las herramientas").
- [ ] Los servidores locales corren aislados (sandbox), sin acceso a la red ni a archivos que no necesitan.
- [ ] No mandamos secretos ni datos personales a servidores de terceros sin contrato.
## 7. Riesgo que queda
| Riesgo | Por qué lo aceptamos | Quién lo acepta | Fecha de revisión |
|---|---|---|---|
| [...] | [...] | [...] | [...] |
## Por qué está esto acá
- Con datos privados, contenido no confiable y comunicación hacia afuera juntos, filtrar las inyecciones no alcanza. La defensa segura es no combinarlos: *New prompt injection papers: Agents Rule of Two and The Attacker Moves Second* (Simon Willison, 2025) y *Agents Rule of Two* (Meta, 2025).
- La salida puede ser un pedido a una URL en un dominio permitido, o una imagen que se carga sola: *Google Antigravity Exfiltrates Data* (Simon Willison, 2025) y *Microsoft Copilot Cowork Exfiltrates Files* (Simon Willison, 2026).
- Ataques adaptativos (que cambian según la defensa) rompieron 12 defensas publicadas, con más de 90 % de éxito contra la mayoría: *The Attacker Moves Second* (Nasr y otros, 2025).
- La descripción de una herramienta puede hacer que el agente use otra herramienta, con más permisos, para hacer el daño: *MCP-ITP* (Li y otros, 2026). Un paquete MCP legítimo puede volverse malicioso en una versión nueva: *MAL-2026-4069* (OSV, 2026).
- En MCP la autorización es opcional, con OAuth solo sobre HTTP, y la especificación no puede hacer cumplir la seguridad: *Model Context Protocol Specification, revision 2026-07-28* (Model Context Protocol, 2026).