Risques

  • Exécution de code arbitraire à distance
  • Élévation de privilèges

Systèmes affectés

  • Windows 10 for 32-bit Systems
  • Windows 10 for x64-based Systems
  • Windows 10 Version 1607 for 32-bit Systems
  • Windows 10 Version 1607 for x64-based Systems
  • Windows 10 Version 1809 for 32-bit Systems
  • Windows 10 Version 1809 for ARM64-based Systems
  • Windows 10 Version 1809 for x64-based Systems
  • Windows 10 Version 1909 for 32-bit Systems
  • Windows 10 Version 1909 for ARM64-based Systems
  • Windows 10 Version 1909 for x64-based Systems
  • Windows 10 Version 2004 for 32-bit Systems
  • Windows 10 Version 2004 for ARM64-based Systems
  • Windows 10 Version 2004 for x64-based Systems
  • Windows 10 Version 20H2 for 32-bit Systems
  • Windows 10 Version 20H2 for ARM64-based Systems
  • Windows 10 Version 20H2 for x64-based Systems
  • Windows 10 Version 21H1 for 32-bit Systems
  • Windows 10 Version 21H1 for ARM64-based Systems
  • Windows 10 Version 21H1 for x64-based Systems
  • Windows 7 for 32-bit Systems Service Pack 1
  • Windows 7 for x64-based Systems Service Pack 1
  • Windows 8.1 for 32-bit systems
  • Windows 8.1 for x64-based systems
  • Windows RT 8.1
  • Windows Server 2008 for 32-bit Systems Service Pack 2
  • Windows Server 2008 for 32-bit Systems Service Pack 2 (Server Core installation)
  • Windows Server 2008 for x64-based Systems Service Pack 2
  • Windows Server 2008 for x64-based Systems Service Pack 2 (Server Core installation)
  • Windows Server 2008 R2 for x64-based Systems Service Pack 1
  • Windows Server 2008 R2 for x64-based Systems Service Pack 1 (Server Core installation)
  • Windows Server 2012
  • Windows Server 2012 R2
  • Windows Server 2012 R2 (Server Core installation)
  • Windows Server 2016
  • Windows Server 2016 (Server Core installation)
  • Windows Server 2019
  • Windows Server 2019 (Server Core installation)
  • Windows Server, version 2004 (Server Core installation)
  • Windows Server, version 20H2 (Server Core Installation)

Résumé

[version du 12 août 2021]

Le 11 août 2021, Microsoft a publié un avis concernant la vulnérabilité CVE-2021-36958 affectant le spouleur d’impression (print spooler). Microsoft indique que cette vulnérabilité permet une exécution de code arbitraire à distance. Le CERT/CC ajoute qu'en se connectant à une imprimante malveillante, l'attaquant peut exécuter du code arbitraire avec les privilèges SYSTEM [8].

Aucun correctif n'est disponible pour l'instant. Microsoft conseille donc de désactiver le service.

Comme la désactivation complète des impressions est difficilement réalisable, le CERT-FR renvoie vers les recommandations formulées dans le paragraphe [version initiale].

[version du 11 août]

Microsoft a publié une mise à jour de sécurité (KB5005652) corrigeant la vulnérabilité référencée par l'identifiant CVE-2021-34481 [7]. Point important : Microsoft a récemment pris connaissance d'un scénario d'attaque à distance pour cette vulnérabilité dont l'impact initial se restreignait alors seulement à une élévation de privilèges locaux. Ainsi, Microsoft a donc révisé son évaluation en conséquence. Le score CVSSv3 de cette vulnérabilité s'élève maintenant à 8.8. Nous vous recommandons d'installer ces mises à jour immédiatement.

[version du 16 juillet, 15h30]

Le 6 juillet 2021, Microsoft annonçait un correctif pour la CVE-2021-34527 afin de protéger les systèmes Windows contre une attaque distante. Cependant, le 15 juillet 2021, Microsoft a publié un bulletin de sécurité [3] qui confirme l'existence d'une vulnérabilité non corrigée permettant une élévation locale des privilèges avec les privilèges SYSTEM. Cette vulnérabilité est référencée par l'identifiant CVE-2021-34481 [4]. L'attaquant exploite la vulnérabilité en accédant au système cible localement. Il peut également s'appuyer sur une interaction avec l'utilisateur pour effectuer les actions requises afin d'exploiter la vulnérabilité (ex. : inciter un utilisateur légitime à ouvrir un document malveillant).

Le CERT-FR rappelle que les recommandations ci-dessous sont toujours valables. Par ailleurs, des compléments d'aide à la détection ont été ajoutés ci-après.

[version du 12 juillet, 15h30] Correction d'une erreur dans le nom du chemin "C:\Windows\System32\spool\drivers", il s'agit bien de "drivers" et non pas "driver".

