Aller au contenu

đŸ›Ąïž SENTRY — Bilan : clĂŽture de M2 et phase 3 (moteur CVE)

Date : 29/09/2026 · Base : votre commit 87bcca6 (branche security/feed-last-error) Branches livrées : feature/sprint3-m2 (9402bb1) puis feature/phase3-cve Rédaction : Claude (Cowork), pour Godwill FOKA


1. Verdict

Jalon Code Constat sur données Ce qui reste
M2 Ingestion opĂ©rationnelle ✅ complet ⏳ Ă  faire chez vous sentry seed, fetch-all, clĂ© OTX
M3 Moteur CVE & alerting ✅ complet ⏳ Ă  faire chez vous sentry cves sync (clĂ© NVD conseillĂ©e)

Votre lecture de l'Ă©tat « M2 non atteint » Ă©tait juste : les critĂšres portent sur des donnĂ©es rĂ©elles, pas sur le code. Deux choses empĂȘchaient pourtant M2 d'ĂȘtre atteignable, et elles relĂšvent bien du code :

  1. Le seed ne proposait que 2 sources, dont une exigeant une clĂ© : le critĂšre « ≄ 3 sources saines » Ă©tait inatteignable sans configuration manuelle.
  2. Un défaut d'analyse CSV aurait rejeté 100 % d'une source réelle (C2IntelFeeds, voir §5).

Les deux sont corrigés. Sans aucune inscription, sentry seed && sentry feeds fetch-all doit maintenant cocher 3 des 4 critÚres M2 ; seul « OTX connecté » demande la clé gratuite (inscription de 5 minutes).

2. Ce que je n'ai pas pu vérifier

