feat(episode): DEPURA_para-john-r40_S20260702.R67_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD

Skill: NONE | Type: troubleshooting
Summary: EPISODIO 67 — Prompt Injection: 📍 PARA JOHN — R40
This commit is contained in:
Ember 2026-07-12 16:18:14 +00:00
parent 84e6f376d4
commit aa0e43c2de

View file

@ -0,0 +1,37 @@
---
episode_id: "120d080e-5e44-4158-ae38-ded2dc9136fe"
puente_flat: "DEPURA_para-john-r40_S20260702.R67_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD"
session_code: "S20260702.MADUREZ_ECOSISTEMA_CONCILIO"
acto_dialogico: "informar"
actor_flujo: "multi_actor"
criticidad_aegis: "low"
skill_dominante: "NONE"
fase_proyecto: "operations"
tipo_semantico: "troubleshooting"
summary_one_line: "EPISODIO 67 — Prompt Injection: 📍 PARA JOHN — R40"
source_type: "claude_code"
trust_boundary: "internal"
created_at: "2026-07-12T16:16:36.853658+00:00"
relectura_tagged: false
forgejo_commit_sha: "pending"
---
Hecho. La tarea que pediste está cumplida —y el hallazgo resultó ser bastante más grande de lo reportado.
**Hice** — Verifiqué tu reporte con mis propios ojos y **extendí M0-01** en el plan ([línea 132, bloque "EXTENSIÓN S20260703"](docs/PLAN_IMPLEMENTACION_ENDURECIMIENTO_S20260702.md)). Confirmé que M0-01 **no cubría** `.mcp.json` (su objetivo decía "archivos tracked", y `.mcp.json` es gitignored). Corregí el objetivo + añadí el inventario completo.
**El hallazgo es mayor que 3 secretos — son ~9.** `.mcp.json` (raíz, gitignored, **NOT tracked**) contiene:
- **2 que ya conocíamos** (duplican el plan): `KARAKEEP_API_KEY` y el par Langfuse pk/sk. → Al rotarlos en M0-01, hay que actualizar también `.mcp.json` o el MCP queda con la key muerta.
- **7 NUEVOS que ningún inventario capturó** (ni el CONSEJO, ni M0-01, ni la auditoría de seguridad de hoy):
- 🔴 **Hostinger** `API_TOKEN` — control de VPS/DNS/dominios (blast radius de infraestructura).
- 🔴 **Warden/Bitwarden** `BW_CLIENTSECRET` + `BW_PASSWORD` — las credenciales del **gestor de secretos mismo**; si caen, cae todo.
- 🟠 **Google OAuth** `GOOGLE_CLIENT_SECRET`, **ember-memory** `Bearer` (servidor MEMORIA), **InsForge** `API_KEY`.
**El matiz que cambia la urgencia** (verificado): `.mcp.json` **no está en git ni en los 3 remotos** — el riesgo es **local (disco)**, no de exfil remota. Por eso **no** necesita la purga de historia git que sí requiere `settings.json`; solo reemplazo local del valor. Pero siguen siendo secretos vivos en claro, y varios de altísimo valor.
**Falta / la decisión que te elevo** (PRÓLOGO) — Los 7 secretos nuevos son una **ampliación de alcance real**. No los inventó nadie porque `.mcp.json` estaba fuera del radar (gitignored). Todos requieren tu GO para rotar (CASBIN CA-3 `secrets:rotate`). La pregunta esencial que solo tú puedes responder: **¿quieres que fabrique un ítem M0-01b dedicado a rotar los 7 secretos nuevos de `.mcp.json`, y con qué prioridad respecto a la rotación de `settings.json`?** Mi inclinación: Hostinger y Bitwarden primero (mayor blast radius), en el mismo Sprint 1 que M0-01.
**Para avanzar, elige:**
- 🟢 **A (recomendado)** — Fabrico **M0-01b** (runbook de rotación de los 7 secretos nuevos de `.mcp.json`), priorizando Hostinger + Bitwarden, para el mismo Sprint 1. Luego tú das el GO de ejecución.
- 🟡 **B** — Dejo el hallazgo documentado en M0-01 (ya está) y lo tratamos cuando ejecutemos la Ola 0 completa, sin ítem aparte.
- ⚪ **C** — Solo querías cubrir el gap de `.mcp.json` en M0-01 (hecho); paramos aquí.