[version du 08 juillet 2021 14h30] Le correctif publié par Microsoft ainsi que la sécurisation de la fonctionnalité "Point and Print" (décrite ci-dessous) permettent de se prémunir contre une exécution de code arbitraire à distance. L'application de ces mesures permet d'envisager la réactivation de l'impression distante sur les serveurs d'impression (cf. ci-dessous).

[version du 08 juillet 2021 09h00 : information concernant la publication des correctifs, ajout d'une recommandation de l'éditeur] voir ci-dessous.

[version du 07 juillet 2021 10h00 : information concernant la publication des correctifs] se référer à la section "Solution".

[version initiale]

Cette alerte annule et remplace l’alerte CERT-FR CERTFR-2021-ALE-013.

Le 29 juin 2021, deux chercheurs ont présenté une façon d’exploiter une vulnérabilité affectant le spouleur d’impression (print spooler) et permettant une exécution de code à distance, entraînant une élévation de privilèges avec les droits SYSTEM.

Le 1er juillet 2021, Microsoft a publié un avis de sécurité indiquant que cette vulnérabilité « jour zéro » (zero day) est différente de la vulnérabilité CVE-2021-1675 initialement corrigée lors du Patch Tuesday du 09 juin 2021.

Cette nouvelle vulnérabilité, CVE-2021-34527, affecte le spouleur d’impression (print spooler) qui est un composant du système d’exploitation Windows activé par défaut. Elle permet à un attaquant d’exécuter du code arbitraire à distance avec les droits SYSTEM.

Des codes d'exploitation sont publiquement disponibles sur Internet, ce qui signifie que l’exploitation de cette vulnérabilité est imminente ou déjà en cours.

Ces codes exploitent la possibilité offerte par le service spouleur d'impression de téléverser un pilote, dans le cadre de l’ajout d’une nouvelle imprimante, pour installer un code malveillant. Ce service étant activé par défaut, tout système Windows est donc actuellement vulnérable, avec la possibilité d'une exploitation à distance.

En particulier, au sein d'un système d'information Microsoft, les contrôleurs de domaine Active Directory sont particulièrement exposés, puisqu'un attaquant, ayant préalablement compromis un poste utilisateur, pourra in fine obtenir les droits et privilèges de niveau "administrateur de domaine" Active Directory.

L’ANSSI recommande fortement de réaliser les actions suivantes :

  • pour tous les systèmes ne nécessitant pas le service d'impression, en particulier pour les contrôleurs de domaine (le CERT-FR recommande fortement de ne jamais activer le service spouleur d'impression sur les contrôleurs de domaine) :
    • modifier le type de démarrage vers la valeur "Désactivé" / "Disabled" pour le service "Spooler" (description : "Spouleur d'impression" / "Print Spooler", exécutable : "spoolsv.exe"),
    • une fois le service désactivé, il est nécessaire d’arrêter manuellement le service ou de redémarrer la machine ;
  • appliquer une politique de filtrage réseau afin d'éviter les latéralisations sur les systèmes nécessitant le service d'impression (notamment les postes de travail) : on pourra notamment utiliser le pare-feu intégré pour interdire les connexions entrantes sur les ports 445 et 139 (canaux nommés SMB) ainsi qu'interdire les connexions à destination du processus spoolsv.exe ;
  • [08 juillet 2021 14h30] sur les équipements non corrigés ou qui ne sont pas des serveurs d'impression, désactiver la prise en compte des demandes d’impression distante sur l’ensemble des systèmes, tout en laissant la possibilité de lancer une impression locale. Ce paramètre peut être défini à l’aide d’une Stratégie de Groupe (Group Policy) : le paramètre « Autoriser le spouleur d’impression à accepter les connexions des clients » doit être à l’état « Désactivé »/« Disabled » (« Configuration ordinateur » / «Modèle d’administration » / « Imprimantes ») ;
  • mettre en place une détection système et réseau dans le but de détecter les exploitations sur les équipements vulnérables, les éventuelles latéralisations ainsi que la compromission des contrôles de domaine Active Directory ;
  • suivre les recommandations de sécurisation d'Active Directory [1].

Informations d'aide à la détection système

Une première mesure de détection des codes d'exploitation actuels consistera en la surveillance des processus enfant créés par le processus spoolsv.exe, les codes d'exploitation utilisant cette technique pour exécuter un code malveillant. Pour tracer la création d'un processus fils, on peut regarder les évènements suivants :

  • l'évènement numéro 4688 du fournisseur "Microsoft-Windows-Security-Auditing" enregistré dans le journal de sécurité, si la stratégie est configurée pour le générer car cet évènement n'est pas produit par défaut ;
  • l'évènement numéro 1 du fournisseur "Microsoft-Windows-Sysmon" enregistré dans le journal sysmon si l'outil System Monitor est installé.

Il convient de noter que les moyens de détection ci-dessus sont pertinents dans le cadre de la détection d'une exploitation à l'aide des codes publiés le 29 juin 2021.

