Ran Harel

Mise à jour du 6 juillet 2021 : Microsoft a publié un correctif pour CVE 2021-34527, disponible ici.

Une autre semaine, une autre vulnérabilité critique. La dernière faille de sécurité critique est baptisée "PrintNightmare", en référence à deux vulnérabilités dans le service Windows Print Spooler - CVE 2021-1675 et CVE 2021-34527, publiées entre juin et juillet 2021.

CVE 2021-1675 est une vulnérabilité corrigée qui permet l'exécution de code à distance et l'élévation de privilèges sur les serveurs et ordinateurs utilisant le Print Spooler. CVE 2021-34527 permet également l'exécution de code à distance et l'élévation de privilèges sur le même service par des moyens quelque peu différents. (Mise à jour du 6 juillet 2021 : Microsoft a publié un correctif pour CVE-2021-34527.) À l'heure actuelle, la relation exacte entre les deux vulnérabilités n'est pas claire et on ne sait pas si le correctif était incomplet ou si une autre méthode d'attaque a été découverte.

Avant d'aller plus loin, commençons par l'essentiel - si vous ne l'avez pas déjà fait, désactivez tout service Windows Print Spooler fonctionnant sur un contrôleur de domaine. (Semperis' Directory Services Protector (DSP) comprend des indicateurs qui recherchent en permanence les risques et les signes de compromission, y compris les spoolers d'impression activés sur les contrôleurs de domaine).

Semperis Directory Services Protector analyse en permanence AD et émet des alertes sur les indicateurs d'exposition et de compromission, y compris un indicateur pour rechercher les contrôleurs de domaine avec le service de spooler d'impression actif en cours d'exécution.

Print Spooler est un service Windows activé par défaut dans tous les clients et serveurs Windows. Ce service gère les travaux d'impression en chargeant les pilotes d'imprimante, en recevant les fichiers à imprimer, en les mettant en file d'attente, en les planifiant, etc.

