diff --git a/docs/superpowers/specs/2026-07-17-cve-alertes-design.md b/docs/superpowers/specs/2026-07-17-cve-alertes-design.md index 4add4a3a..fc4c9e03 100644 --- a/docs/superpowers/specs/2026-07-17-cve-alertes-design.md +++ b/docs/superpowers/specs/2026-07-17-cve-alertes-design.md @@ -65,7 +65,27 @@ change tant qu'on ne l'appelle pas), donc rayon de souffle nul malgré les ~110 --- -## ① Le filtre — ce qui rend une alerte « réelle » +## ⓪ Deux buts, deux filtres OPPOSÉS — ne pas les confondre + +Un CVE peut servir à deux choses radicalement différentes, et **le filtre est inversé** selon le but : + +| But | Question | Filtre | Livré par | +|-----|----------|--------|-----------| +| **PROTÉGER** | « suis-je vulnérable ? » | CVE ∈ KEV ∧ paquet **installé** ∧ exposé | **CE spec** (alertes) | +| **FICHER** | « qui me sonde ? » | le motif vise un produit **ABSENT** ⟹ 0 faux positif | spec générateur CVE→WAF | + +Le second est contre-intuitif et vient d'une correction de l'utilisateur : *personne n'a de raison +légitime de demander `/mgmt/tm/util/bash` sur une box sans F5*. Une requête pour un exploit d'un +produit qu'on ne fait pas tourner est un **signal pur, à zéro faux positif possible — précisément +parce que le produit est absent**. On ne bloque pas ce scanner (mode `detect` du WAF), on le **fiche**, +et sa tentative suivante — même inconnue — lui devient attribuable (logique honeypot). + +**Ce spec ne traite QUE le but PROTÉGER.** Le filtre de fingerprinting (produit absent) appartient au +générateur de règles WAF, qui s'appuie sur le mode `detect` livré séparément (PR #872). Confondre les +deux mènerait à alerter sur des vulnérabilités qu'on n'a pas, ou à générer des règles qui bloquent du +trafic légitime — les deux échecs symétriques. + +## ① Le filtre PROTÉGER — ce qui rend une alerte « réelle » ``` ALERTE ⟺ CVE ∈ KEV (exploité pour de vrai, pas théorique)