Mardi 20 juillet 2021, Microsoft a publié une alerte de sécurité concernant la vulnérabilité CVE-2021-36934 « Windows Elevation of Privilege Vulnerability », aussi appelée « HiveNightmare » ou « SeriousSAM ».
Cette vulnérabilité affecte certains fichiers système, dont le gestionnaire des comptes de sécurité ou « Security Accounts Manager », plus connu sous son acronyme SAM, et permet d’exécuter du code arbitraire avec les droits SYSTEM à partir d’un compte utilisateur standard : un utilisateur non-administrateur et malveillant peut donc, en cas d’accès à une machine vulnérable, obtenir des privilèges plus élevés.
La vulnérabilité HiveNightmare CVE-2021-36934 est liée à une configuration trop permissive des droits d’accès aux fichiers système situés dans le répertoire « C:\Windows\System32\config ».
Ce répertoire contient plusieurs fichiers particulièrement intéressants, notamment SAM, SECURITY, et SYSTEM.
Le gestionnaire des comptes de sécurité (SAM) est une base de données des comptes locaux utilisée par le système d’exploitation Windows, et stockée dans le fichier « C:\Windows\System32\config\SAM ». La base SAM est très connue dans le milieu de la sécurité informatique, car elle contient les empreintes des mots de passe des comptes locaux.
Les fichiers « C:\Windows\System32\config\SECURITY » et « C:\Windows\System32\config\SYSTEM » sont des fichiers de registres tout aussi sensibles, qui permettent en cas d’accès de faire des attaques plus avancées sur le système. Benjamin Delpy, créateur de Mimikatz, illustre le tout dans un exemple en vidéo.
L’alerte de sécurité CVE-2021-36934 publiée par Microsoft montre que, dans certaines configurations Windows, ces fichiers sont accessibles aux utilisateurs standards (non administrateur).
Pour vérifier les droits d’accès sur le fichier SAM, il est possible d’utiliser la commande ci-dessous :
icacls C:\Windows\System32\config\SAM
Pour les systèmes vulnérables, le retour de la commande contient la ligne « BUILTIN\Utilisateurs:(I)(RX) » (ou BUILTIN\Users pour les systèmes anglophones). L’annotation « (RX) » signifie que l’utilisateur peut lire et exécuter le fichier.
Cependant, Windows dispose de plusieurs mécanismes de protection : même si les permissions sur ces fichiers ne sont pas correctement configurées, ils ne sont pas directement accessibles pour autant.
La suite de l’exploitation de la vulnérabilité repose ainsi sur un élément complémentaire : l’activation de la fonctionnalité « Protection du système » de Windows et la présence de sauvegardes de données « Shadow Copy ».
Cette fonctionnalité est activée par défaut sur les systèmes Windows 10 avec une taille de disque dur supérieure à 128Go.
Dans ces conditions, des « shadow copy » sont créées lors de mises à jour Windows ou d’installations à l’aide de fichiers MSI, d’après la documentation Microsoft.
Pour vérifier la présence de « shadow copy », il est possible d’utiliser la commande suivante :
vssadmin list shadows
L’exploitation de la vulnérabilité HiveNightmare CVE-2021-36934 repose sur le fait que les « shadow copy » conservent les permissions des fichiers sauvegardés, mais ne sont plus concernés par les verrous supplémentaires de Windows qui empêchaient leur consultation directe : autrement dit, sur un système vulnérable, un utilisateur standard peut accéder aux données du fichier SAM en passant par les « shadow copy ».
A l’aide d’outils d’attaques spécialisés, comme ce script du chercheur Kevin Beaumont (également auteur de la vulnérabilité), il est alors possible d’extraire les données de la base SAM pour ensuite compromettre la machine ciblée par élévation de privilèges, voire d’autres machines sur le réseau par déplacement latéral.
Toutes les versions de Windows 10 supérieures ou égales 1809, ainsi que Windows Server 2019, 2004 et 20H2, sont concernées d’après Microsoft. L’Agence Nationale de la Sécurité des Systèmes d’Information (ANSSI) indique dans son bulletin d’actualité CERTFR-2021-ACT-031 que Windows Vista RTM est également concerné, mais que le cas n’a pas pu être reproduit sur des versions Windows Server 2019, 2004 et 20H2 fraîchement installées.
Cyberwatch met à votre disposition le script ci-dessous pour identifier les actifs vulnérables :
# Check if sam database has bad permissions # This is also used to check hardening against HiveNightmare SeriousSam CVE-2021-36934 function Check-SamPermissions { $checkSpoolerStatus = $(Get-Service -Name Spooler | Select -Property Status).Status $checkSpoolerStartType = $(Get-Service -Name Spooler | Select -Property StartType).StartType $result="OK" # Check for sam permissions $sam_permissions = (get-acl $env:windir\system32\config\sam).Access if (($sam_permissions | where-object { $_.filesystemrights -like "*read*" -and $_.identityreference -like "*BUILTIN\Users*" -and $_.accesscontroltype -eq "allow" }) -or ($sam_permissions | where-object { $_.filesystemrights -like "*read*" -and $_.identityreference -like "*BUILTIN\Utilisateurs*" -and $_.accesscontroltype -eq "allow" })) { Write-Output "DEBUG:Identified bad permissions on the sam database!" $result = "KO" } else { Write-Output "DEBUG:Permissions are okay." } # Additional checks on VSS shadow copies if (Get-CimInstance -Namespace root/cimv2 -ClassName win32_shadowcopy) { Write-Output "DEBUG:Found existing VSS shadow copies!" if ($result -eq "KO") { Write-Output "DEBUG:CVE-2021-36934 is EXPLOITABLE on this machine!" } Write-Output "DEBUG:If your machine had bad permissions set at any point on the sam database, Microsoft recommends to delete these items in order to prevent exploitation of old sam memory dump." } else { Write-Output "DEBUG:No VSS shadow copy found." } Write-Output "RESULT:$result" } Check-SamPermissions
Ce script peut également être lancé par l’intermédiaire de notre plateforme de gestion des vulnérabilités et de contrôle des conformités.
La vulnérabilité HiveNightmare permet à un attaquant ayant compromis un compte sur une machine d’élever ses privilèges et de prendre le contrôle total de la machine ciblée, ou d’exécuter du code arbitraire.
Plusieurs exploits sont disponibles gratuitement et publiquement sur internet.
L’attaque nécessite la compromission préalable d’un compte utilisateur valide.
Microsoft fournit dans son bulletin d’information de septembre 2021 des mises à jour de sécurité qui corrigent le problème :
Le bulletin d’information de Microsoft fournit également des recommandations et contre-mesures, dans le cas où l’installation des mises à jour de sécurité n’est pas possible. Il est ainsi recommandé de restreindre l’accès aux fichiers dans le répertoire « C:\Windows\System32\config » à l’aide de la procédure suivante (temps requis inférieur à 5 minutes) :
icacls $env:windir\system32\config\*.* /inheritance:eMicrosoft recommande également de supprimer les « shadow copy » dont la date de création est située avant l’exécution de la procédure. Pour cela, Microsoft propose d’utiliser la commande ci-dessous. ATTENTION : cette commande supprime TOUTES vos sauvegardes de type « shadow copy » !
vssadmin delete shadows /for=%systemdrive% /QuietVous devrez ainsi créer un nouveau point de restauration après l’opération, sous peine de ne plus disposer de sauvegardes. Pour cela, allez dans les Paramètres Windows, puis dans Système, puis A propos de, puis Protection du système, puis cliquez sur Créer.
L’ANSSI précise également dans son bulletin que :
Nos experts effectuent une veille continue sur cette vulnérabilité et mettront à jour l’ensemble des informations en fonction des éléments que publieront les autorités.
Nous sommes à votre disposition pour toute question complémentaire via notre formulaire de contact.
Mise à jour de l’article le 20/09/2021 : ajout des références vers les mises à jour de Microsoft