🏢Active DirectoryGPOComplianceNetworkMonitoring

PrintNightmare, Point-and-Print, Rafforzamento GPO, Active Directory: la correzione a due valori che nessuno ha completato

Fermare lo spooler sui DC ha eliminato un bersaglio privilegiato e lasciato aperto il percorso di installazione dei driver su ogni workstation. PrintNightmare è una correzione a due valori — ecco la metà che la maggior parte dei parchi macchine non ha mai completato.

Younes AZABARDi Younes AZABAR16 min di lettura
PrintNightmare, Point-and-Print, Rafforzamento GPO, Active Directory: la correzione a due valori che nessuno ha completato

PrintNightmare Point-and-Print Rafforzamento GPO Active Directory: cosa copre

Nel luglio 2021 il settore ha convertito su un'unica istruzione: fermare il servizio Spooler di stampa sui domain controller. Quel consiglio era corretto, ed era incompleto. Il controllo che chiude davvero la falla è PrintNightmare Point-and-Print rafforzamento GPO Active Directory, e si riduce a due valori di registro che la maggior parte dei parchi macchine non ha mai controllato insieme. La documentazione ufficiale Microsoft per CVE-2021-34527 risponde a due domande di seguito. «I domain controller sono noti per essere interessati dalla vulnerabilità? I domain controller sono interessati se il servizio Spooler di stampa è abilitato.» E subito dopo: «I sistemi client e i server membri che non sono domain controller sono noti per essere interessati dalla vulnerabilità? Sì. Tutte le edizioni di Windows sono interessate.» Fermare un servizio su tre o quattro DC ha eliminato un bersaglio privilegiato e lasciato intatto il percorso di installazione dei driver su ogni workstation e server membro posseduto.

PrintNightmare è il nome pubblico di CVE-2021-34527, una falla di esecuzione di codice remoto nello Spooler di stampa che Microsoft classifica come Critica con un punteggio base CVSS 3.1 di 8.8 (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H). Al momento della pubblicazione, la valutazione di sfruttabilità di Microsoft indicava Divulgata pubblicamente: Sì; Sfruttata: Sì. La CISA l'ha aggiunta al proprio catalogo delle vulnerabilità sfruttate note il 2021-11-03 con una scadenza di remediation al 2022-05-03, e la contrassegna con knownRansomwareCampaignUse: Known. Non è un rilievo teorico.

Viene anche spesso confusa con CVE-2021-1675, corretta dall'aggiornamento dell'8 giugno 2021. La risposta Microsoft nelle FAQ di quel CVE è netta: «È questa la vulnerabilità indicata pubblicamente come PrintNightmare? No, Microsoft ha assegnato CVE-2021-34527 a PrintNightmare. CVE-2021-1675 è simile ma distinta da CVE-2021-34527.» Entrambe sono nel catalogo KEV della CISA ed entrambe sono contrassegnate per uso noto in campagne ransomware.

⚠️

⚠️ Attenzione: la patch è una precondizione, non il controllo. Microsoft afferma chiaramente in KB5005010 che dopo aver installato l'aggiornamento, si «deve confermare» uno stato preciso di registro e criteri di gruppo. Un parco macchine completamente patchato con il criterio sbagliato resta un parco macchine vulnerabile.

Come funziona: due valori di registro, un solo verdetto

Entrambi i valori risiedono sotto la stessa chiave, documentata in KB5005010 e KB5005652:

HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Printers\PointAndPrint

ValoreTipoStato sicuroCosa significa l'altro stato
RestrictDriverInstallationToAdministratorsREG_DWORD1, o non definito / assente0 consente ai non amministratori di installare driver firmati e non firmati su un server di stampa
NoWarningNoElevationOnInstallREG_DWORD0, o non definito1 «rende il sistema vulnerabile per progettazione» (MSRC)
UpdatePromptSettingsREG_DWORD0, o non definitoValori diversi da zero «rendono vulnerabili i dispositivi su cui è stato installato l'aggiornamento per CVE-2021-34527» (KB5005010)

L'interazione tra i primi due è la parte più spesso trascurata, e KB5005652 la documenta con precisione.

Impostare RestrictDriverInstallationToAdministrators a 1 — o lasciarlo non definito — «richiederà privilegi di amministratore per installare qualsiasi driver di stampante tramite Point and Print. Questa chiave di registro sovrascrive tutte le impostazioni dei criteri di gruppo delle restrizioni Point and Print.»

