Das Unternehmen Qualys eine weitere entfernte kritische SicherheitsanfĂ€lligkeit (CVE-2020-8794) im Mailserver , entwickelt im Rahmen des Projekts OpenBSD. Wie die Ende Januar entdeckte , ermöglicht das neue Problem die Remote-AusfĂŒhrung beliebiger Shell-Befehle auf dem Server mit Root-Rechten. Die Schwachstelle in der Version .
wird durch einen Fehler im Code verursacht, der die Zustellung von E-Mails an einen entfernten Mailserver durchfĂŒhrt (nicht im Code, der eingehende Verbindungen verarbeitet). Ein Angriff ist sowohl auf der Client- als auch auf der Serverseite möglich. Auf der Client-Seite ist ein Angriff in der Standardkonfiguration von OpenSMTPD möglich, in der OpenSMTPD Anfragen nur ĂŒber das interne Netzwerk-Interface (localhost) akzeptiert und E-Mails an externe Server sendet. Um die Schwachstelle auszunutzen, reicht es aus, dass OpenSMTPD wĂ€hrend der Zustellung einer E-Mail eine Verbindung zu einem von dem Angreifer kontrollierten Mailserver herstellt oder dass der Angreifer sich in die Verbindung des Clients einmischt (MITM oder Umleitung wĂ€hrend Angriffe ĂŒber DNS oder BGP).
FĂŒr einen Angriff auf der Serverseite muss OpenSMTPD so konfiguriert sein, dass es externe Netzwerk-Anfragen von anderen Mailservern entgegennimmt oder Drittanbieterdienste bedient, die eine Anfrage an beliebige E-Mails ermöglichen (z. B. BestĂ€tigungsformulare fĂŒr Adressen auf Websites). Zum Beispiel kann ein Angreifer eine Verbindung zum OpenSMTPD-Server herstellen und eine ungĂŒltige E-Mail (an einen nicht existierenden Benutzer) senden, die zu einer Antwort mit einem Fehlercode (Bounce) an den Server des Angreifers fĂŒhrt. Der Angreifer kann die Schwachstelle ausnutzen, wenn OpenSMTPD eine Verbindung zur Zustellung einer Benachrichtigung an den Server des Angreifers herstellt. Ein wĂ€hrend des Angriffs eingefĂŒgter Shell-Befehl wird in eine Datei geschrieben, die mit Root-Rechten ausgefĂŒhrt wird, wenn OpenSMTPD neu gestartet wird, daher muss der Angreifer auf den Neustart von OpenSMTPD warten oder einen Absturz von OpenSMTPD initiieren.
Das Problem besteht in der Funktion mta_io() im Code zur Verarbeitung mehrzeiliger Antworten, die vom entfernten Server nach dem Herstellen der Verbindung zurĂŒckgegeben werden (zum Beispiel â250-ENHANCEDSTATUSCODESâ und â250 HELPâ). In OpenSMTPD wird angenommen, dass die erste Zeile eine dreistellige Zahl und Text enthĂ€lt, die durch das Zeichen â-â getrennt sind, wĂ€hrend die zweite Zeile eine dreistellige Zahl und Text enthĂ€lt, die durch ein Leerzeichen getrennt sind. Wenn der zweite Zeile nach der dreistelligen Zahl kein Leerzeichen und kein Text folgt, wird der Zeiger, der zur Bestimmung des Textes verwendet wird, auf das Byte gesetzt, das auf das Zeichen â\0â folgt, und es wird versucht, in den Datenpuffer zu kopieren, die nach dem Ende der Zeile folgen.
Auf Anfrage des OpenBSD-Projekts wurde die Veröffentlichung der Details zur Ausnutzung der Schwachstelle bis zum 26. Februar verschoben, um den Benutzern die Möglichkeit zu geben, ihre Systeme zu aktualisieren. Das Problem ist seit Dezember 2015 im Code vorhanden, die Ausnutzung zur AusfĂŒhrung von Code mit Root-Rechten ist jedoch seit Mai 2018 möglich. Forscher haben einen funktionierenden Exploit-Prototyp entwickelt, der erfolgreich in OpenSMTPD-Bauten fĂŒr OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (testing) und Fedora 31 getestet wurde.
In OpenSMTPD gibt es auch eine weitere Schwachstelle (CVE-2020-8793), die es einem lokalen Benutzer ermöglicht, die erste Zeile einer beliebigen Datei im System zu lesen. Zum Beispiel kann man die erste Zeile der Datei /etc/master.passwd lesen, in welcher der Hash des Root-Benutzers gespeichert ist. Die Schwachstelle ermöglicht es auch, den gesamten Inhalt einer Datei zu lesen, die einem anderen Benutzer gehört, wenn sich diese Datei im selben Dateisystem wie das Verzeichnis /var/spool/smtpd/ befindet. Das Problem ist in vielen Linux-Distributionen nicht ausnutzbar, in denen der Wert von /proc/sys/fs/protected_hardlinks auf 1 gesetzt ist.
Das Problem ist das Ergebnis einer unvollstĂ€ndigen Behebung , die wĂ€hrend eines Audits durch Qualys im Jahr 2015 angesprochen wurde. Ein Angreifer kann erreichen, dass sein Code mit den Rechten der Gruppe â_smtpqâ ausgefĂŒhrt wird, indem er die Variable âPATH=.â setzt und ein Skript mit dem Namen makemap im aktuellen Verzeichnis platziert (das Dienstprogramm smtpctl ruft makemap ohne spezifische Pfadangabe auf). Nachdem er Zugang zur Gruppe â_smtpqâ erhalten hat, kann der Angreifer dann einen Race-Condition-Zustand erzeugen (eine groĂe Datei im Offline-Verzeichnis erstellen und das Signal SIGSTOP senden) und bis zum Abschluss der Verarbeitung die Datei im Offline-Verzeichnis gegen einen harten symbolischen Link austauschen, der auf die Zieldatei verweist, deren Inhalt gelesen werden soll.
Bemerkenswert ist, dass in Fedora 31 die Schwachstelle sofortige Root-Rechte gewĂ€hrt, da der Prozess smtpctl mit dem Setgid-Flag root und nicht setgid smtpq versehen ist. Mit dem Zugriff auf die Gruppe root kann der Inhalt von /var/lib/sss/mc/passwd ĂŒberschrieben und vollstĂ€ndiger Root-Zugriff auf das System erhalten werden.
Quelle: opennet.ru
