Seguridad del Loop Autónomo|INEMA.CLUB-PRO

Clase 1 · 15 min

La tríada letal: datos privados, contenido no confiable, salida hacia afuera

Un agente que lee datos privados, lee texto escrito por cualquier persona y puede enviar algo hacia afuera puede ser controlado por quien escribió el texto. El nombre es de Simon Willison. En esta clase mapeas las sesiones de tu loop en las tres patas y cortas una donde las tres se juntan.

Comenzar la clase
Tres cables gruesos que llegan a un único conector central sobre una mesa oscura.

En esta clase vas a

  1. 1Las tres patas: datos privados, contenido de terceros, canal de salida
  2. 2Por qué el riesgo está en el conjunto de la sesión, no en una herramienta
  3. 3El mapa del loop en JSON y el triade.py que lo revisa
  4. 4Cortar la pata más barata: casi siempre la salida

Objetivo: mapear las sesiones de tu loop en las tres patas de la tríada letal y cortar una pata donde las tres se juntan.

01Tres patas en la misma sesión

Haz clic en cada pata.

Haz clic en cada bloque del diagrama para ver qué hace.

El riesgo está en la sesión que ve todo junto: un fetch inofensivo se vuelve pata de salida al lado de la base de datos de clientes.

02Cómo pensar la tríada en tu loop

Tres reglas que valen para Claude Code y Codex.

1. Sesión, no herramienta

Marca las patas por sesión del loop: todo lo que ese contexto ve al mismo tiempo. Una herramienta puede marcar las tres por sí sola (un MCP de correo lee tu bandeja, lee lo que un desconocido envió y manda a cualquier dirección).

El curso 3 muestra cómo dividir el trabajo en sesiones; aquí decides qué puede juntar cada una.

03El mapa del loop y el triade.py

Una sesión por objeto; cada herramienta marca lo que hace. El script solo lee el JSON: quien garantiza que el mapa es verdadero eres tú.

Archivo · kit/mapas/triagem.json (ficticio)
{
  "loop": "triagem de issues (exemplo do curso, fictício)",
  "sessoes": [
    {
      "nome": "triagem",
      "ferramentas": [
        { "nome": "ler issues abertas do GitHub", "terceiros": true },
        { "nome": "ler o repositório e o .env", "privado": true },
        { "nome": "comentar na issue", "saida": true, "muda_estado": true },
        { "nome": "abrir URL (fetch)", "terceiros": true, "saida": true }
      ]
    }
  ]
}
Terminal · antes y después del corte
K=~/projetos/loop-r-eng-seguranca-v72/kit
for m in triagem triagem-cortada; do
  echo "## $m"; python3 $K/triade.py $K/mapas/$m.json; echo "saída: $?"
done
Ejemplo del repositorio
## triagem
triagem      privado:sim  terceiros:sim  saída:sim  → FECHA
TRÍADE: violada em triagem
saída: 1
## triagem-cortada
leitor       privado:não  terceiros:sim  saída:não  → OK
respondente  privado:sim  terceiros:não  saída:sim  → OK
TRÍADE: nenhuma sessão autônoma com as três (2 sessões)
saída: 0

En el mapa cortado, el lector de las issues no tiene datos ni salida: guarda solo campos.json (etiqueta, prioridad, archivo citado). El respondente lee esos campos, el repositorio y comenta solo en la issue de origen.

04En tu máquina: el inventario de MCP

El inventario.py del proyecto Tríade Letal lee los servidores MCP de Claude Code y de Codex y arma la matriz para que la completes. Solo lee archivos de configuración; no accede a la red ni imprime secretos.

Terminal · demo y tu matriz
[ -d ~/projetos/triade-letal ] || git clone -q https://github.com/inematds/triade-letal ~/projetos/triade-letal
cd ~/projetos/triade-letal
python3 inventario.py --demo                    # ejemplo ficticio, para ver el formato
python3 inventario.py --md /tmp/matriz.md > /dev/null && grep -c "|" /tmp/matriz.md
Ejemplo del repositorio
onde                               servidor                privado  terceiros   saída  transporte
-------------------------------------------------------------------------------------------------
Claude Code (global)               gmail                    talvez     talvez  talvez  npx gmail-mcp
Claude Code (global)               fetch                         -     talvez  talvez  uvx mcp-server-fetch
Claude Code (global)               postgres-clientes        talvez          -       -  npx @modelcontextprotocol/server-postgre
Codex CLI                          playwright                    -     talvez  talvez  npx @playwright/mcp

Palpite somado do conjunto (o agente que enxerga TODOS esses servidores ao mesmo tempo):
  [x] dados privados
  [x] conteúdo de terceiros
  [x] canal de saída

  As três pernas podem estar juntas. Confirme linha a linha e corte uma perna (ver CHECKLIST.md).
8

El "talvez" es una suposición por el nombre del servidor. El número al final es el conteo de líneas de la tabla de tu matriz: cambia de una máquina a otra.

05Práctica

Ensayo del mapa, el inventario de tu máquina y el mapa de tu loop.

E1 · Ver la tríada cerrarse y abrirse

5 min

Clona el repositorio del curso en ~/projetos y ejecuta el bloque "antes y depois do corte".

Listo cuando: triagem termina en TRÍADE: violada em triagem y saída: 1; triagem-cortada en TRÍADE: nenhuma sessão autônoma com as três (2 sessões) y saída: 0.

E2 · Inventario de tu máquina

10 min

Ejecuta el bloque del inventario. Abre /tmp/matriz.md y marca, línea por línea, las tres columnas de lo que cada servidor hace de verdad. Agrega a mano lo que no es MCP: shell, navegador, envío de mensajes de tu bot.

Listo cuando: python3 inventario.py --demo termina en As três pernas podem estar juntas y grep -c "|" /tmp/matriz.md imprime un número mayor que cero.

E3 · El mapa de tu loop

15 min

Copia kit/mapas/triagem.json a ~/meu-mapa.json y describe tu loop: una sesión por contexto, cada herramienta con las patas que marca. Si alguna sesión cierra, corta una pata en el mapa y en el loop.

Listo cuando: K=~/projetos/loop-r-eng-seguranca-v72/kit; python3 $K/triade.py ~/meu-mapa.json; echo $? → la última línea empieza con TRÍADE: y el código es 0 (o 1 con la sesión anotada para corregir en la clase 2).

06Prueba de la clase

Pregunta 1 de 4

¿Cuáles son las tres patas de la tríada letal?competencia

07En tres frases

Tres patas, una sesiónDato privado + contenido de terceros + salida = cualquier texto leído puede comandar la fuga.
Quítala por sesiónEl mapa marca cada herramienta; el riesgo es lo que la sesión ve en conjunto.
Corta, no pidasDestino fijo, sin red, lector sin datos: estructura, no prompt.

Para ir más allá

Siguiente clase