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
