Entre juin et juillet 2021, deux vulnérabilités ont été découvertes autour du service d’impression des machines Microsoft. Le point sur une double vulnérabilité Microsoft critique.
Le contexte des vulnérabilités PrintNightmare
Entre le 8 juin et le 6 juillet, Microsoft a publié deux correctifs autour de vulnérabilités portant sur le service d’impression. La CVE-2021-1675 est une vulnérabilité décrite comme un LPE, Local Privilege Escalation, tandis que la CVE-2021-34527 est, elle, une vulnérabilité RPE, Remote Privilege Escalation.
La deuxième vulnérabilité Microsoft est particulièrement inquiétante, car elle concerne un service activé par défaut sur toutes les machines Windows (postes et serveurs, ainsi que contrôleur de domaine). Et il a été rapporté que des exploitations étaient déjà disponibles.
Les détails techniques des vulnérabilités PrintNightmare
La vulnérabilité Microsoft est situé dans le service spoolsv.exe, et plus précisément dans la fonction RpcAddPrinterDriverEx(). Cette fonction est utilisée pour l’ajout de pilotes sur un serveur d’impression. Elle a la particularité d’être appelé via RPC (Remote Procedure Call).
Le fonctionnement est simple : le client appelle la fonction, avec en paramètre un nom de fichier (le driver) et un chemin d’accès (path, au format UNC). Cette fonction « charge » dans le spooler ce driver qui peut être stocké sur n’importe quel partage réseau accessible par le serveur.
La vulnérabilité réside donc dans la possibilité de contourner la vérification des privilèges nécessaires à l’appel de cette fonction via un flag spécifique dans « dwFileCopyFlags ». Ainsi, il n’est pas nécessaire d’être un utilisateur à privilège pour charger des drivers, potentiellement malveillants. Dans le cadre de cette vulnérabilité, le driver se présente sous la forme d’une bibliothèque exécutable (DLL) qui sera chargée par le spooler d’impression et exécutée avec le compte SYSTÈME. À noter qu’il est tout de même nécessaire d’être un utilisateur du domaine, ce qui limite la portée de l’attaque.
Le reste de l’attaque dépend ensuite de la charge malveillante de la bibliothèque qui est chargée, qui peut être un dropper de malware ou un outil de prise de main à distance.
Note importante : par défaut, ce service est activé dans tout système Windows, éditions Server inclus, et tout système non durci est donc vulnérable.
Les protections Stormshield face aux vulnérabilités PrintNightmare
Les solutions Stormshield Network Security (SNS) et Stormshield Endpoint Security (SES) permettent de bloquer les attaques exploitants ces vulnérabilités Microsoft ; voici le détail de ces protections.
Protections avec Stormshield Network Security
Du fait de la nature de la vulnérabilité, les requêtes RPC utilisées pour l’exploitation présentent les mêmes caractéristiques qu’une requête DCE/RPC légitime. Il est d'ores et déjà possible, avec la protection applicative native sur les protocoles DCE/RPC, de bloquer toutes les requêtes « RpcAddPrinterDriverEx », ce qui a pour effet de bord de bloquer également les requêtes légitime. Cette protection se configure ici : Protection Applicative > Protocoles > Protocoles Microsoft > Microsoft RPC (DCE/RPC) > Services MS-RPC prédéfinis > Microsoft RPC service spools
Par ailleurs, nous avons développé spécifiquement la signature dcerpc:request:data.10, qui est automatiquement mise à jour via Stormshield Auto-update et qui a pour effet d’identifier spécifiquement les requêtes « RpcAddPrinterDriverEx » malveillantes, qui spécifient en paramètre la combinaison de flags « APD_COPY_ALL_FILES | APD_INSTALL_WARNED_DRIVER | APD_COPY_FROM_DIRECTORY », nécessaire à l’exploitation.
Les autres requêtes, qui ne précisent pas cette combinaison, ne seront pas impactées.
Il est fortement conseillé d’adapter les actions de cette signature selon votre environnement, car la politique par défaut ne bloque uniquement que sur le profil high et internet.
Protections avec Stormshield Endpoint Security
En l’état de la connaissance de la menace, les solutions Stormshield Endpoint Security 7.2 et Stormshield Endpoint Security Evolution permettent de bloquer l’exploitation de cette vulnérabilité grâce à un ensemble de règles dédiées, fournies sur l’espace MyStormshield. Ces jeux de règles comprennent, pour les deux versions :
- Une interdiction de la communication sur le réseau pour le processus spoolsv.exe ;
- Une interdiction de connexion vers des partages réseau pour spoolsv.exe ;
- Une interdiction d’accès aux clés registre spécifiques à certains drivers utilisés par des outils malveillants exploitant cette vulnérabilité.
En plus des règles déjà citées ci-dessus, l’avancée technologique spécifique de SES Evolution permet aussi d’affiner ces règles et d’ajouter des barrières de protection supplémentaires. Ce jeu de règles comprend :
- Un blocage de la création de processus enfants par spoolsv.exe ;
- Un blocage du chargement de code exécutable basée sur le propriétaire du module.
L’usage de ces jeux de règles est conseillé jusqu’à l’application d’un patch par Microsoft venant corriger ces vulnérabilités. Il faut cependant noter que certaines règles peuvent restreindre le fonctionnement légitime des serveurs d’impression.
Autres recommandations face aux vulnérabilités PrintNightmare
Désactivation des services de Spooler
Il est nécessaire de vérifier et d’arrêter les services de Spooler d’impression sur les serveurs qui n’en ont pas besoin, notamment les Active Directory. Pour cela, il faut désactiver le service Spooler (spoolsv.exe) au démarrage : Set-Service -Name Spooler -StartupType Disabled, et ensuite arrêter le service : Stop-Service -Name Spooler
Au niveau des postes utilisateurs, il faut désactiver la prise en compte des demandes d’impression distantes. Il est possible de le faire via GPO en modifiant le paramètre « Autoriser le spouleur d’impression à accepter les connexions des clients » en « Désactivé » en suivant le chemin suivant : Configuration ordinateur > Modèle d’administration > Imprimantes.
Mise à jour des serveurs
Il est primordial d’effectuer les mises à jour des serveurs concernés (i.e. disposant d’un service Spooler d’impression actif).
Les KB Microsoft sont les suivantes :
- KB5004945 pour Windows Server 20H2, Windows Server 2004, Windows 10 20H2, Windows 10 2004, Windows 10 21H1 ;
- KB5004946 pour Windows 10 1909 ;
- KB5004947 pour Windows Server 2019, Windows 10 1809 ;
- KB5004950 pour Windows 10 ;
- KB5004948 pour Windows Server 2016 et Windows 10 1607 ;
- KB5004951 et KB5004953 pour Windows Server 2008 R2 et Windows 7 ;
- KB5004956 et KB5004960 pour Windows Server 2012 ;
- KB5004954 et KB5004958 pour Windows Server 2012 R2 et Windows 8.1 ;
- KB5004955 et KB5004959 pour Windows Server 2008 SP2.
À noter que les versions non maintenues par Microsoft n’auront pas de correctifs.