CVE‑2024‑21345 : correctif KB5034769 pour Windows Server 2022 23H2 (élévation de privilèges kernel)

Une élévation de privilèges critique touche la branche Windows Server 2022 23H2. Ce guide explique le risque, précise qui est concerné et détaille comment détecter et corriger rapidement la faille (KB5034769), avec des contrôles et scripts prêts à l’emploi.

Sommaire

Quel est le problème ?

CVE‑2024‑21345 est une vulnérabilité d’élévation de privilèges dans le noyau Windows provoquée par un dépassement de mémoire dans le tas (CWE‑122). Un utilisateur authentifié avec des droits limités peut exécuter du code arbitraire en mode noyau et obtenir des privilèges SYSTEM. Le score CVSS v3.1 est 8,8/10 (élevé) avec le vecteur : AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H.

En bref

  • Type : élévation de privilèges kernel (heap overflow).
  • Prérequis pour l’attaquant : accès local/authentifié avec privilèges limités.
  • Impact : exécution de code en mode noyau, prise de contrôle complète de l’hôte.
  • Exposition : serveurs partagés, RDS/VDI, hôtes bastion, CI/CD & serveurs de build, tout environnement où plusieurs utilisateurs interagissent.

Plateformes concernées

La vulnérabilité cible exclusivement la branche de serveur publiée en 23H2 :

ProduitÉtatVersions/builds concernésVersion/build corrigé
Windows Server, version 23H2 (branche 25398)Vulnérable10.0.25398.70910.0.25398.709 (et supérieurs) via KB5034769
Windows Server 2022 (LTSC, branche 20348)Non listé comme affecté
Windows Server 2019 / 2016 / 2012Non listés comme affectés

Note de terminologie : Microsoft maintient deux trains distincts pour Windows Server : la branche LTSC (ex. Windows Server 2022, builds 20348.x) et la branche Windows Server, version 23H2 (builds 25398.x). CVE‑2024‑21345 concerne la seconde.

Correctif officiel

Le correctif cumulatif KB5034769 met à jour le noyau vers 10.0.25398.709 et neutralise la faille. Déployez-le sur tous les serveurs Windows Server, version 23H2 dont le build est antérieur à 25398.709.

  • Canaux de déploiement : Windows Update, WSUS/Configuration Manager, téléchargement manuel (catalogue Microsoft Update), pipelines d’imagerie (golden image) et maintenance hors ligne via DISM.
  • Redémarrage : requis dans la plupart des cas (mise à jour du noyau).
  • Compatibilité : inclut les correctifs de sécurité & qualité de février 2024 pour la branche 23H2.

Mesures d’atténuation supplémentaires (bonnes pratiques)

ActionPourquoi ?
Restreindre les comptes locaux / appliquer le principe du moindre privilègeRéduit les possibilités d’exploitation par des utilisateurs authentifiés
Surveiller l’intégrité de ntoskrnl.exe et des journaux d’accèsDétecte d’éventuelles tentatives d’élévation
Segmenter les rôles serveurs critiquesLimite l’impact si une machine devait être compromise

Pourquoi corriger immédiatement ?

  • Faible barrière d’entrée : accès local + droits limités suffisent.
  • Impact maximal : privilèges SYSTEM = dérivation complète des contrôles OS.
  • Effet domino : un seul hôte compromis peut devenir un tremplin vers AD, bases de données, secrets CI/CD et partages administratifs.

Détection et vérification : comment savoir si un serveur est vulnérable ?

Contrôles manuels (console)

  • WINVER : Win+Rwinver → vérifier la mention Windows Server, version 23H2.
  • Invite de commandes : ver affiche la version de base.
  • PowerShell : $os = Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' "{0}.{1}.{2}" -f $os.CurrentMajorVersionNumber, $os.CurrentMinorVersionNumber, $os.CurrentBuildNumber "UBR (Update Build Revision) : {0}" -f $os.UBR # Exemple attendu corrigé : BuildNumber = 25398 et UBR >= 709

Détection à l’échelle (PowerShell, distant)

Le script ci‑dessous interroge une liste d’hôtes, calcule le build effectif Major.Minor.Build.UBR et signale l’état Vulnérable/OK/Hors périmètre. Il fonctionne via WinRM/PowerShell Remoting et exporte un CSV d’audit.