Impostarlo a 0 «consente ai non amministratori di installare driver firmati e non firmati su un server di stampa, ma non sovrascrive le impostazioni dei criteri di gruppo Point and Print.»

Quindi la sovrascrittura funziona in un solo verso. Finché il valore è 1, un criterio Point and Print mal configurato non può riaprire l'installazione dei driver. Nel momento in cui qualcuno lo imposta a 0 — e KB5005652 descrive esplicitamente amministratori che fanno esattamente questo, «per consentire ai non amministratori di installare e aggiornare i driver» — la GPO delle restrizioni Point and Print diventa l'unica cosa che si frappone tra un utente normale e un driver installato come SYSTEM.

Il riepilogo Microsoft su questo compromesso è una frase, ripetuta due volte in KB5005652: «Non esiste alcuna combinazione di mitigazioni equivalente all'impostazione di RestrictDriverInstallationToAdministrators a 1.»

Il valore predefinito ha cambiato verso, e gli aggiornamenti non lo impongono

Due date contano qui, entrambe da KB5005652:

  • Gli aggiornamenti rilasciati il 6 luglio 2021 o successivamente hanno fornito un valore predefinito di 0 (disabilitato) per RestrictDriverInstallationToAdministrators.
  • Gli aggiornamenti rilasciati il 10 agosto 2021 o successivamente hanno fornito un valore predefinito di 1 (abilitato).

Questa è la buona notizia. La trappola è nello stesso articolo: «Gli aggiornamenti di Windows non imposteranno né modificheranno questa chiave di registro.» Un dispositivo esplicitamente impostato a 0 a luglio o agosto 2021 — tramite uno script, una baseline, o un elemento di registro GPP scritto per sbloccare la stampa — mantiene quello 0 attraverso ogni aggiornamento cumulativo successivo, indefinitamente. Il valore predefinito protegge solo gli host su cui nessuno ha scritto il valore.

La catena di attacco

Il percorso vulnerabile è quello dell'installazione dei driver, non quello della stampa. KB5005010 traccia la linea in modo esplicito: le correzioni «non interessano direttamente lo scenario predefinito di installazione dei driver Point and Print per un dispositivo client che si connette e installa un driver di stampante per una stampante di rete condivisa... Questo scenario è diverso dallo scenario vulnerabile in cui un attaccante tenta di installare un driver dannoso sul server di stampa stesso, sia localmente che in remoto.»

Passo 1 - Trovare un host il cui spooler accetta l'installazione di driver

Ogni host Windows che esegue spoolsv.exe è un candidato, non solo i server di stampa e non solo i DC. Le FAQ Microsoft confermano che i server membri e i client rientrano nell'ambito. Un attaccante con qualsiasi credenziale di dominio enumera gli host in cui lo spooler è raggiungibile — che, su un parco workstation configurato con le impostazioni predefinite, sono la maggior parte. Si noti il vettore CVSS: PR:L, privilegi bassi richiesti. Un account utente standard è sufficiente.

Passo 2 - Verificare se gli avvisi sono scomparsi

Se il bersaglio ha RestrictDriverInstallationToAdministrators = 0 e NoWarningNoElevationOnInstall = 1, l'installazione del driver procede senza un prompt di elevazione. Sono esattamente i due valori che KB5005010 chiede di confermare, e esattamente lo stato che MSRC descrive come vulnerabile per progettazione.

Passo 3 - Installare il driver

Il servizio spooler «esegue in modo scorretto operazioni privilegiate sui file» (descrizione MSRC per CVE-2021-34527). Un driver installato tramite questo percorso viene eseguito nel contesto dello spooler. Secondo la stessa descrizione MSRC, un attaccante «potrebbe eseguire codice arbitrario con privilegi SYSTEM... installare programmi; visualizzare, modificare o eliminare dati; oppure creare nuovi account con diritti utente completi.»

Passo 4 - Convertire un SYSTEM locale in accesso al dominio

SYSTEM su una workstation è l'inizio di una catena di movimento laterale, non la fine di un incidente — contenerlo è esattamente il compito di un confine di livelli (tiering) che regge davvero. Ecco perché la remediation limitata ai DC è così fuorviante: un attaccante non ha bisogno dello spooler del domain controller se ogni laptop del parco macchine concede SYSTEM a qualsiasi utente autenticato. I gruppi delegati che un tempo gestivano la stampa meritano di essere controllati contemporaneamente — prima degli aggiornamenti di luglio 2021, secondo KB5005010, «il gruppo di sicurezza operatori di stampa poteva installare driver di stampante firmati e non firmati su un server di stampa», e quei gruppi di operatori portano un privilegio permanente che nessuno rivede.

