Oggi parleremo dell’ultima crisi di PrintNightmare riguardante gli utenti Windows e daremo alcuni consigli per proteggere il tuo PC. Si tratta di una vulnerabilità critica situata nella coda di stampa di Windows. La US Cybersecurity & Infrastructure Security Agency (CISA) ha rilasciato una dichiarazione al riguardo, e da allora tutti parlano di qualcos’altro. Oggi discutiamo di questo problema dalla A alla Z.
PrintNightmare: come è iniziato?
All’inizio di giugno, l’8, Microsoft ha pubblicato CVE-2021-1675, intitolato “Vulnerabilità di esecuzione del codice remoto dello spooler di stampa di Windows”. A quel tempo, sembrava essere una minaccia minore che era stata identificata prima di essere sfruttata e poteva essere facilmente risolta. Pertanto, non c’era motivo di preoccuparsi.
Quindi, le principali agenzie di sicurezza del mondo hanno iniziato a rilasciare dichiarazioni che avvertivano di un importante aggiornamento a CVE-2021-1675. Questi messaggi sollecitavano gli utenti e le organizzazioni ad adottare immediatamente misure per proteggersi da questa minaccia. Nello stesso lasso di tempo, Microsoft ha pubblicato la vulnerabilità CVE-2021-34527, che è soprannominata PrintNightmare.
Microsoft ha assegnato CVE-2021-34527 alla vulnerabilità legata all’esecuzione di codice in modalità remota che interessa lo spooler di stampa di Windows. Ottieni maggiori informazioni qui: https://t.co/OarPvNCX7O
— Microsoft Security Intelligence (@MsftSecIntel) 2 luglio 2021
A differenza di CVE-2021-1675, che ha ricevuto una valutazione ad alto rischio, PrintNightmare ha guadagnato, fin dall’inizio, la valutazione di vulnerabilità critica, poiché consente l’esecuzione di codice in modalità remota. Da allora, ci sono stati diversi aggiornamenti e Microsoft ha lavorato 24 ore su 24 su questo problema. Nel frattempo, e in attesa di una soluzione definitiva, abbiamo anche potuto trovare diverse raccomandazioni per mitigare i rischi.
Cos’è PrintNightmare?
Il problema risiede in una funzione della coda di stampa di Windows, nello specifico in RpAddPrinterDriverEx() che, come suggerisce il nome, permette l’installazione di una nuova stampante sul sistema. Sebbene il gestore di stampa non ne limiti l’accesso, qualsiasi utente autenticato può utilizzarlo in remoto.
Quindi qual è il problema se un utente è in grado di installare una stampante in remoto e cosa rende PrintNightmare così pericoloso? Quando parliamo di installazione di una stampante, ci riferiamo al suo driver. Se qualcuno può installare un driver senza autorizzazione, può contenere molti elementi dannosi. Pertanto, un utente malintenzionato che ottiene l’accesso a un sistema e utilizza RpAddPrinterDriverEx() per eseguire codice dannoso può aumentare i privilegi, inviare payload al sistema compromesso e persino assumere il controllo completo di un PC.
Il gestore di stampa è un componente presente in tutte le versioni di Windows, quindi Microsoft indica che qualsiasi installazione del suo sistema operativo è suscettibile di attacchi utilizzando PrintNightmare. Pertanto, qualunque sia la tua versione di Windows, in linea di principio il tuo sistema è esposto a PrintNightmare e, pertanto, dovresti adottare misure per proteggerti.
Come proteggersi da PrintNightmare?
Esiste già una patch Microsoft per riparare PrintNightmare, ma la verità è che non è efficace.
Ma prima di entrare in questo, dovremmo ricordare ciò che abbiamo menzionato all’inizio e distinguere tra CVE-2021-1675 e CVE-2021-34527. Per il primo, Microsoft ha già rilasciato correzioni che mitigano i rischi specifici di questa vulnerabilità. Tuttavia, queste patch non risolvono il problema associato a CVE-2021-34527.
D’altra parte, proprio ieri Microsoft ha rilasciato patch per PrintNightmare per diverse versioni di Windows, incluse alcune che ufficialmente non sono più supportate:
- KB5004945: Windows 10 20H1, 20H2 e 21H.
- KB5004946: Windows 10 versione 1909
- KB5004947: Windows 10 versione 1809 e Windows Server 2019
- KB5004949: Windows 10 versione 1803
- KB5004950: Windows 10 versione 1507
- KB5004951: Windows 7 SP1 e Windows Server 2008 R2 SP1
- KB5004958: Windows 8.1 e Windows Server 2012
- KB5004959: Windows Server 2008 SP2
Le cattive notizie hanno iniziato ad arrivare dopo questi rilasci, alcuni utenti affermano che la patch ufficiale è incompleta e non ha alcun effetto.
0Patch aveva rilasciato una patch non ufficiale che si era dimostrata efficace contro PrintNightmare, ma l’applicazione della patch ufficiale Microsoft mitiga l’effetto di quella sviluppata da 0patch, quindi il sistema è ancora una volta vulnerabile ad un attacco basato su questo problema di sicurezza:
Se stai usando 0patch contro PrintNightmare, NON applicare Windows Update del 6 luglio! Non solo non risolve il vettore di attacco locale, ma non risolve nemmeno il vettore remoto. Tuttavia, cambia localspl.dll, il che impedisce l’applicazione delle nostre patch che risolvono il problema. https://t.co/osoaxDVCoB
— 0patch (@0patch) 7 luglio 2021
Microsoft ha dichiarato di essere al lavoro sul problema ma nel frattempo la raccomandazione è di non consentire l’aggiornamento automatico di Windows se si sta utilizzando la patch di 0patch, poiché la protezione offerta dalla patch è già sufficiente. Un’altra possibilità è disabilitare i servizi di stampa non necessari su ciascun sistema. Ad esempio, i server, a meno che non siano server di stampa, dovrebbero avere questi servizi disabilitati per motivi di sicurezza. E per quanto riguarda gli endpoint, esattamente lo stesso, riduci al minimo i servizi attivi legati alla stampa, soprattutto se parliamo di sistemi dai quali non stampi mai.
Per verificare lo stato corrente del servizio della coda di stampa, dovremo aprire una console PowerShell e digitare Get-Service -Name Spooler nella riga di comando. Di conseguenza, otterremo lo stato attuale di esso. Nel caso in cui il servizio risultasse spento o disabilitato non dovremo preoccuparci, poiché la porta di PrintNightmare rimane chiusa su quel sistema. Nel caso in cui il servizio sia attivo ci sono due possibilità, purché non si parli di un server di stampa, nel qual caso queste misure non possono essere applicate, poiché il servizio smetterà di funzionare.
Il primo è senza dubbio il più drastico e possiamo usarlo solo se non stampiamo mai da quel sistema. Nella stessa console Powershell che utilizziamo per verificare lo stato del servizio, dovremo digitare i seguenti comandi:
Stop-Service -Name Spooler -Force
Set-Service -Name Spooler -StartupType Disabled
Il primo fermerà immediatamente il servizio di stampa di Windows, mentre il secondo modificherà la sua configurazione in modo che non venga caricato nuovamente dopo il riavvio del sistema. Quando Microsoft rilascia una patch che risolve definitivamente PrintNightmare, puoi riattivarla con questo comando;
Set-Service -Name Spooler -StartupType abilitato
In questo modo, dopo aver riavviato il sistema, sarai in grado di stampare di nuovo normalmente da quel sistema.
Il secondo metodo consiste nel disabilitare solo la funzione server di stampa del sistema. In questo modo sarai ancora in grado di stampare dal sistema, ma non avrà più la funzione di server di stampa per altri computer e dispositivi sulla rete. Per fare ciò, dovrai accedere all’Editor criteri di gruppo locale e, dovresti accedere a Criteri computer locale> Configurazione computer> Modelli amministrativi> Stampanti e cercare la voce Consenti a Print Job Manager di accettare le connessioni client.
Quindi fai doppio clic su di esso e controlla il suo stato, che dovrebbe essere Disabilitato per prevenire i rischi di PrintNightmare. Quindi, se è impostato su Non configurato o Abilitato, modificare questo valore e riavviare il sistema.
E se hai già installato la patch Microsoft per PrintNightmare?
È possibile che, nel momento in cui leggi questo, tu abbia già installato la patch ufficiale di Microsoft. Il problema è che non risolve il problema PrintNightmare. In tal caso dovrai apportare una modifica alle impostazioni del registro di Windows. Il modo più rapido per farlo è aprire una console (prompt dei comandi) e digitare il seguente comando:
“HKEY_LOCAL_MACHINE Software Policies Microsoft Windows NT Printers PointAndPrint” / v RestrictDriverInstallationToAdministrators / t REG_DWORD / d 1 / f
Digitalo esattamente come mostrato, puoi fare copia e incolla. Tieni presente che, sebbene sia diviso a causa della sua lunghezza, è un singolo comando.
In linea di massima, queste misure dovrebbero già fornire il livello di sicurezza necessario, anche se è vero che dovremo ancora attendere che Microsoft pubblichi una soluzione definitiva.