# Fichier : Audit-CVE-2024-21345.ps1
# Entrée : .\Audit-CVE-2024-21345.ps1 -ComputerList .\servers.txt -OutCsv .\audit_cve21345.csv

param(
  [Parameter(Mandatory=$true)] [string]$ComputerList,
  [Parameter(Mandatory=$true)] [string]$OutCsv
)

$servers = Get-Content -Path $ComputerList | Where-Object { $_ -and $_.Trim() -ne "" } | Sort-Object -Unique
$results = @()

foreach ($s in $servers) {
  try {
    $props = Invoke-Command -ComputerName $s -ScriptBlock {
      $cv = Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion'
      [pscustomobject]@{
        ComputerName   = $env:COMPUTERNAME
        ProductName    = $cv.ProductName
        DisplayVersion = $cv.DisplayVersion
        ReleaseId      = $cv.ReleaseId
        CurrentBuild   = [int]$cv.CurrentBuildNumber
        UBR            = [int]$cv.UBR
        Composition    = ("{0}.{1}.{2}.{3}" -f $cv.CurrentMajorVersionNumber,$cv.CurrentMinorVersionNumber,$cv.CurrentBuildNumber,$cv.UBR)
      }
    } -ErrorAction Stop

    $is23H2Branch = $props.CurrentBuild -eq 25398
    if ($is23H2Branch) {
      $status = if ($props.UBR -ge 709) { "OK (corrigé KB5034769)" } else { "Vulnérable (KB5034769 requis)" }
    } else {
      # Autres branches (ex. 20348 = Windows Server 2022 LTSC)
      $status = "Hors périmètre (non listé comme affecté)"
    }

    $results += [pscustomobject]@{
      ComputerName   = $props.ComputerName
      ProductName    = $props.ProductName
      DisplayVersion = $props.DisplayVersion
      Build          = $props.CurrentBuild
      UBR            = $props.UBR
      OSVersion      = $props.Composition
      Etat           = $status
    }
  }
  catch {
    $results += [pscustomobject]@{
      ComputerName   = $s
      ProductName    = $null
      DisplayVersion = $null
      Build          = $null
      UBR            = $null
      OSVersion      = $null
      Etat           = "Indéterminé (erreur : $($_.Exception.Message))"
    }
  }
}

$results | Sort-Object Etat, ComputerName | Tee-Object -FilePath $OutCsv | Format-Table -AutoSize

Interprétation :

  • Vulnérable : Build 25398 avec UBR < 709.
  • OK : Build 25398 avec UBR ≥ 709.
  • Hors périmètre : Autres branches (ex. 20348.x) ou versions non listées.

Contrôle via solutions EDR / inventaire

  • Requête KQL type (Defender for Endpoint / Log Analytics) pour isoler les builds 25398 < 709 : DeviceInfo | where OSVersion startswith "10.0.25398" | extend Build = toint(split(OSVersion, ".")[2]), UBR = toint(split(OSVersion, ".")[3]) | where UBR < 709 | project DeviceName, OSVersion, TimeGenerated
  • Inventaire CM/Intune/WSUS : filtrez sur Windows Server, version 23H2 et ciblez les machines avec UBR < 709.

Plan de remédiation recommandé

Priorisation

  1. Exposition utilisateur : hôtes RDS/VDI, serveurs partagés, jump servers.
  2. Rôles à impact élevé : contrôleurs de domaine, hôtes de virtualisation, serveurs de build/CI.
  3. Visibilité limitée : serveurs sans EDR ni télémétrie suffisante.

Déploiement du correctif KB5034769

ContexteCommande / actionRemarques
Windows Update / WSUSApprover la mise à jour KB5034769 pour la cible Windows Server, version 23H2.Planifiez un redémarrage contrôlé (fenêtre de maintenance).
Installation manuellewusa.exe <KB5034769.msu> /quiet /norestartAssurez-vous que la pile de maintenance la plus récente est présente (généralement incluse).
Hors ligne (image)dism /Image:C:\Mount /Add-Package /PackagePath:KB5034769.cabPensez à recoller l’image gold et à re-scellé (sealing) vos templates.