🚨 Pericolo: lo spooler ha continuato a produrre bug Critici dopo la correzione di luglio. Solo nell'agosto 2021 sono stati aggiunti CVE-2021-36936 (Critica, CVSS 8.8, divulgata pubblicamente) e CVE-2021-36958 (Importante, CVSS 7.8, divulgata pubblicamente). Trattare lo spooler come superficie di attacco da rimuovere dove possibile, non come un componente da patchare e dimenticare.

La GPO che la riapre silenziosamente

Ecco la parte che trasforma un problema risolto di nuovo in un problema attivo, e non è ipotetica — è nella documentazione Microsoft attuale.

Microsoft Learn pubblica un articolo di risoluzione dei problemi, «I criteri di restrizione Point and Print vengono ignorati in Windows» (originariamente KB 2307161), per un sintomo operativo familiare: «Si applicano i criteri di restrizione Point and Print. Un utente standard tenta di installare una stampante di rete. In questo scenario, i criteri di restrizione Point and Print vengono ignorati, e all'utente vengono richieste credenziali amministrative.»

La causa dichiarata è di per sé un rilievo reale e utile: «Windows ignora i criteri di restrizione Point and Print quando vengono implementati nel contesto dei criteri utente.» Il criterio si è spostato da User Configuration\Policies\Administrative Templates\Control Panel\Printers a Computer Configuration\Policies\Administrative Templates\Printers. Se il tuo audit legge la posizione lato utente, stai leggendo un'impostazione che Windows scarta.

Ma leggi i passaggi di risoluzione. Sotto «Come consentire agli utenti di connettersi solo a server di stampa attendibili specifici», l'articolo indica: «Nella casella Durante l'installazione dei driver per una nuova connessione, seleziona Non mostrare avviso o prompt di elevazione.» E la nota conclusiva va oltre: «puoi disabilitare i messaggi di avviso di installazione dei driver e i prompt di elevazione disabilitando completamente i criteri di restrizione Point and Print. Questa azione disabilita la sicurezza avanzata di installazione dei driver di stampante.»

Questa indicazione è l'immagine speculare di KB5005010, che chiede di impostare entrambe le caselle di prompt su «Mostra avviso e prompt di elevazione» in modo che i valori di conferma risultino NoWarningNoElevationOnInstall = 0 e UpdatePromptSettings = 0. Una pagina Microsoft rafforza i prompt; un'altra, che porta ancora una data di revisione 2026, guida un amministratore a disattivarli per far funzionare il deployment delle stampanti.

Nessuno deve agire in malafede perché questo accada. Un ticket helpdesk segnala che gli utenti non riescono ad aggiungere la stampante del terzo piano. Qualcuno trova l'articolo di risoluzione dei problemi, imposta il prompt su «Non mostrare avviso o prompt di elevazione», e collega la GPO. La stampa funziona. Sei mesi dopo, il parco macchine è tornato nella configurazione che MSRC definisce vulnerabile per progettazione, e nessun ciclo di patch lo segnalerà mai — perché gli host sono completamente patchati. È la stessa classe di deriva che rende le configurazioni errate GPO un vettore di attacco così duraturo.

Il verdetto di KB5005010 sullo stato combinato non lascia spazio a interpretazioni: se i valori di registro sono 0/non definiti e la GPO delle restrizioni Point and Print non è configurata, «allora non sei vulnerabile a CVE-2021-34527 e non è necessaria alcuna azione ulteriore. Se anche solo una delle due condizioni non è vera, sei vulnerabile.»

Rilevazione

La rilevazione qui ha due metà: catturare il tentativo di sfruttamento nel log eventi, e catturare la deriva di configurazione prima che qualcuno ci provi.

Rilevazione tramite log eventi

L'analisi del team Splunk Threat Research, I Pity the Spool: Detecting PrintNightmare CVE-2021-34527, documenta i canali e gli ID evento da acquisire:

IndicatoreID eventoCanaleCosa indica
Aggiunta di un driver di stampante316Microsoft-Windows-PrintService/OperationalRegistra il driver aggiunto e le DLL a cui fa riferimento — l'artefatto diretto del percorso di installazione driver
Lo spooler di stampa non è riuscito a caricare un modulo plug-in808Microsoft-Windows-PrintService/AdminSi attiva sui tentativi di caricamento falliti, dove emerge lo sfruttamento non riuscito
Errore di caricamento modulo plug-in (variante)4909Microsoft-Windows-PrintService/AdminStessa classe di errore, registrata sotto questo ID su alcune build
DLL scritta sotto spool\drivers\x64\n/a (eventi file/immagine)Sysmon ImageLoaded / CallTracespoolsv.exe che scrive o carica DLL dal percorso dello spooler driver