Le service Print Spooler est nécessaire lorsqu'un ordinateur est physiquement connecté à une imprimante qui fournit des services d'impression à d'autres ordinateurs du réseau. Il est possible d'utiliser des pilotes et des logiciels tiers (comme ceux proposés par les fabricants d'imprimantes), mais de nombreuses organisations s'appuient sur le service Print Spooler par défaut.

Sur les contrôleurs de domaine, les spouleurs d'impression sont principalement utilisés pour l'élagage des imprimantes, c'est-à-dire pour supprimer lesimprimantes qui ont été publiées dans Active Directory et qui ne sont plus disponibles sur le réseau. L'élagage des imprimantes est particulièrement important dans les grands environnements comportant de nombreuses imprimantes, car il permet de "nettoyer" la liste des imprimantes disponibles pour les utilisateurs du domaine. Pour que cette approche fonctionne, une stratégie de groupe appropriée doit être mise en place.

Du point de vue de la sécurité, le Print Spooler de Windows, et les imprimantes en général, constituent depuis de nombreuses années une cible juteuse pour les pirates. Le ver Stuxnet de 2010, utilisé contre les installations nucléaires iraniennes, a exploité une vulnérabilité dans le service pour escalader les privilèges et propager des logiciels malveillants sur le réseau. La même vulnérabilité du Print Spooler a refait surface en 2020 lorsque des chercheurs ont découvert de nouvelles façons de l'exploiter. Si l'on ajoute à cela le fait que les imprimantes sont notoirement piratables, il est peut-être temps de passer véritablement au zéro papier ?

Bogue du jour zéro de PrintNightmare

L'itération de juin 2021 de la vulnérabilité Print Spooler a commencé avec le Patch Tuesday de Microsoft de juin 2021 qui incluait un correctif pour la CVE 2021-1675, que Microsoft considérait comme une vulnérabilité d'escalade de privilèges avec une exploitation "moins probable" à l'époque - avec un score CVSS de 6.8 (Risque moyen). Microsoft a mis à jour cette CVE le 21 juin pour y inclure l'exécution de code à distance et a relevé le score CVSS à 7,8 (risque élevé). Quelques jours plus tard, un code d'exploitation PoC est apparu sur GitHub. Le code a été rapidement mis hors ligne mais a déjà été forké plusieurs fois.

Le 30 juin, il est apparu que le correctif n'était pas suffisant et que les systèmes entièrement corrigés restaient vulnérables à l'exécution de codes à distance et à l'élévation des privilèges au niveau SYSTEM. Le code d'exploitation original a été modifié, ce qui a rendu le correctif quelque peu in efficace.

Le 1er juillet, Microsoft a créé une nouvelle vulnérabilité, CVE 2021-34527. (6 juillet 2021 - Microsoft a publié un correctif).

Spooler d'impression dégradation de la vulnérabilité

La vulnérabilité d'exécution de code à distance du service Print Spooler tire parti de l'appel de fonction RpcAddPrinterDriver dans le service Print Spooler qui permet aux clients d'ajouter des fichiers dll arbitraires en tant que pilotes d'imprimante et de les charger en tant que SYSTEM (le contexte du service spooler).

Cette fonction est conçue pour permettre aux utilisateurs de mettre à jour les imprimantes à distance - par exemple, l'informaticien qui installe à distance votre toute nouvelle imprimante de bureau. Cependant, une faille logique dans le fonctionnement de cette fonction permet à n'importe quel utilisateur d'injecter sa propre dll non signée dans le processus, en contournant l'authentification ou la validation du fichier.

Atténuer le cauchemar de l'impression

Mise à jour du 7 juillet 2021 - Microsoft a publié un correctif pour CVE 2021-34527. Il est toujours recommandé de désactiver le service Print Spooler lorsqu'il n'est pas nécessaire. Vous pouvez désactiver le service Print Spooler sur tous vos DC (ou sur n'importe quelle machine, d'ailleurs) en utilisant le paramètre de stratégie de groupe sous Configuration de l'ordinateurParamètres WindowsParamètres de sécuritéServices système ou, mieux encore, en utilisant GP Preferences sous Configuration de l'ordinateurPréférencesPanneau de configurationParamètresServices. Une autre solution non officielle consiste à limiter l'accès au dossier du pilote à partir duquel le service est chargé. Cette opération doit être effectuée sur chaque serveur et n'a pas été entièrement testée à ma connaissance ; vous l'utiliserez donc à vos risques et périls.

Protection des contrôleurs de domaine

Les contrôleurs de domaine ne doivent jamais être utilisés comme serveurs d'impression. La seule raison légitime que je connaisse pour faire fonctionner Print Spooler sur un DC est l'élagage des imprimantes mentionné ci-dessus. Outre les nombreuses vulnérabilités de Windows Print Spooler, un vecteur d'attaque contre ce service, connu sous le nom de "bug de l'imprimante", permet à un attaquant qui peut compromettre une ressource avec une délégation Kerberos sans contrainte de compromettre également le DC avec les privilèges SYSTEM. Une bonne explication de cette attaque est disponible ici.

Surveiller en permanence les vulnérabilités telles que PrintNightmare

Chaque semaine, nous constatons l'existence de vulnérabilités dans les infrastructures informatiques couramment déployées. La brièveté du cycle entre la divulgation et l'armement nécessite une approche d'atténuation rapide qui comprend une surveillance continue de l'environnement combinée à une hiérarchisation des priorités et à des informations sur les mesures correctives à prendre.

Le produit de Semperis Directory Services Protector (DSP) comprend des indicateurs qui recherchent en permanence les risques et les signes de compromission dans les environnements d'identité hybrides (y compris la détection des spouleurs d'impression activés sur les contrôleurs de domaine) et fournit des priorités, des mesures et des conseils prescriptifs pour remédier à la situation.

Plus de ressources

Vous voulez en savoir plus sur la façon de lutter contre PrintNightmare, PetitPotam et d'autres nouvelles attaques ciblant Active Directory ? Écoutez Renforcer les défenses de l'Active Directory : Leçons tirées des attaques récentes telles que PrintNightmareun séminaire web gratuit à la demande animé par Sean Deuby, directeur des services de Semperis.