From fb6ab92fd0e5a199b1410776ad87576611d0de7b Mon Sep 17 00:00:00 2001 From: Simone Cavalli Date: Tue, 28 Jul 2026 11:06:48 +0200 Subject: [PATCH] docs(security): correzione severita finding 1 + chiusura punti Coolify CORREZIONE: la password Postgres trovata in git NON era attiva. La verifica iniziale si limitava a constatare che la stringa comparisse in .env.local e ne deduceva che fosse quella viva. Il confronto del verifier SCRAM-SHA-256 di pg_authid contro i due candidati mostra che quella committata non combacia: era gia stata ruotata. La voce DATABASE_URL porta 5432 di .env.local e' stale. Severita' reale: BASSA, non CRITICA. Nessuna rotazione necessaria. Chiusi via API Coolify: INTERNAL_SECRET creata (le route /api/internal/* rispondono ora 403 invece di 404, oracolo di enumerazione token chiuso) e ADMIN_PASSWORD portata da 15 a 32 caratteri. Redeploy verificato. Co-Authored-By: Claude Opus 5 --- .planning/SECURITY-AUDIT-INFRA.md | 18 +++++++++++++++++- .planning/SECURITY-REMEDIATION-PLAN.md | 6 +++--- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/.planning/SECURITY-AUDIT-INFRA.md b/.planning/SECURITY-AUDIT-INFRA.md index 9fc834d..6cf96d0 100644 --- a/.planning/SECURITY-AUDIT-INFRA.md +++ b/.planning/SECURITY-AUDIT-INFRA.md @@ -9,7 +9,23 @@ configurazione di deploy e superficie di rete in produzione. --- -## 1. CRITICO — Password Postgres di produzione committata in chiaro +## 1. ~~CRITICO~~ → BASSO — Password Postgres **storica** committata in chiaro + +> **CORREZIONE (2026-07-28).** La prima stesura di questa sezione dichiarava la credenziale +> "ancora attiva". **Era sbagliato.** La verifica iniziale si limitava a constatare che la +> stringa comparisse anche in `.env.local`, e ne deduceva che fosse quella viva. +> +> Verifica corretta, fatta poi: confronto del **verifier SCRAM-SHA-256** di `pg_authid` contro +> i due candidati. La password committata **non** combacia; quella in uso è la password da 48 +> caratteri configurata su Coolify. Era già stata ruotata in passato. +> +> La voce `DATABASE_URL` porta 5432 di `.env.local` è **stale** — residuo storico, non la +> connessione di produzione (che passa dall'hostname interno del container). +> +> **Severità reale: BASSA.** Credenziale storica in un repo privato, già morta. Igiene, non +> incidente. Nessuna rotazione urgente. Resta utile ripulire `.env.local` dalla voce stale. +> +> Il resto della sezione è conservato come traccia di ciò che è stato trovato. **Dove:** - `.planning/phases/07-unified-service-catalog/07-01-SUMMARY.md:188,195,202` diff --git a/.planning/SECURITY-REMEDIATION-PLAN.md b/.planning/SECURITY-REMEDIATION-PLAN.md index 912cc4a..541df3e 100644 --- a/.planning/SECURITY-REMEDIATION-PLAN.md +++ b/.planning/SECURITY-REMEDIATION-PLAN.md @@ -10,10 +10,10 @@ Restano aperti solo i punti che richiedono accesso a Coolify o una tua decisione | # | Intervento | Stato | |---|---|---| -| 0.1 | Ruotare password Postgres prod | ⛔ **richiede te** (no accesso Coolify) | +| 0.1 | Ruotare password Postgres prod | ❎ **non serve** — la password leakata risulta già morta (vedi correzione in INFRA §1) | | 0.1b | Espurgare la password dai due `07-01-SUMMARY.md` | ✅ fatto | -| 0.2 | `INTERNAL_SECRET` in Coolify | ⛔ **richiede te** | -| 0.3 | Allungare `ADMIN_PASSWORD` | ⛔ **richiede te** | +| 0.2 | `INTERNAL_SECRET` in Coolify | ✅ fatto 2026-07-28 — le route interne ora danno 403 | +| 0.3 | Allungare `ADMIN_PASSWORD` | ✅ fatto 2026-07-28 — 15 → 32 caratteri | | 1.1 | Next → 16.2.12, next-auth → 4.24.15 | ✅ fatto | | 1.2 | Secondo gate di autenticazione admin | ✅ fatto | | 1.3 | Eliminare `src/lib/quote-actions.ts` | ✅ fatto |