Mit Domain-Based Authentication in unternehmensinterne Gruppen eindringen

Was ergeben ein uraltes Protokoll, eine millionenfach benutzte Bibliothek und eine Authentifizierung per Maildomain? Zugang zum internen Github-Netzwerk.

In Pocket speichern vorlesen Druckansicht 5 Kommentare lesen

(Bild: KI, Collage iX)

Lesezeit: 3 Min.
Von
  • Lukas Grunwald

Der Sicherheitsforscher Gareth Heyes führte auf der Black Hat USA 2024 vor, wie schnell Web-Anwendungen bereit sind, einer Unternehmens-E-Mail-Adresse den Zugang zu Tickets und Gruppen des jeweiligen Unternehmens zu gewähren. Der Haken: Das tun sie auch, wenn die Adresse gut gefälscht ist.

Um das zu bewerkstelligen, muss man allerdings tief in die Funktionsweise des Simple Mail Transfer Protocol (SMTP) hinuntersteigen, was der PortSwigger-Forscher in seinem Vortrag "Splitting the email atom: exploiting parsers to bypass access controls" tat (der ganze Vortrag hier). Kern des Problems sind die quasi antiken RFCs, die den Standard für E-Mail-Adressen bilden und in ihrer Gesamtheit eine unübersichtliche Gemengelage bilden.

So stieß Hayes überhaupt erst auf das Problem, als er während seiner Forschung zum Postfix- und Sourcemail-Quellcode mehr oder weniger zufällig eine Adresse beginnend mit einem Ausrufezeichen eingab, die in einen Backslash überging. Sie produzierte eine Delivery Status Notification (DSN) mit einem invaliden Host, was Heyes auf das fast vierzig Jahre alte Unix to Unix Copy Protocol (UUCP) zurückführen konnte. UUCP nutzt das Ausrufezeichen als Seperator, interpretiert die Adresse aber in umgekehrter Reihenfolge, sodass Sendmail die Domain und den User „verwechselte“. Heyes erste Entdeckung sah dabei so aus:

!#$%&'*+\/=?^_`{|}~-collab\@psres.net 
oastify.com!collab\@example.com 

Sendmail schickte die Mail tatsächlich nicht an example.com, sondern an oastify.com.

Damit öffnete Heyes die Büchse der Pandora. Er fand weitere Unstimmigkeiten und Methoden, die Empfänger-Adresse aus UTF-7, UTF-8 und BASE64 sowie Punycode (IDN) zusammenzusetzen. Im Besonderen benutzte er encoded-word, (RFC 2047) ein Mechanismus um Textteile in verschiedenen Zeichensätzen zu codieren. Der Grund dafür liegt in Ruby Mail.

Mit 508 Millionen Downloads ist diese Bibliothek nicht nur in zahlreichen Webseiten anzutreffen, sie decodierte vor allen Dingen UTF-7. Eine dieser Seiten war die in Ruby geschriebene Seite GitHub. Dort testete Heyes zum ersten mal seine Methode mit echten Firmenadressen wie microsoft.com, mozilla.com und github.com. Er versuchte, diese in seine Adresse zu kodieren und hatte damit Erfolg.

Mithilfe einer UTF-7 Codierung lässt sich die vorgetäuschte Domain zum Beispiel für das Umgehen von Zero Trust nutzen.

(Bild: PortSwigger)

Eine Stufe weiter ging er, als er versuchte, Cloudflares Zero Trust dazu zu bringen, seinen Domains zu vertrauen. Indem er GitHub als Identity Provider (IdP) benutzte, verschaffte er sich so Zugang zu jeder Seite, die Github als IdP einsetzte. Im weiteren Verlauf konnte er auch Supportzentren von Zendesk und GitLab Enterprise Servern kapern.

Seine Vorstöße sind allerdings nur die Spitze des Eisbergs, so Heyes. Es sei sicher möglich, sich auch falsche S/MIME Adressen zu besorgen oder andere bösartige Certificate-Authoroty-Tricks durchzuführen. Das Fazit von Heyes klingt dann aber eigentlich wieder sehr selbstverständlich: Niemals sollte man eine Maildomain für Authentifizierungs-Zwecke nutzen.

(kki)