Il rilievo operativo, nelle parole di Splunk, è che «i log del servizio di stampa potrebbero non essere abilitati per impostazione predefinita». Un avviso che non hai mai scritto perché il canale era vuoto non è una rilevazione. Verifica e abilita il canale — /e:<Enabled> su wevtutil set-log «abilita o disabilita un log», secondo il riferimento wevtutil:

wevtutil gl Microsoft-Windows-PrintService/Operational
wevtutil sl Microsoft-Windows-PrintService/Operational /e:true

Se stai ampliando la copertura dei log più in generale, lo stesso ragionamento si applica a ogni canale che le tue rilevazioni presuppongono esistente — vedi le categorie di criteri di controllo che nessuno abilita prima di averne bisogno e gli ID evento di sicurezza AD che contano davvero.

Rilevazione della configurazione

Questa è la metà a più alto rendimento, perché trova l'esposizione anziché lo sfruttamento. Leggi i tre valori su ogni host. L'assenza della chiave è lo stato sicuro sugli aggiornamenti dal 10 agosto 2021 in poi, quindi -ErrorAction SilentlyContinue che non restituisce nulla è un successo, non un errore:

$key = 'HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\Printers\PointAndPrint'
Get-ItemProperty -Path $key -ErrorAction SilentlyContinue |
    Select-Object RestrictDriverInstallationToAdministrators,
                  NoWarningNoElevationOnInstall,
                  UpdatePromptSettings

Segnala un host quando RestrictDriverInstallationToAdministrators è 0, o quando NoWarningNoElevationOnInstall o UpdatePromptSettings è diverso da zero. Eseguilo su workstation e server membri, non solo su server di stampa e DC — questo errore di ambito è l'intero argomento di questo articolo.

Separatamente, conferma se lo spooler è comunque in esecuzione. Questo è il primo passo di Microsoft stessa nella soluzione alternativa per CVE-2021-34527:

Get-Service -Name Spooler

Sui domain controller in particolare, uno spooler in esecuzione è un rilievo a sé stante, indipendente dal criterio di installazione dei driver — coperto nella nostra checklist di igiene di rete dei domain controller.

Remediation

💡

💡 Suggerimento: nessuna delle due modifiche di registro seguenti richiede un riavvio. KB5005652: «Non è richiesto alcun riavvio durante la creazione o la modifica di questo valore di registro.» KB5005010: «Questa modifica dei criteri non richiede il riavvio del dispositivo né del servizio spooler di stampa dopo l'applicazione di queste impostazioni.»

1. Impostare RestrictDriverInstallationToAdministrators a 1 ovunque. Questo è il controllo più forte, e quello che sovrascrive tutto il resto. Il comando seguente è citato letteralmente da KB5005652 e deve essere eseguito da un prompt elevato:

reg add "HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\Printers\PointAndPrint" /v RestrictDriverInstallationToAdministrators /t REG_DWORD /d 1 /f

2. Preferire la via dei Criteri di gruppo per la scala del parco macchine. Dopo aver installato gli aggiornamenti rilasciati il 12 ottobre 2021 o successivamente, KB5005652 documenta un criterio nativo: vai su Configurazione computer > Modelli amministrativi > Stampanti e imposta Limita l'installazione dei driver di stampante agli amministratori su «Abilitato». Microsoft indica che questo «imposterà il valore di registro RestrictDriverInstallationToAdministrators a 1.»

3. Correggere il criterio delle restrizioni Point and Print nell'ambito Computer. Secondo KB5005010, in Configurazione computer > Modelli amministrativi > Stampanti, imposta Restrizioni Point and Print su «Abilitato», quindi imposta sia Durante l'installazione dei driver per una nuova connessione sia Durante l'aggiornamento dei driver per una connessione esistente su «Mostra avviso e prompt di elevazione». Verifica successivamente che NoWarningNoElevationOnInstall = 0 e UpdatePromptSettings = 0. Configurare questo «non disabilita la funzionalità Point and Print» — la stampa continua a funzionare.

