feat(episode): DEPURA_resultado-el-crtico-1-cerrado_S20260702.R46_XX.ops.2.hot_inf.in.cc.es.000.MGQ_J.PMCFK_E.SGNFD
Skill: NONE | Type: troubleshooting Summary: EPISODIO 46 — Docker: 🎯 Resultado — el crítico #1 CERRADO
This commit is contained in:
parent
9de1f72609
commit
9d6163a380
1 changed files with 41 additions and 0 deletions
|
|
@ -0,0 +1,41 @@
|
|||
---
|
||||
episode_id: "93ebf95a-4c06-48b3-bb58-d4022b942a22"
|
||||
puente_flat: "DEPURA_resultado-el-crtico-1-cerrado_S20260702.R46_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 46 — Docker: 🎯 Resultado — el crítico #1 CERRADO"
|
||||
source_type: "claude_code"
|
||||
trust_boundary: "internal"
|
||||
created_at: "2026-07-12T16:17:06.005016+00:00"
|
||||
relectura_tagged: false
|
||||
forgejo_commit_sha: "pending"
|
||||
---
|
||||
|
||||
Reporte actualizado. Cierro con el balance de A y B.
|
||||
|
||||
## 🎯 Resultado — el crítico #1 CERRADO
|
||||
|
||||
**B · socket-proxy `EXEC=0` — HECHO y verificado en vivo** ✓
|
||||
- Cambié `EXEC: 1 → 0` en `/opt/docker/socket-proxy/docker-compose.yml` (backup `.bak.pre_exec0_S20260702`) + `--force-recreate`.
|
||||
- **Prueba empírica:** `POST /exec/<id>/start` → **403** (el paso que ejecutaba el comando inyectado, ahora denegado); GET `/version` y `/containers/json` → **200** (ember-mcp conserva su acceso legítimo); ember-mcp **healthy**.
|
||||
- Dejé POST/CONTAINERS en 1 (mínima disrupción; `POST:0` es hardening extra opcional que tú evalúas).
|
||||
- **Rollback listo:** `sudo cp .../docker-compose.yml.bak.pre_exec0_S20260702 .../docker-compose.yml && docker compose up -d --force-recreate docker-socket-proxy`.
|
||||
|
||||
Esto elimina el **RCE lateral a los 61 containers** — el riesgo vivo #1 de toda la auditoría.
|
||||
|
||||
## Lo que quedó pendiente y por qué
|
||||
|
||||
**A · los 3 archivos hooks/lib con la Qdrant key + fix QW-1** → mecánicamente **bloqueado por tu propio deny-block**. En `settings.local.json:220-221` están:
|
||||
|
||||
Es una regla de permisos del **harness** (no un hook) — yo también tengo denegado editar `settings.local.json`, así que **solo tú puedes quitar esas 2 líneas** (por shell/editor). *Podría* hacer un `sed` por Bash para esquivarlas, pero **no lo hago**: saltarme por un canal lateral el candado anti-prompt-injection es exactamente el tipo de bypass que documenté como crítico este turno. Cuando quites esas 2 líneas, cierro los 3 archivos + QW-1 en un momento (y las re-agregas después).
|
||||
|
||||
**B · rotación de secretos** → **no puedo** (restricción absoluta CA-3 + requiere las UIs de cada servicio para generar los valores). Es tuya, con el runbook [RUNBOOK_ROTACION_SECRETOS_JOHN_S20260623.md](docs/RUNBOOK_ROTACION_SECRETOS_JOHN_S20260623.md).
|
||||
|
||||
**`git rm --cached batch_output`** → bloqueado por la guarda LEY ZERO (dir crítico). Bajo valor (las keys Langfuse ya están en historial → se cierran con rotación + purga J5).
|
||||
|
||||
Nada commiteado ni pusheado. El cambio del socket-proxy es server-side con backup; el working tree local tiene 6 scrubs + scanner + FRASE.TXT staged + 3 docs, listo para tu revisión.
|
||||
Loading…
Reference in a new issue