PrintNightmare
Produits et Services PRODUITS & SERVICES

La vulnérabilité PrintNightmare : comment s’en protéger ?

PrintNightmare (CVE-2021-34527) est un bug Windows zero-day critique qui permet l'exécution de code à distance.

Il affecte toutes les machines Windows encore prises en charge, notamment les systèmes endpoint et les serveurs. Pour obtenir plus d’informations sur ce bug, n’hésitez pas à parcourir notre article dédié.

Au 1er juillet 2021, il n’y avait toujours pas de patch officiel pour corriger ce bug. Compte tenu de la gravité de ce dernier, nous pensons que Microsoft publiera un correctif dès que possible.

Les SophosLabs travaillent donc en priorité sur le développement d’une protection contre PrintNightmare et ont d’ailleurs publié deux signatures IPS pour Sophos XG Firewall et Sophos SG UTM : 57876 et 57877. Ces signatures ciblent les appels RpcAddPrinterDriver où la destination reflète une mise à niveau du pilote comme observé dans les Preuves de Concept disponibles.

La détection de fichiers statiques a été publiée pour les exécutables des Preuves de Concept (PoC) connues :

  • cpp version : Exp/20211675-A
  • c# version : Exp/20211675-B

Quoi  faire ?

Option 1 : désactivez le spouleur d’impression (Print Spooler) partout où vous le pouvez et limitez l’accès aux services spouleur le plus possible au niveau des machines Windows où il ne peut vraiment pas être désactivé.

Option 2 : désactivez l’impression à distance entrante via la stratégie de groupe.

Pour obtenir plus d’informations sur ces solutions de contournement, consultez le Guide Microsoft Security Update.

Comment identifier les périphériques exécutant le spouleur d’impression ?

Utilisation de Sophos EDR et Sophos XDR

Les clients Sophos EDR et Sophos XDR peuvent utiliser Live Discover pour lancer la requête ci-dessous afin d’identifier rapidement les appareils sur lesquels le service spouleur d’impression est en cours d’exécution. Si c’est le cas, l’ordinateur est alors potentiellement exposé à des vulnérabilités non corrigées telles que PrintNightmare.

SELECT display_name, status, start_type, user_account,
CASE
   WHEN status = 'RUNNING' THEN ' Exposed to unpatched vulnerabilities inc. PrintNightmare'
   WHEN status = 'STOPPED' THEN ' NOT exposed to unpatched vulnerabilities inc. PrintNightmare'
   END AS SpoolerCheck,
CASE
   WHEN start_type = 'AUTO_START' THEN 'Set Spooler to DISABLED or DEMAND_START'
   END AS ServiceCheck
FROM services WHERE path = 'C:\Windows\System32\spoolsv.exe';

Votre requête devrait ressembler à celle présentée ci-dessous :

PrintNightmare

Cliquez pour agrandir

Les entreprises utilisant la protection Sophos gérée via Sophos Central peuvent activer gratuitement Sophos EDR pendant 30 jours à l’aide de la fonction Free Trials (Essais Gratuits) au niveau de leur console Sophos Central.

Utilisation de la commande Windows SC (Service Control/Contrôle des Services)

Pour voir si le service spouleur d’impression est en cours d’exécution sur votre ordinateur, vous pouvez utiliser la commande Windows SC (Contrôle des Services) à partir d’une fenêtre d’invite de commande, comme présenté ci-dessous :

C:\Users\duck>sc query spooler

SERVICE_NAME: spooler
        TYPE               : 110  WIN32_OWN_PROCESS  (interactive)
        STATE              : 4  RUNNING
                                (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

Vous pouvez empêcher le spouleur de démarrer tout seul, même après un redémarrage, avec la commande suivante :

C:\Users\duck>sc config spooler start= disabled

Notez qu’il ne doit pas y avoir d’espace entre le mot start et le caractère =, mais vous avez besoin d’un espace entre le signe = et le mot disabled. Vous devez démarrer votre invite de commande (CMD.EXE) en tant qu’administrateur pour reconfigurer les services.

Redémarrez et vous devriez voir les informations ci-dessous s’afficher :

C:\Users\duck>>sc query spooler

SERVICE_NAME: spooler
        TYPE               : 110  WIN32_OWN_PROCESS  (interactive)
        STATE              : 1  STOPPED
        WIN32_EXIT_CODE    : 1077  (0x435)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x0

Nous mettrons à jour cet article avec de plus amples informations dès que possible.

Billet inspiré de PrintNightmare vulnerability: what to do, sur le Blog Sophos.