Vérifications post‑patch

  • Confirmez OSVersion ou Build + UBR (≥ 25398.709).
  • Validez les services applicatifs critiques (sanité fonctionnelle).
  • Surveillez 24–48 h les anomalies de pilotes et BSOD.

Durcissement défensif complémentaire

  • Réduire la surface d’attaque locale :
    • Désactiver l’ouverture de session locale là où non nécessaire (User Rights Assignment).
    • Limiter l’appartenance aux groupes locaux (administrateurs, opérateurs de sauvegarde, etc.).
    • Bloquer l’installation de pilotes non approuvés via WDAC/Device Guard.
  • Renforcer l’intégrité du noyau :
    • Activer VBS/HVCI (Memory Integrity) quand la charge de travail le permet.
    • Surveiller les chargements de pilotes (Sysmon Event ID 6) et les tentatives de manipulation de ntoskrnl.exe.
  • Journalisation & détection :
    • Sysmon : Process Create (ID 1), Driver Load (ID 6), Image loaded (ID 7).
    • Événements Security (4688, 4672) pour les élévations et privilèges spéciaux.

Scénarios d’attaque typiques à surveiller

  1. Post‑exploitation locale : un compte de service à privilège réduit est compromis (credential stuffing), l’attaquant exécute un PoC local pour obtenir SYSTEM, puis persiste via un service ou une tâche planifiée.
  2. Pivot latéral : depuis un serveur RDS exposé, élévation locale puis mouvement latéral vers les contrôleurs de domaine via partages administratifs et outils de gestion.
  3. Évasion EDR : tentatives de chargement de pilotes vulnérables (BYOVD) pour brouiller la télémétrie avant l’exploitation.

Runbook d’incident

  1. Identifier : dressez la liste des hôtes Windows Server, version 23H2 et appliquez le script d’audit ci‑dessus.
  2. Contenir : isolez les hôtes vulnérables des segments sensibles (micro‑segmentation, ACL RDP/WinRM).
  3. Éradiquer : déployez KB5034769, redémarrez, vérifiez UBR ≥ 709.
  4. Recouvrer : réintégrez progressivement les hôtes, surveillez la stabilité, restaurez les règles WDAC/ASR.
  5. Leçons : mettez à jour vos baselines, images gold et pipelines d’automatisation.

Questions fréquentes

Q : Mes serveurs Windows Server 2022 (LTSC 20348.x) sont‑ils concernés ?
R : Non, ils ne sont pas listés comme affectés par cette vulnérabilité. Maintenez toutefois le rythme habituel des mises à jour cumulatives.

Q : Seule l’édition Server Core est‑elle concernée ?
R : Les références publiques soulignent l’édition Windows Server 2022, 23H2 (Server Core). Dans le doute, appliquez le patch sur tout hôte de la branche 23H2.

Q : Puis‑je me contenter d’une atténuation sans patch ?
R : Non recommandé. Les mesures de durcissement réduisent le risque mais ne suppriment pas la condition de vulnérabilité au niveau du noyau. Le déploiement de KB5034769 reste la solution définitive.

Bonnes pratiques de gouvernance

  • Inventaire fiable : maintenez une vue à jour des versions, builds et UBR.
  • SLAs de patching : définissez des délais cibles (ex. 7 jours pour EoP kernel).
  • Pré‑production : testez chaque CU sur un banc de validation représentatif.
  • Automatisation : pipelines Ansible/PowerShell/ConfigMgr pour déployer et vérifier.

Résumé opérationnel

  1. Vérifiez la version de vos hôtes Windows Server (détectez la branche 23H2 et le build 25398).
  2. Appliquez KB5034769 si la build est antérieure à 10.0.25398.709.
  3. Pour les environnements 2012/2016/2019 (et la branche 20348 LTSC), aucun correctif relatif à CVE‑2024‑21345 n’est requis ; continuez toutefois les mises à jour de sécurité régulières.

Conclusion : le risque est confiné à la branche Windows Server, version 23H2 non corrigée. Un déploiement ciblé de KB5034769 (build 10.0.25398.709) élimine la menace. Combinez‑le avec des contrôles d’accès stricts, une surveillance de l’intégrité du noyau et une segmentation des rôles pour un niveau de défense durable.

Sommaire