PrintNightmare : comprendre et corriger la faille critique du spouleur d’impression Windows

printnightmare corriger la faille de securite de windows

Une divulgation accidentelle qui a mis le feu aux poudres

Le 29 juin 2021, des chercheurs en sécurité de l’entreprise chinoise Sangfor publient sur GitHub un proof-of-concept détaillant comment exploiter une vulnérabilité dans le spouleur d’impression de Windows. Leur intention était de présenter cette recherche à la conférence Black Hat, prévue quelques semaines plus tard. Le problème : ils pensaient, à tort, que Microsoft avait déjà publié un correctif. Ce malentendu sur l’état du patch a suffi à déclencher l’une des crises de sécurité les plus mal gérées de 2021.

Les chercheurs ont retiré leur dépôt dès que l’erreur a été identifiée, mais le code avait déjà été forké et redistribué par d’autres utilisateurs. En quelques heures, une méthode d’exploitation fonctionnelle circulait librement. Le nom « PrintNightmare » s’est imposé rapidement, à la fois pour désigner la faille et le chaos communicationnel qui a suivi.

Ce type d’incident illustre un risque récurrent dans la coordination de divulgation responsable : une confusion sur le calendrier de publication d’un patch peut transformer une recherche académique en outil opérationnel pour des attaquants. GitHub a beau permettre de supprimer un dépôt, les forks et les archives de tiers agissent comme des miroirs persistants.

Deux failles sous un même nom : ce que CVE-2021-1675 et CVE-2021-34527 ne partagent pas

Le patch du Patch Tuesday de juin 2021 concernait la CVE-2021-1675, une élévation de privilèges locale dans le spouleur d’impression. Microsoft l’avait d’abord classée comme peu critique, avant de revoir sa classification. Ce correctif ne couvrait pas la vulnérabilité que les chercheurs de Sangfor venaient de rendre publique.

Cette seconde faille a reçu son propre identifiant : CVE-2021-34527. Elle touche la fonction RpcAddPrinterDriverEx() du service Windows Print Spooler et permet, elle, une exécution de code à distance, pas seulement une élévation locale. C’est cette distinction qui a créé la confusion : des administrateurs système ayant déjà appliqué le patch de juin ont cru être protégés, alors qu’ils ne l’étaient pas contre le vecteur le plus dangereux.

Les deux CVE partagent la même composante logicielle affectée, mais leurs vecteurs d’exploitation et leur sévérité diffèrent. La CVE-2021-34527 a reçu un score CVSS de 8,8 sur 10. Elle a rendu obsolète, dans les faits, tout plan de réponse bâti uniquement autour du premier correctif.

Ce qu’un attaquant peut faire concrètement avec cette faille

La CVE-2021-34527 ouvre deux scénarios d’exploitation distincts. Le premier : un attaquant disposant déjà d’un accès réseau à une machine Windows peut envoyer une requête RPC malveillante au spouleur d’impression pour faire exécuter un DLL arbitraire avec des privilèges SYSTEM. Le second : un utilisateur local sans droits d’administration peut passer SYSTEM par la même voie, ce qui rend la faille utile pour la phase de post-exploitation après un premier accès.

Dans un réseau d’entreprise, cette combinaison facilite la propagation latérale. Un attaquant qui compromet un poste de travail peut cibler n’importe quelle machine du réseau sur laquelle le spouleur est actif et joignable. Les groupes de ransomware ont documenté ce type d’usage dès l’été 2021. Le groupe Vice Society, notamment, a intégré PrintNightmare dans sa chaîne d’attaque pour se déplacer entre segments réseau.

L’impact est encore plus large quand le spouleur tourne sur un serveur d’impression centralisé ou, pire, sur un contrôleur de domaine. Dans ce cas, l’exécution de code à distance débouche directement sur une compromission complète du domaine Active Directory, sans étape intermédiaire.

