Vulnérabilité affectant Windows Print Spooler – CVE-2021-34527

Microsoft a officiellement reconnu la vulnérabilité d’exécution de code à distance affectant Windows Print Spooler et lui a attribué une nouvelle CVE : CVE-2021-34527. Cela a permis de lever la confusion qui régnait autour de ce bug en confirmant qu’il est « similaire mais distinct de la vulnérabilité qui est assignée CVE-2021-1675 » qui a été corrigée en juin.

" Il y a dix ans, un bug d'escalade des privilèges dans le spouleur d'imprimante de Windows a été utilisé dans Stuxnet, un ver notoire qui a détruit les centrifugeuses d'enrichissement nucléaire de l'Iran et infecté plus de 45 000 réseaux. Au cours des dix dernières années, le spooler a encore un flot ininterrompu de vulnérabilités divulguées, dont certaines ne sont pas connues du monde entier, mais qui sont autant de bombes cachées pouvant conduire à des catastrophes."

  • 08/06/2021 : PATCH Microsoft – Microsoft publie des correctifs concernant des vulnérabilités critiques de type 0-day.

    Une de ces vulnérabilités, la CVE-2021-1675, qui affecte le service Windows Print Spooler, un composant logiciel du système d’exploitation Microsoft Windows activé par défaut.

    Risques selon Microsoft : Escalade de privilèges en local

    Score CVSSv3 : 7.8

  • 29/06/2021 : PoC – Deux chercheurs présentent une nouvelle façon d’exploiter cette vulnérabilité, cette fois à distance et ce malgré le correctif proposé par Microsoft.

    Risques selon les chercheurs : Remote Code Execution (RCE) & Elevation de privilèges

  • 01/07/2021 : Microsoft publié un avis (ici) de sécurité indiquant que cette vulnérabilité « zero day » est différente de la vulnérabilité CVE-2021-1675 initialement corrigée lors du Patch Tuesday du 08 juin 2021.

    Nouvelle vulnérabilité identifié sous CVE-2021-34527

    Risques : Permet à un attaquant d’exécuter du code arbitraire à distance avec les droits SYSTEM.

    Score CVSSv3 : 8.2

    Microsoft a signalé que cette vulnérabilité était actuellement exploitée !


Qu’est-ce que le service Windows Print Spooler ?

Le service Spouleur d’impression (ou Windows Print Spooler, en anglais) est un fichier exécutable (« spoolsv.exe« ) lancé (par défaut) lors du démarrage de l’OS Windows. C’est un service de spooling destiné à la gestion des tâches d’impression pour ce système d’exploitation.

La faille du service Windows Print Spooler

La vulnérabilité PrintNightmare (CVE-2021-34527) est liée à la fonctionnalité d’ajout de pilote sur un serveur d’impression dans le protocole MS-RPRN.

Afin d’ajouter un pilote sur un serveur d’impression, le client doit tout d’abord vérifier qu’il peut faire appel (en RPC) à la fonction « RpcAddPrinterDriver » et s’assure que les fichiers du pilotes sont accessibles par le serveur d’impression. Par la suite, il doit créer un objet qui contient les informations du pilote à installer (notamment les fichiers « pDriverPath », « pDataFile » et « pConfigFile »).

Une fois la fonction « RpcAddPrinterDriver » appelée, elle copie les fichiers spécifiés dans « pDriverPath », « pDataFile » et « pConfigFile » dans le répertoire « C:\Windows\System32\spool\drivers\x64\3\new » puis dans le répertoire « C:\Windows\System32\spool\drivers\x64\3 ». Les fichiers correspondant à « pDriverPath » et « pConfigFile » sont ensuite chargés. Ces deux variables sont au format UNC, ce qui empêche de fournir des chemins du réseau de partage par exemple. Cependant, cette vérification n’est pas faite sur la vairiable « pDataFile ».

