30. Juni 2021, 23:40
Lesezeit: ca. 3 Min

Ein Sommernachts-Drucker-Alptraum  UPDATE

Admins von Firmennetzen mit Printservern stehen derzeit ungeschützt da. Die von Microsoft im Juni behobene Schwachstelle CVE-2021-16751 beseitigt nicht die neue “PrintNightmare” Schwachstelle CVE-2021-345272. Wiederholt offenbaren sich die Schwächen der festen Patchdays im Mictrosoft Updatekonzept. Mit einem “out-of-Band” Update hat Microsoft am 06.07.2021 ein Update veröffentlicht. Aus nicht ersichtlichen Gründen kommt dieses im Paket mit mit einem Flash-Removal-Package3.

Leider behebt der Patch nicht alle Möglichkeiten, da dieser zwar UNC-Quellen mit beginnenden \ \ (ohne Leerzeichen) blockt, aber leider die weniger bekannte Schreibweise \ ?? \UNC\ (ohne Leerzeichen) nicht. Offensichtlich kennen die Microsoft-Entwickler Ihre eigenen UNC-Namenskonventionen nicht.

Diese krude Konstruktion zur Abbildung von UNC-Quellen mit den Fragezeichen ist ein Relikt aus vergangenenen DOS-Zeiten und jedem nicht zugänglich, der kein DOS und den Befehl SUBST4 mehr kennt. In der Win32-Welt wurde der SUBST-Befehl mit der API-Methode DefineDOSDevice zur Wahrung der Rückwärtskompatibiliät ergänzt. Bis heute steht diese jedem low-privileged Benutzer zum mappen eines tief verschachteltem Verzeichnisses mit einem Laufwerksbuchstaben zur Verfügung. Für mehr Hintergrundwissen und der genauen Funktionsweise ist dieser Google Project-Zero Blog von James Forshaw aus dem Jahr 2018 lesenswert.5

Wie funktioniert PrintNightmare?

Mit PrintNightmare kann jeder unprivilegierter Domänenbenutzer einem Windows-Server über die Druckereinbindung ausführbare DLLs unterschieben und Systemrechte erlangen. Die Architektur der Druckereinbindung und Treiberverwaltung stammt aus den späten 90ern und wurde seither kaum verändert. Eine Bilderserie zu genau diesem Thema habe ich erst kürzlich veröffentlicht.6.

Benjamin Delphy, bekannter Sicherheitsforscher und Autor von mimikatz, sagt in einem Tweet7, dass ein voll-gepatchter Windows 2019 Stand-Alone Server zunächst nicht verwundbar sei und erst durch dcpromo oder durch Hinzufügen von freigegebenen Druckern verwundbar wird. Ein weiterer Hinweis auf uralte und von Microsoft ungetestete Verfahren, die in neueren Windows-Versionen übernommen werden.

Seit gestern kursiert ein detaillierter PoC8 und ein Script9 auf GitHub und zeigt weitere Details zur Einbindung. Es ist damit zu rechnen, dass in den kommenden Tagen Malware-Autoren Ihre Schadsoftware damit anpassen werden, um sich besser in Netzen lateral zu bewegen.

Workarounds

Die empfohlene Nicht-Lösung lautet auf den Druckerspooler-Dienst bis zum Erscheinen eines Patches zu verzichten10. Kein leichtes Unterfangen in Domains, wo die Drucker üblicherweise am DC oder extra Windows-Printserver angeboten werden. In den wenigsten Netzen dürfte dieses meiner Einschätzung nach einfach umsetzbar sein.

Eine andere Lösung sei es für den Spooler-Treiberordner C:\Windows\System32\spool\drivers die SYSTEM nur Lese-Rechte zu gewähren11. Diese Lösung kann nur ein Workaround sein, da neue Drucker und Benutzerprofile mit Druckern so nicht mehr eingerichtet werden können.

Die eindeutig bessere Lösung und Gesamtstrategie für jeden Windows-Admin und Unternehmen ist es, überall wo möglich, auf freie Linux-Lösungen gesetzt zu haben und künftig zu setzen. Gerade im Druckerbereich ist das schnell und einfach umsetzbar und seit Jahrzehnten bewährt. CUPS-Printserver laufen in zahlreichen Druckereien, auf jedem besseren Heimrouter und zahlreichen Hardware-Printservern. Ein zentrales Management lässt sich mit Ansible und vergleichbaren Lösungen umsetzen. Das Wichtigste: Die Quelltexte und Verfahren stehen jedem offen zur Prüfung zur Verfügung und unterliegen so einem laufenden Verbesserungsprozess. Ganz offensichtlich ist das bei Microsoft und generell bei Closed-Source Software nicht gegeben, wenn Gammelcode aus einer aktuellen, zunächst nicht verwundbaren Windows-Version ein Sicherheitsrisiko macht.

Windows ist strukturell kaputt.12

Update vom 01.07.2021

Info von Benjamin Delphy ergänzt

Update vom 02.07.2021

Weitere Informationen ergänzt

Update vom 07.07.2021

Microsoft-Patch wurde veröffentlicht

Update vom 08.07.2021

Verweis auf Google Project Zero und aus dem Microblog einen Blog gemacht


  1. https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-1675 ↩︎

  2. https://msrc.microsoft.com/update-guide/vulnerability/CVE-2021-34527 ↩︎

  3. https://support.microsoft.com/de-de/topic/july-6-2021-kb5004945-os-builds-19041-1083-19042-1083-and-19043-1083-out-of-band-44b34928-0a71-4473-aa22-ecf3b83eed0e ↩︎

  4. https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/subst ↩︎

  5. https://googleprojectzero.blogspot.com/2018/08/windows-exploitation-tricks-exploiting.html ↩︎

  6. https://blog.jakobs.systems/blog/20210626-windows11/ ↩︎

  7. https://twitter.com/gentilkiwi/status/1410412026992775175#m ↩︎

  8. https://github.com/afwu/PrintNightmare ↩︎

  9. https://github.com/cube0x0/CVE-2021-1675 ↩︎

  10. https://github.com/LaresLLC/CVE-2021-1675 ↩︎

  11. https://www.heise.de/news/Jetzt-handeln-Angreifer-nutzen-die-Drucker-Luecke-in-Windows-bereits-aus-6127265.html ↩︎

  12. https://blog.jakobs.systems/micro/20200825-windows-cmd/ ↩︎

© 2021 Tomas Jakobs - Impressum und Datenschutzhinweis