Désactiver le spouleur d’impression : quand c’est la seule option viable

Avant la publication du patch out-of-band, Microsoft a recommandé une seule mesure d’atténuation : désactiver le service Print Spooler sur les machines qui n’en ont pas besoin. En PowerShell, cela prend deux commandes :

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

Cette approche est radicale mais efficace. Sur un contrôleur de domaine ou un serveur sans rôle d’impression, le spouleur n’a généralement aucune raison de fonctionner. En revanche, pour les postes de travail et les serveurs d’impression dédiés, désactiver le service revient à bloquer toute impression locale et réseau. Les équipes IT ont dû arbitrer en urgence entre sécurité et continuité opérationnelle.

Pour les environnements qui ne pouvaient pas se passer d’impression, Microsoft a également suggéré de restreindre l’accès au spouleur via des règles de pare-feu pour bloquer les ports RPC entrants, réduisant ainsi la surface d’attaque sans couper le service. Cette mesure partielle atténue le risque d’exploitation à distance sans l’éliminer complètement.

Appliquer le correctif de Microsoft : ce qu’il faut vérifier après installation

Microsoft a publié un patch d’urgence hors cycle le 6 juillet 2021, couvrant Windows 7, Windows Server 2008, Windows 10 et Windows Server 2019, entre autres. Ce type de mise à jour hors Patch Tuesday est rare et signale le niveau de priorité accordé à la faille. Les mises à jour portaient des numéros KB distincts selon la version de Windows : KB5004945 pour Windows 10 20H1/20H2/21H1, par exemple.

Après l’installation, deux paramètres de stratégie de groupe méritent attention. Le premier, « Point and Print Restrictions », contrôle qui peut installer des pilotes d’impression depuis un serveur distant. Par défaut, avant le patch, ce paramètre permettait à des utilisateurs non administrateurs d’installer des pilotes, ce qui constituait le vecteur principal. Le patch modifie ce comportement et affiche désormais une invite d’élévation de privilèges dans ces cas.

Le second paramètre à vérifier est RestrictDriverInstallationToAdministrators, introduit via une mise à jour ultérieure. Activé, il interdit à tout compte non administrateur d’installer un pilote d’impression, quel que soit le contexte. Vérifiez l’état de ces deux paramètres dans gpedit.msc ou via votre console de gestion des stratégies de groupe après déploiement du patch. Un simple redémarrage du service ou de la machine ne suffit pas à confirmer que la protection est effective.

Les environnements Active Directory : une surface d’attaque à surveiller de près

Le risque PrintNightmare prend une dimension différente dans un environnement Active Directory. Un contrôleur de domaine qui exécute le spouleur d’impression expose le compte SYSTEM du DC sur le réseau. Compromettre ce compte revient à contrôler l’annuaire dans sa totalité : création de comptes, modification de stratégies, extraction des hachages de mots de passe via DCSync.

Le service Print Spooler est activé par défaut sur les contrôleurs de domaine dans la plupart des versions de Windows Server, même quand aucune imprimante n’y est connectée. C’est un héritage de compatibilité que peu d’organisations ont pensé à corriger avant l’été 2021. La recommandation de désactivation sur les DC est aujourd’hui un point standard des benchmarks CIS pour Windows Server.

Les équipes qui gèrent des environnements hybrides avec des politiques de sécurité déployées via Intune peuvent distribuer les paramètres de restriction du spouleur à grande échelle via des profils de configuration, sans intervention manuelle poste par poste. Cette approche est cohérente avec un durcissement continu plutôt qu’une réponse ponctuelle à un incident.

Pour les organisations qui maintiennent des configurations de sécurité matérielle strictes sur leurs postes, le durcissement logiciel du spouleur s’inscrit dans la même logique de réduction de la surface exposée. L’audit régulier des services actifs sur les DC reste l’un des contrôles les plus simples à automatiser et les plus souvent négligés dans les audits de sécurité internes.