Analyse des vulnérabilités et des patchs
Résumé succinct
La gestion уязвимостями est un cycle continu : la détection → l'estimation du risque → l'élimination (pattch/migration/konfig) → le contrôle → la comptabilité. Les technologies de numérisation (SCA/SAST/DAST/IAST/Cloud/Container) fournissent des signaux et le contexte (exposition, privilèges, données, EPSS, exploits) définit la priorité. L'objectif est de réduire le risque réel sans interruption d'activité en utilisant l'automatisation, les canaries et les SLO clairs.
Taxonomie du scan
SCA (Software Composition Analysis) : analyse des dépendances/licences ; détection de CVE dans les bibliothèques, SBOM.
SAST : analyse statique de votre propre code avant l'assemblage.
DAST : dynamique « boîte noire » contre le service en service.
IAST : capteurs à l'intérieur de l'application (pendant les tests) - moins de FP, contexte plus profond.
Container/OS Scan : images (image de base, paquets), hôtes (noyau/paquets/configi), repères CIS.
Cloud/Infra (CSPM/KSPM) : misconfighing cloud/K8s (IAM, réseaux, cryptage, baquets publics).
Secret Scan : fuites de clés/tokens dans les dépôts et les images.
Scan Binary/Artifact : vérification des artefacts collectés (signatures, vulnérabilités).
Modèle de risque et hiérarchisation
Estimation = CVSS v3. x (base) × EPSS (probabilité d'exploitation) × contexte (exposition, données, privilèges, mesures compensatoires).
Facteurs contextuels :- Exposition sur Internet/à l'intérieur, présence de WAF/mTLS/isolation.
- Données : PII/Finances/Secrets.
- Privilèges de processus/nœud, mouvement lateral-potentiel.
- Existence d'un exploit public/attaques massives, exigences de la conformité.
Exemple de vecteur CVSS : 'CVSS : 3. 1/AV : N/AC : L/PR : N/UI : N/S : U/C : H/I : H/A : H '→ a critiqué ; si le service est public et sans mesures compensatoires - P1.
Seuils SLO (exemple) :- P1 (critique, en service) : Fix ≤ 48 h.
- P2 (haut) : fix ≤ 7 jours.
- P3 (moyenne) : fix ≤ 30 jours.
- P4 (faible/inform.) : Planifié/par backlog.
Cycle de vie de la gestion des vulnérabilités
1. Inventaire des actifs : services, images, clusters, OS, paquets, dépendances, versions.
2. Scanner selon la planification et l'événement : commits, assemblages, déplay, fenêtres quotidiennes/hebdomadaires.
3. Triage : déduplication, normalisation (CVE→Ticket), mapping par propriétaire.
4. Priorité par contexte : CVSS/EPSS + exposition/données.
5. Remédiation : patch/mise à jour de dépendance/config-hardnening/patch virtuel (WAF).
6. Vérification : ré-analyse, tests, canari.
7. Reporting : métriques de fermeture, âge des vulnérabilités, conformité SLO.
8. Leçons : fix dans les modèles (base image, Helm chart), politique pour l'avenir.
Intégration dans CI/CD
À l'étape PR : SAST + SCA + secret-scan ; "break build'par P1/P2 ou exigence de l'appellation.
À l'étape build : scan d'image, génération de SBOM (CycloneDX/SPDX), signature d'artefacts (cosign).
Dans l'étape deploy : La politique d'admission - interdire les images avec 'critical/high' vulnérabilités et sans signature/SBOM.
Postdepl : DAST/IAST contre le stajing et la production partielle (profils sécurisés).
Exemple : Renovate/Dependabot (fragment)
json
{
"extends": ["config:recommended"],
"vulnerabilityAlerts": { "enabled": true },
"packageRules": [
{ "matchUpdateTypes": ["minor","patch"], "automerge": true },
{ "matchManagers": ["dockerfile"], "enabled": true }
]
}
Politique d'admission (Kubernetes, OPA/Gatekeeper - simplifié)
rego package policy.vuln
deny[msg] {
input.image.vuln.critical > 0 msg:= sprintf("Image %s has critical vulns", [input.image.name])
}
deny[msg] {
input.image.sbom == false msg:= sprintf("Image %s without SBOM", [input.image.name])
}
Patch Management (OS, conteneurs, K8s)
ОС (Linux/Windows)
Fenêtre Patch : fenêtres régulières + extraordinaires d'urgence pour P1.
Stratégie : d'abord canari 5-10 % des nœuds, puis vagues.
Auto-déterrage : Ansible/WSUS/Intune/SSM ; vérification des dépendances et des retraits.
Kernel Live Patching (si possible) pour minimiser les interruptions de service.
Services de restart : drain/cordon pour nodes K8s, graceful shutdown.
Conteneurs
Approche immuable : ne pas « apt upgrade » dans Rantime ; redéfinir l'image avec la base mise à jour.
Images de base : mettre à jour régulièrement les images golden (Alpine/Debian/Distroless), ancrer les versions (digest).
Assemblages multi-étapes : minimisez la surface (supprimez les build-tools).
Vérification avant le retrait : bloc d'images avec CVE critique.
Kubernetes/Service Mesh
Control Plane : versions mineures en temps opportun, fermeture de CVE k8s/etcd/containerd.
Node OS/Container runtime : mises à jour planifiées, compatibilité des versions.
Mesh/Ingress : les versions Envoy/Istio/NGINX sont critiques (souvent CVE en parser/NTTR3).
Admissions Politiques : interdiction ': latest', exigence de signature, limites de vulnérabilité.
Patchs virtuels et mesures compensatoires
Lorsque le patch n'est pas possible rapidement :- WAF/WAAP : signature/modèle positif pour un endpoint particulier.
- Fichflags : Désactiver les fonctionnalités vulnérables.
- Liste réseau ACL/mTLS/IP allow-list : limiter l'accès à un service vulnérable.
- Config-hardnening : déclassement, sandbox, read-only FS, désactivation des modules dangereux.
- Réduction des tokens/clés TTL, rotation des secrets.
Gestion des exclusions
L'exception est formée par un tiquet avec : justification, mesures compensatoires, SLA à éliminer, date de révision.
Dans les rapports, marquer comme « acceptation temporaire des risques » et inclure dans l'examen mensuel.
Observabilité et métriques
Technique :- Mean Time To Patch (MTTP) по P1/P2/P3.
- Proportion d'actifs couverts par l'analyse (%).
- Âge des vulnérabilités ouvertes (p50/p90), backlog burn-down.
- Pourcentage d'images avec SBOM et signature.
- Exécution de SLO selon les délais de fermeture (par exemple, ≥ 95 % P1 ≤ 48 h).
- Effet sur l'aptyme (dans les incidents de patchs).
- Repérez les mêmes CVE (qualité de fixation dans les modèles).
Playbooks (abrégé)
P1 : Un RCE critique dans le service public
1. Activer la règle WAF/wirt patch.
2. Bloquer l'accès aux sources non autorisées (le cas échéant).
3. Reconfiguration urgente de l'image/patch OS, canaris → vagues.
4. Nouvelle vérification DAST/télémétrie, surveillance des erreurs.
5. Post-incident : fixez la ficelle dans l'image de base/Helm chart, ajoutez le test à CI.
1. Rotation immédiate des secrets/clés, rappel des tokens.
2. Recherche des traces d'utilisation, limitation des endpoints.
3. Scanner des repo/images sur des secrets, implémenter un scanner pré-commit.
Exemples d'artefacts
1) Rapport SQL sur les vulnérabilités « chaudes »
sql
SELECT service, cve, cvss, epss, exposed, has_exploit, created_at,
PRIORITY(exposed, has_exploit, cvss, epss) AS prio
FROM vuln_findings
WHERE status = 'open' AND (cvss >= 8.0 OR has_exploit = true)
ORDER BY prio DESC, created_at ASC;
2) Politique d'admission (Kyverno, bloc de vulnérabilités critiques)
yaml apiVersion: kyverno.io/v1 kind: ClusterPolicy metadata:
name: block-critical-vulns spec:
validationFailureAction: Enforce rules:
- name: image-must-have-no-critical match: { resources: { kinds: ["Pod"] } }
validate:
message: "Image contains critical vulnerabilities"
pattern:
metadata:
annotations:
vuln.scanner/critical: "0"
3) Génération SBOM et signature (Fragment Makefile)
make sbom:
cyclonedx create --output sbom.json sign:
cosign sign --key cosign.key $(IMAGE_DIGEST)
Spécificité pour iGaming/fintech
Zones à haut risque : passerelles de paiement, backoffice de paiement, antifrod, traitement PII/PAN - patchs priorité P1/P2.
Fenêtres de service : alignement avec les tournois/promotions, caches pré-warm, canaris dans les régions à faible charge.
Réglementation (PCI DSS/GDPR) : délais pour éliminer les vulnérabilités, preuves (captures d'écran/rapports), segmentation de la zone CHD, cryptage.
Intégrations partenaires : exiger des SDK/clients versionnés, des SCA mandatés et des HMAC/mTLS sur le Web.
Erreurs typiques
« Scan n'est rien » : il n'y a pas de propriétaires et SLO.
Focus uniquement sur CVSS sans contexte (exposition, EPSS, données).
Patch dans le rentier du conteneur au lieu de recalculer l'image.
Pas de plans canaris/rollback.
Ignorer les misconfigues cloud/K8s (souvent plus critiques que CVE).
Aucun SBOM/signature - traçabilité faible (chaîne d'approvisionnement).
Feuille de route pour la mise en œuvre
1. Inventaire des biens et des propriétaires ; un registre unique des services/images.
2. Pile de scanners : SCA/SAST/DAST/Container/Cloud + secret-scan ; intégration dans CI/CD.
3. Stratégies SLO et hiérarchisation : CVSS + EPSS + contexte ; modèles de tiquets.
4. Admission/Policy-as-Code : interdiction des vulnérabilités critiques, exigence SBOM/signatures.
5. Processus de patch : fenêtres, canaries, retours en arrière ; pilotes automatiques pour les versions mineures/patch.
6. Rapports et métriques : MTTP, couverture, âge ; examen hebdomadaire des risques.
7. Exercices réguliers : simulation de CVE critique, vérification de pleybuck et rollback.
Total
La gestion mature des vulnérabilités est un processus et non un « balayage » ponctuel : détection automatique, hiérarchisation contextuelle, patchs impénétrables via canaris/rollback, policy-as-code à l'entrée de la prod et métriques d'exécution transparentes. En fixant les fixations dans les images de base et les modèles, vous réduisez le risque de répétition et maintenez la surface d'attaque sous contrôle constant.