CVE-2022-34689 macht Tausende von Windows Servern verwundbar. Ein funktionierender Proof-of-Concept ist öffentlich verfügbar.
Seht ihr oben links das grüne Schloss? Auf Betriebssystemen von Microsoft bedeutet das nicht mehr allzu viel. Die NSA und das britische NCSC fanden im letzten Jahr eine Sicherheitslücke in der CryptoAPI (crypt32.dll
) von Windows, die es Angreifern erlaubt, sich nach Belieben gültige Zertifikate zu generieren. Die zugewiesene CVE-Nummer ist CVE-2022-34689.
Never change a running system
Der Grund für die Lücke ist, dass Windows Zertifikate im Zwischenspeicher anhand ihres MD5-Fingerprints identifiziert. Bei MD5 handelt es sich um einen Hashing-Algorithmus, dessen Kollisions-Resistenz seit 2009 als gebrochen gilt. Das heißt, dass seit 14 Jahren MD5-Kollisionen bekannt sind.
Seit 2011 ist vom Einsatz von MD5 überall dort abzuraten, wo Kollisions-Resistenz von Bedeutung ist (RFC 6151). Das hält Microsoft jedoch nicht davon ab, den Algorithmus weiterhin zur Identifikation von Zertifikaten zu nutzen.
Laut Akamai seien über 99 % aller in Datenzentren sichtbaren Server nicht gepatcht und damit angreifbar, wenn auch nur bei Nutzung veralteter Software. Leider sind Systeme mit hohen Stabilitätsanforderungen – wie zum Beispiel Krankenhäuser – oftmals etwas hinterher mit ihren Patches. Der Blogpost bietet auch eine Demonstration sowie eine tiefer gehende technische Beschreibung als die hier folgende.
Wie Windows Zertifikate validiert
Wenn Windows ein Zertifikat empfängt, beginnt es damit zu prüfen, ob dieses bereits gecachet ist und damit schon validiert. Dazu wird der MD5-Fingerabdruck des empfangenen Zertifikates mit den im Speicher als validiert markierten abgeglichen.
Der Angriff beruht darauf, dass eine MD5-Kollision in wenigen Sekunden herbeigeführt werden und so ein zu einem bekannten Zertifikat passender Hash erstellt werden kann. Das generierte Zertifikat wird dann von Windows ohne Probleme als gültig akzeptiert.
Bei dieser Methode handelt es sich um ein extrem mächtiges Werkzeug für MITM Angriffe, vor denen beispielsweise ein VPN euch schützen kann. Gegen schlechte OpSec hilft aber auch das beste VPN nicht.
Patch von Microsoft ist verfügbar
Seit August letzten Jahres liefert Microsoft einen Patch aus und hat in den Oktober-Release-Notes den gefixten Bug bekannt gegeben. Wer es selbst ausprobieren möchte, kann den PoC Code auf GitHub finden. Wer einen Windows Server betreibt, sollte dringend prüfen, ob alle Updates installiert sind und gegebenenfalls manuell nachhelfen.