Bufor wydruku w Windowsie jest ciekawą rzeczą. Wprowadzony już chyba w Windows 95 pozostaje z nami nawet w Dziesiątce. Przy czym cały czas można znaleźć w nim przeróżne błędy bezpieczeństwa.
To już nie pierwszy raz, kiedy drukarki mogą stanowić dla Windowsów problem. W 2016 roku okazało się, że sterowniki tych urządzeń wcale nie muszą być sterownikami, tylko dowolnym kodem. Luka opatrzona identyfikatorem CVE-2016-3238 nie wydaje się jednak być aż tak poważna, jak występujący teraz PrintingNightmare (CVE-2021-34527).
Nawiasem mówiąc, PrintingNightmare może nie jest taki groźny jak Stuxnet, który też wykorzystywał błędy Spoolera już w 2010 roku, ale to nadal 8.8 w skali CVSS3!
Shut it down, shut it down!
PrintingNightmare to podatność, którą można wykorzystać na dwa różne sposoby - zdalnie wykonać kod (Remote Code Execution - RCE) lub lokalnie podnieść sobie uprawnienia (Local Privilege Escalation). W tym przypadku można dostać uprawnienia nawet nie Administratora, lecz samego SYSTEMu.

Exploit został opublikowany podobno przypadkowo.
We deleted the POC of PrintNightmare. To mitigate this vulnerability, please update Windows to the latest version, or disable the Spooler service. For more RCE and LPE in Spooler, stay tuned and wait our Blackhat talk. https://t.co/heHeiTCsbQ
— zhiniang peng (@edwardzpeng) June 29, 2021
Opublikowany kod na GitHubie, który potem wycofano, został niestety już skopiowany przez innych. Nic już nie mogło zatrzymać nadchodzącej małej katastrofy.

Zgodnie z chronologią wydarzeń znajdujemy się w momencie, gdzie exploit już wyciekł, a łatki jeszcze nie ma. Co robić, jak żyć?
Przede wszystkim - wyłączyć na serwerach usługę buforu wydruku. Można to zrobić Powershellem albo Zasadami grupy. Warto też zainstalować łatki od 0patch Team. A co na to Microsoft?
Wydanie łatki nic nie dało, nie dało nic.
Microsoft stosowną łatkę wydał. Szkoda, że na początku blokowała tylko zdalne wykonywanie kodu.
The Microsoft fix released for recent #PrintNightmare vulnerability addresses the remote vector - however the LPE variations still function. These work out of the box on Windows 7, 8, 8.1, 2008 and 2012 but require Point&Print configured for Windows 2016,2019,10 & 11(?). 🤦♂️ https://t.co/PRO3p99CFo
— Hacker Fantastic (@hackerfantastic) July 6, 2021
Potem jednak okazało się, że i "załatane" RCE można obejść.
Dealing with strings & filenames is hard😉
— 🥝 Benjamin Delpy (@gentilkiwi) July 7, 2021
New function in #mimikatz 🥝to normalize filenames (bypassing checks by using UNC instead of \\server\share format)
So a RCE (and LPE) with #printnightmare on a fully patched server, with Point & Print enabled
> https://t.co/Wzb5GAfWfd pic.twitter.com/HTDf004N7r
Aby zabezpieczyć się przed nową wersją ataku, można pobawić się zasadą "Point and Print Restrictions", ale nadal lepszym wyjściem jest całkowite wyłączenie usługi buforu wydruku.

Na co należy czekać?
Należy czekać, aż Microsoft weźmie się w garść i załata PrintingNightmare jak trzeba. Łatka KB5004945 okazała się być wydana za szybko, gdyż w prosty sposób można ją obejść. Do momentu "ogarnięcia się", należy zastosować ww. obejścia. Ciekawe, czy nową łatkę też trzeba będzie poprawiać.