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.
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 | État | Versions/builds concernés | Version/build corrigé |
---|---|---|---|
Windows Server, version 23H2 (branche 25398) | Vulnérable | < 10.0.25398.709 | 10.0.25398.709 (et supérieurs) via KB5034769 |
Windows Server 2022 (LTSC, branche 20348) | Non listé comme affecté | — | — |
Windows Server 2019 / 2016 / 2012 | Non 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)
Action | Pourquoi ? |
---|---|
Restreindre les comptes locaux / appliquer le principe du moindre privilège | Réduit les possibilités d’exploitation par des utilisateurs authentifiés |
Surveiller l’intégrité de ntoskrnl.exe et des journaux d’accès | Détecte d’éventuelles tentatives d’élévation |
Segmenter les rôles serveurs critiques | Limite 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+R →
winver
→ 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
- Exposition utilisateur : hôtes RDS/VDI, serveurs partagés, jump servers.
- Rôles à impact élevé : contrôleurs de domaine, hôtes de virtualisation, serveurs de build/CI.
- Visibilité limitée : serveurs sans EDR ni télémétrie suffisante.
Déploiement du correctif KB5034769
Contexte | Commande / action | Remarques |
---|---|---|
Windows Update / WSUS | Approver la mise à jour KB5034769 pour la cible Windows Server, version 23H2. | Planifiez un redémarrage contrôlé (fenêtre de maintenance). |
Installation manuelle | wusa.exe <KB5034769.msu> /quiet /norestart | Assurez-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.cab | Pensez à recoller l’image gold et à re-scellé (sealing) vos templates. |
Vérifications post‑patch
- Confirmez
OSVersion
ouBuild + 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
- 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. - 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.
- Évasion EDR : tentatives de chargement de pilotes vulnérables (BYOVD) pour brouiller la télémétrie avant l’exploitation.
Runbook d’incident
- Identifier : dressez la liste des hôtes Windows Server, version 23H2 et appliquez le script d’audit ci‑dessus.
- Contenir : isolez les hôtes vulnérables des segments sensibles (micro‑segmentation, ACL RDP/WinRM).
- Éradiquer : déployez KB5034769, redémarrez, vérifiez
UBR ≥ 709
. - Recouvrer : réintégrez progressivement les hôtes, surveillez la stabilité, restaurez les règles WDAC/ASR.
- 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
- Vérifiez la version de vos hôtes Windows Server (détectez la branche 23H2 et le build 25398).
- Appliquez KB5034769 si la build est antérieure à 10.0.25398.709.
- 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.