L’attaquant peut donc téléverser une bibliothèque dynamique malveillante dans le répertoire « C:\Windows\System32\spool\drivers\x64\3 » à l’aide de la fonction RpcAddPrinterDriver. Il suffit de fournir un chemin au format UNC (exemple : \IP_Attaquant\share\Evil.dll) dans la variable « pDataFile » accessible par la machine cible.

Il suffira ensuite à l’attaquant de charger cette bibliothèque malveillante avec une autre fonction RpcAddPrinterDriverEx (fonction permettant de rétrograder ou de mettre à jour un pilote sur un serveur d’impression). Cette fonction prend en entrée les deux mêmes premiers arguments ainsi qu’une liste d’options, « dwFileCopyFlags », permettant de spécifier comment gérer les copies des fichiers du pilote à remplacer. L’option « APD_COPY_ALL_FILES » permet de forcer la copie des fichiers sans tenir compte de leur horodatage. C’est cette option qui est utilisée pour l’attaque.

Une fois la bibliothèque chargée, l’attaquant a accès au système avec les privilèges : NT AUTHORITY\SYSTEM

Pour avoir plus de détails sur cette faille, vous pouvez consulter :

Aide à la détection

Une des manières de détecter une intrusion par cette brèche est de surveiller le processus spoolsv.exe sur les machines sur lesquelles ce processus ne peut être désactivé. Toute création de processus enfant rattaché à spoolsv.exe doit être analysé.

Le CERT-FR recommande fortement de ne jamais activer le service spouleur d’impression sur les contrôleurs de domaine.

Plus d’information sur : Bulletin d’alerte du CERT-FR

Solutions de contournement

À l’heure actuelle, aucune mise à jour de sécurité n’est disponible (et aucune date de publication n’est connue) pour remédier à cette vulnérabilité de type « 0-day ». Toutefois, Microsoft a proposé des solutions de contournement pour se protéger contre l’exploitation de cette vulnérabilité. La CISA (Cybersecurity and Infrastructure Security Agency) a également publié une notification encourageant les administrateurs à désactiver le service Windows Print Spooler sur les serveurs qui ne sont pas utilisés pour l’impression. Microsoft propose une autre solution de contournement pour conserver la possibilité d’imprimer localement : la désactivation de l’impression distante entrante via la stratégie de groupe (GPO).

Vous avez un doute sur l’état du service de votre Print Spooler ?

Il est possible de déterminer si le service Print Spooler est en cours d’exécution en lançant votre Powershell en mode administrateur et en tapant la commande suivante :

Get-Service -Name Spooler

Si le Spooler d’impression est en cours d’exécution (Running) ou si le service n’est pas désactivé, sélectionnez l’une des options suivantes pour désactiver le service Print Spooler ou pour désactiver l’impression à distance entrante par le biais de la stratégie de groupe (GPO):

Option 1 : Désactiver le service Print Spooler

Si la désactivation du service Spooler d’impression est appropriée pour votre entreprise, utilisez les commandes PowerShell suivantes :

Stop-Service -Name Spooler -Force
Set-Service -Name Spooler -StartupType Disabled

Note : La désactivation du service Print Spooler empêche l’impression locale et à distance.

Option 2 : Désactiver l’impression à distance entrante via la stratégie de groupe

  • Allez dans Computer Configuration / Administrative Templates / Printers
  • Désactiver « Allow Print Spooler to accept client connections »

Vous devez redémarrer le service Print Spooler pour que la stratégie de groupe prenne effet.

Cette politique bloquera le vecteur d’attaque à distance en empêchant les opérations d’impression à distance entrantes. Le système ne fonctionnera plus comme un serveur d’impression, mais l’impression locale sur un périphérique directement connecté sera toujours possible.

Pour plus de détails : Use Group Policy to control printers

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Créez un site ou un blog sur WordPress.com

Retour en haut ↑

%d blogueurs aiment cette page :