Mon environnement n'a pas accÚs au réseau des sources (NVD, CISA, FIRST, abuse.ch, DigitalSide, OTX : connexion refusée par le proxy ; seul GitHub répond). Conséquences :

  • les formats C2IntelFeeds et DigitalSide (liste d'URL) sont vĂ©rifiĂ©s sur les fichiers rĂ©els (tĂ©lĂ©chargĂ©s depuis GitHub) ; Feodo sur un extrait rĂ©el de 2026 ;
  • les formats NVD 2.0, KEV, EPSS, TAXII DigitalSide et OTX sont vĂ©rifiĂ©s sur des fixtures conformes Ă  leur documentation publique, pas sur une rĂ©ponse rĂ©elle. Confiance : Ă©levĂ©e pour KEV et EPSS (formats stables et simples), bonne pour NVD, moyenne pour le serveur TAXII DigitalSide (disponibilitĂ© et contenu non vĂ©rifiables d'ici) ;
  • le paramĂštre NVD hasKev est envoyĂ© sans valeur, comme le prĂ©voit la documentation du NVD. S'il Ă©tait refusĂ©, la synchronisation continue (repli testĂ©) et les CVE KEV sont créées depuis le catalogue CISA.

Le premier sentry cves sync et le premier sentry feeds fetch-all chez vous sont donc le vrai test d'intégration. Envoyez-moi leur sortie en cas d'échec d'une source.

3. Livrables

3.1 ClĂŽture M2 (feature/sprint3-m2)

TĂąche Contenu
Rebase Sprint 3 rejoué sur votre 87bcca6 (arbre de 25adf77 identique à 202c6aa, vérifié)
1.8 TAXII 2.1 Format TAXII, pagination more/next, added_after, identifiants par hÎte (TAXII_AUTH), jamais envoyés à un autre hÎte
Sources sans clé C2IntelFeeds IP et domaines (30 j), DigitalSide URL (7 j), DigitalSide TAXII IoC réseau (STIX 2.1)
Correctif CSV Colonne IOC choisie sur le contenu (§5)
Garde-fou Test : chaque URL du seed passe les rĂšgles SSRF de l'API

3.2 Phase 3 — moteur CVE (feature/phase3-cve)

TĂąche Contenu
2.1 NVD 2.0 KEV complet + CVE modifiĂ©es depuis 30 j, puis incrĂ©mental ; pages de 500 ; 6 s / 0,6 s entre requĂȘtes ; curseur en base
2.2 KEV + EPSS Ransomware, échéance, action requise ; retraits du catalogue appliqués ; EPSS score + percentile
2.3 Recalcul Score et priorité recalculés à chaque changement ; historique cve_priority_history
2.4 API /api/v1/cves (tri par risque, 5 filtres), /api/v1/cves/{id} (décomposition, historique)
2.5 Alerting Franchissement du seuil 75, ligne de base sans alerte, /api/v1/alerts, acquittement, webhook 5 tentatives
2.6 CLI sentry cves sync / list / show / alerts ; synchro automatique par le worker toutes les 6 h
Mesure sentry status affiche les 4 critĂšres M3

4. Métriques

Indicateur 87bcca6 (votre base) Aujourd'hui
Tests PostgreSQL 16 (3.12 et 3.14) 256 326, 0 échec
Couverture 95 % ≈ 95 %
Routes /api/v1 10 14
Commandes CLI 14 19
Migrations 2 4 (montée, alembic check, descente, remontée vérifiées)
ADR 5 7

Performance (PostgreSQL local, 30 000 CVE synthĂ©tiques) : liste des CVE P95 = 8 ms (sans filtre), 3 ms (P0), 108 ms (recherche texte). Cible RNF-PERF-01 : 250 ms. DonnĂ©es rĂ©elles : la liste DigitalSide (36 995 URL) s'ingĂšre en 24 s, 0 rejet. Pic mĂ©moire du processus : 120 Mo (cible ≀ 256 Mo).

5. Défauts

DĂ©faut GravitĂ© État
CSV : colonne choisie par son nom seul. C2IntelFeeds publie #ip,ioc oĂč ioc est un libellĂ© (« Possible Cobaltstrike C2 IP ») : 265 lignes sur 265 rejetĂ©es Majeure (source rĂ©elle inexploitable) ✅ choix sur le contenu, libellĂ© repris en description
Seed : 2 sources dont 1 Ă  clĂ© → critĂšre M2 « 3 sources » inatteignable Majeure ✅ 7 sources, 5 sans clĂ©
Masquage de secrets : un mot de passe court (guest) aurait masquĂ© ce mot partout Mineure ✅ secrets < 8 caractĂšres non masquĂ©s
URL de requĂȘte limitĂ©e Ă  500 caractĂšres (colonne en base) : lots EPSS impossibles Majeure pour M3 ✅ 4 000 pour les URL non stockĂ©es

Connus, non bloquants : copie GitHub de DigitalSide figée depuis 2024 (le seed utilise l'URL officielle osint.digitalside.it) ; Feodo Tracker ne publie que quelques IP ; CVSS v4.0 et v3.1 mélangés faute d'évaluation NVD complÚte (ADR-007) ; recherche texte sans index au-delà de 100 000 CVE.

6. SWOAT

Forces Deux jalons codés en une passe ; score entiÚrement justifiable (décomposition + historique) ; alerting qui ne noie pas l'astreinte ; performance trÚs en deçà des cibles
Faiblesses Aucune synchronisation réelle faite ; dépendance à des sources gratuites dont la disponibilité varie (DigitalSide, Feodo quasi vide)
Opportunités Rapprocher CVE et IOC (pulses OTX citant des CVE) pour le signal « attaque » ; score de confiance IOC par provenance
Menaces Changements de conditions des API (NVD a déjà réduit ses débits, abuse.ch a imposé une clé)
Axes d'action Pousser, créer les clés NVD et OTX, lancer le worker 24 h, constater M2 et M3

7. Décisions attendues

  • Accepter ou amender ADR-004 (planning), ADR-005 (cycle de vie IOC), ADR-006 (provenance, OTX, worker), ADR-007 (moteur CVE, ligne de base des alertes, seuil 75).
  • Choisir le canal d'alerte (webhook Slack / Mattermost / Teams via passerelle).

8. Étape suivante — phase 4 : incidents (M4, cible 05/11/2026)

API des incidents sur la machine d'Ă©tat existante (NIST SP 800-61), chronologie immuable, liaison incident ↔ IOC et incident ↔ CVE, crĂ©ation d'un incident depuis une alerte CVE. Les alertes de cette phase en sont la porte d'entrĂ©e naturelle.