En complément, il pourrait être utile de tracer :

  • l’évènement numéro 11 du fournisseur "Microsoft-Windows-Security-Mitigations/KernelMode", qui pourra être utilisé afin d’identifier le chargement d’une bibliothèque dynamique (dll) non signée (champs SignatureLevel et ImageName) par le processus spoolsv.exe (« ProcessPath:*\Windows\System32\spoolsv.exe »).
  • l’évènement numéro 7 du fournisseur "Microsoft-Windows-Sysmon/Operational" avec une configuration appropriée de System Monitor pour identifier le chargement de bibliothèque (dll) par le processus spoolsv.exe ("Image:\C:\Windows\System32\spoolsv.exe") depuis le répertoire de pilote (champ "ImageLoaded:C:\Windows\System32\spool\drivers\*") avec le champ "Signed" à false
  • [16 juillet 2021] L’évènement numéro 808 du fournisseur "Microsoft-Windows-PrintService/Admin" indique qu'une erreur est survenue lors du chargement d'un pilote (le chemin de la dll est mentionné par le champ PluginDllName). Un nom peu commun peut être considéré comme un marqueur. Note: l'enregistrement de cet évènement est activé par défaut.
  • [16 juillet 2021] Certaines valeurs non usuelles remontées par l’évènement numéro 13 du fournisseur "Microsoft-Windows-Sysmon/Operational" peuvent indiquer une exploitation. Par exemple : DriverVersion=0.0.0.0, DriverDate=01/01/1601 ou encore Manufacturer=(Empty). L'installation d'un pilote d'imprimante avec une valeur "Manufacturer" vide est une action devant être considérée comme suspecte. De plus, si les clés "Configuration File" et "Data File" contiennent la même valeur, cela peut-être considéré comme une exploitation réussie. Note : la configuration doit être modifiée pour surveiller les modifications de registre dans HKLM\System\CurrentControlSet\Control\Print\Environments\Windows x64\Drivers\Version-* par spoolsv.exe. Une règle Sigma peut être consultée en suivant le lien [5].
  • [16 juillet 2021] Les codes d'exploitation publiques montrent un caractère déterministe permettant une mise en détection à l'aide de l’évènement numéro 316 du fournisseur "Microsoft-Windows-PrintService/Operational". En effet, le champs Param1 contient le nom du driver (1234, Mimikatz…) et le champs Param4 les valeurs de pDriverPath, pConfigFile, pDataFile. On s’intéressera particulièrement à une valeur suspecte de pDataFile ou de Param1. Quand l'exploitation est réussie, pConfigFile et pDataFile ont la même valeur : la DLL malveillante. Note : cet évènement n'est pas activé par défaut, il s'active de la façon suivante : wevtutil.exe sl "Microsoft-Windows-PrintService/Operational" /e:True. Une règle Sigma peut être consultée en suivant le lien [6].

Enfin, l’éditeur met à disposition un ensemble d’informations pour les utilisateurs de la solution Microsoft 365 Defender [2].

Solution

[05 janvier 2022] La vulnérabilité CVE-2021-36958 a été corrigée dans le Patch Tuesday de septembre 2021 : https://www.cert.ssi.gouv.fr/avis/CERTFR-2021-AVI-710/.

[16 juillet 2021] Le CERT-FR actualisera cette alerte lorsqu'un correctif sera disponible pour la vulnérabilité CVE-2021-36958.

[11 août 2021] Microsoft a publié un correctif pour la vulnérabilité CVE CVE-2021-34481. Le CERT-FR recommande son installation dans les plus brefs délais.

[16 juillet 2021] Le CERT-FR actualisera cette alerte lorsqu'un correctif sera disponible pour la CVE CVE-2021-34481.

[08 juillet 2021 14h30] Le CERT-FR recommande très fortement d'appliquer le correctif sans délai, même si celui-ci semble corriger uniquement l'exécution de code arbitraire à distance et non l'escalade de privilège en local.

En outre, il est obligatoire de respecter la recommandation de l'éditeur concernant la fonctionnalité "Point and Print" en s'assurant que, si les clés de registre existent (ce n'est pas le cas par défaut), celles-ci sont bien définies avec les valeurs suivantes :

  • la clé de registre NoWarningNoElevationOnInstall (HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers\PointAndPrint) doit être absente ou égale à 0 (DWORD)
  • la clé de registre NoWarningNoElevationOnUpdate (même emplacement) doit être absente ou égale à 0 (DWORD)

[06 juillet 2021] L'éditeur a publié des correctifs pour les versions maintenues de son système d'exploitation, à l'exception des versions Windows 2012 R2, Windows 2016 et Windows 10 Version 1607 pour lesquelles un correctif sera publié ultérieurement.

[08 juillet 2021] Des correctifs sont désormais disponibles pour toutes les versions maintenues de Microsoft Windows.

Important : Il convient de noter que les versions qui ne sont plus maintenues, telles que Windows 10 Version 1903, sont affectées par la vulnérabilité mais ne seront pas corrigées.

Documentation