From 54a9c0987f67aab1ee22119e3a4d166acc102f23 Mon Sep 17 00:00:00 2001 From: DevEnv nis2-agile Date: Sun, 31 May 2026 16:13:21 +0200 Subject: [PATCH] [FIX] Precisione normativa: relazione finale +1 mese DALLA NOTIFICA + guida allineata Da test multi-agente (aderenza normativa): - IncidentController: final_report_due calcolato come detected+72h+1mese (= 1 mese dalla notifica, Art.23.4 lett.d), non detected+30gg. Allineato create() e update(). - guida.html: "40+ domande" -> "26 domande GV.SC" (numero reale del template NIS2 base); etichetta "Report Finale (30gg)" -> "(1 mese dalla notifica)". Esito review 10 agenti: app solida (0 SQLi/IDOR/XSS cross-tenant, JWT/refresh ok, DB integro 032/033 applicate, 0 citazioni normative inventate, Allegato 3/4 corretto). php -l OK. version 1.10.7. Co-Authored-By: Claude Opus 4.8 --- application/controllers/IncidentController.php | 8 ++++---- public/guida.html | 4 ++-- public/version.json | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/application/controllers/IncidentController.php b/application/controllers/IncidentController.php index 269ca2a..c51a771 100644 --- a/application/controllers/IncidentController.php +++ b/application/controllers/IncidentController.php @@ -92,9 +92,9 @@ class IncidentController extends BaseController // Calcola scadenze NIS2 Art. 23 se significativo if ($isSignificant) { $detectedTime = strtotime($detectedAt); - $data['early_warning_due'] = date('Y-m-d H:i:s', $detectedTime + 24 * 3600); // +24h - $data['notification_due'] = date('Y-m-d H:i:s', $detectedTime + 72 * 3600); // +72h - $data['final_report_due'] = date('Y-m-d H:i:s', $detectedTime + 30 * 86400); // +30 giorni + $data['early_warning_due'] = date('Y-m-d H:i:s', $detectedTime + 24 * 3600); // +24h + $data['notification_due'] = date('Y-m-d H:i:s', $detectedTime + 72 * 3600); // +72h + $data['final_report_due'] = date('Y-m-d H:i:s', $detectedTime + 72 * 3600 + 30 * 86400); // 1 mese dalla notifica (Art.23.4 lett.d) } $incidentId = Database::insert('incidents', $data); @@ -222,7 +222,7 @@ class IncidentController extends BaseController $detectedTime = strtotime($incident['detected_at']); $updates['early_warning_due'] = date('Y-m-d H:i:s', $detectedTime + 24 * 3600); $updates['notification_due'] = date('Y-m-d H:i:s', $detectedTime + 72 * 3600); - $updates['final_report_due'] = date('Y-m-d H:i:s', $detectedTime + 30 * 86400); + $updates['final_report_due'] = date('Y-m-d H:i:s', $detectedTime + 72 * 3600 + 30 * 86400); // 1 mese dalla notifica (Art.23.4 lett.d) } if (!empty($updates)) { diff --git a/public/guida.html b/public/guida.html index c5e9336..9fbd4a5 100644 --- a/public/guida.html +++ b/public/guida.html @@ -623,7 +623,7 @@
  • Compila titolo, classificazione, severità, ora di rilevazione.
  • Il sistema calcola automaticamente le 3 scadenze (24h / 72h / 1 mese).
  • Quando arriva il momento, usa i bottoni "Invia Early Warning (24h)", - "Invia Notifica (72h)" e "Invia Report Finale (30gg)": le email partono verso + "Invia Notifica (72h)" e "Invia Report Finale (1 mese dalla notifica)": le email partono verso l'indirizzo CSIRT configurato.
  • Aggiorna lo stato dell'incidente (analisi → contenimento → eradicazione → recovery → chiuso).
  • Compila root cause e lezioni apprese alla chiusura.
  • @@ -709,7 +709,7 @@
    1. Inserirlo nell'anagrafica con dati di contratto.
    2. Classificare la criticità (low/medium/high/critical).
    3. -
    4. Inviargli il questionario sicurezza (40+ domande standard).
    5. +
    6. Inviargli il questionario sicurezza (template "NIS2 base": 26 domande mappate alle misure ACN GV.SC, personalizzabile).
    7. Verificare la risposta e assegnare un risk score (0–10).
    8. Rinnovare la valutazione almeno una volta l'anno.
    9. Inserire clausole NIS2 nel contratto (right to audit, notifica incidenti, etc.).
    10. diff --git a/public/version.json b/public/version.json index 9919d67..625e108 100644 --- a/public/version.json +++ b/public/version.json @@ -1 +1 @@ -{"version":"1.10.6","build":"2026-05-31-v1.10.6","date":"2026-05-31","changelog":"Fix Knowledge Base da test multi-agente: kb.js usava la chiave token errata (access_token invece di nis2_access_token) -> tutte le chiamate KB tornavano 401, pagina inutilizzabile; kb.html non inizializzava auth gate/sidebar/i18n. Ora la KB e' funzionante e protetta come le altre pagine."} +{"version":"1.10.7","build":"2026-05-31-v1.10.7","date":"2026-05-31","changelog":"Fix precisione normativa da test multi-agente: relazione finale incidenti calcolata da notifica+1 mese (Art.23.4 lett.d) invece che dalla rilevazione; guida allineata (26 domande GV.SC, etichetta '1 mese dalla notifica'). App verificata da 10 agenti: 0 SQLi/IDOR/XSS, DB integro, normativa senza citazioni inventate."}