4. Controllare la trappola dell'ambito utente. Poiché Windows ignora questi criteri nel contesto dei criteri utente, verifica se una GPO ereditata li imposta ancora sotto User Configuration\Policies\Administrative Templates\Control Panel\Printers e ti sta dando una falsa sicurezza.

5. Se genuinamente non puoi usare il valore predefinito, sovrapponi le mitigazioni parziali — e sappi che sono parziali. KB5005652 le elenca per gli ambienti che devono operare con RestrictDriverInstallationToAdministrators = 0, ribadendo che nessuna combinazione equivale a impostarlo a 1:

  • Verifica che RpcAuthnLevelPrivacyEnabled sia 1 o non definito in HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Print. Questa è la modalità di Enforcement di CVE-2021-1678 documentata in KB4599464; la sua fase di enforcement è iniziata il 14 settembre 2021, e un valore di 0 è documentato come «Non consigliato... i dispositivi non sono protetti.»
  • Abilita Gli utenti possono usare Point and Print solo verso questi server nel criterio delle restrizioni Point and Print ed elenca i server di stampa attendibili per nome completamente qualificato, separati da punto e virgola.
  • Abilita Package Point and Print - Server approvati per limitare i client a driver compatibili con i pacchetti, da server nominati.

6. Rimuovere lo spooler dove non è necessario. La soluzione alternativa MSRC per CVE-2021-34527 resta valida, e su un domain controller la risposta consiste solitamente nel rimuovere del tutto il servizio:

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

Se serve la stampa locale ma non l'erogazione della stampa in ingresso, l'Opzione 2 di MSRC consiste nel disabilitare il criterio «Consenti allo spooler di stampa di accettare connessioni client» sotto Configurazione computer / Modelli amministrativi / Stampanti. A differenza delle modifiche di registro sopra, «è necessario riavviare il servizio Spooler di stampa affinché il criterio di gruppo abbia effetto.»

⚠️

⚠️ Attenzione: sequenzia gli aggiornamenti. Secondo KB5005652, prima di installare gli aggiornamenti rilasciati il 14 settembre 2021 o successivamente sui server di stampa, i client di stampa devono già disporre di un aggiornamento rilasciato il 12 gennaio 2021 o successivamente — altrimenti quei client smetteranno di stampare. Se agli utenti vengono richieste credenziali a ogni processo di stampa anziché solo all'installazione del driver, KB5005652 attribuisce ciò a un problema di fuso orario risolto dagli aggiornamenti del 12 ottobre 2021, oppure a una discordanza tra nome file/versione del driver tra il client e il server di stampa.

Dove si colloca questo argomento in una coda di remediation più ampia è trattato nella nostra guida su cosa bloccare per primo in Active Directory e come convalidarlo, e nella panoramica più ampia su come controllare la sicurezza di Active Directory e dimostrare la remediation.

Come EtcSec rileva questo problema

EtcSec verifica questa configurazione come tre rilievi distinti, perché falliscono in modo indipendente e vengono corretti da team diversi.

PRINTNIGHTMARE_VULNERABLE (Critico) valuta se il prompt di elevazione è disabilitato a livello di GPO — lo stato di NoWarningNoElevationOnInstall — anziché il solo livello di patch. PA038_POINT_AND_PRINT_ELEVATION_OFF (Alto) legge lo stesso valore di registro attraverso la lente di conformità ANSSI PA-038: fallisce quando nessuna GPO nell'ambito impone l'elevazione, segnalando esattamente la configurazione che MSRC descrive come vulnerabile per progettazione. DC_SPOOLER_ACCESSIBLE (Alto) copre il problema più ristretto e meglio conosciuto di uno Spooler di stampa ancora in esecuzione su un domain controller.

Il motivo per cui esistono questi tre rilievi è il divario con cui si è aperto questo articolo. Un parco macchine può superare il controllo DC e fallire negli altri due — spooler fermato su quattro domain controller, prompt di elevazione disabilitati su quattromila workstation. L'etc-collector legge i valori effettivi dall'ambito Configurazione computer (Machine\Registry.pol) su ogni host nell'ambito, così che un criterio che Windows ignora silenziosamente nel contesto utente non risulti conforme.

ℹ️

ℹ️ Nota: EtcSec verifica automaticamente questa vulnerabilità durante ogni audit AD/Azure. Esegui un audit gratuito per verificare il tuo ambiente.

Fonti

Ogni affermazione tecnica sopra riportata è tratta dalle seguenti fonti, ciascuna verificata rispetto alla fonte live:

Esplora le pagine di identity security collegate a questo tema