Qualys eine weitere kritische Remote-Sicherheitsanfälligkeit (CVE-2020-8794) im Mailserver , entwickelt vom OpenBSD-Projekt. Wie die Ende Januar entdeckte , ermöglicht auch dieses neue Problem das Ausführen beliebiger Shell-Befehle auf dem Server mit Root-Rechten. Die Sicherheitsanfälligkeit im Release .
wird durch einen Fehler im Code verursacht, der für die Zustellung von E-Mails an einen entfernten Mailserver verantwortlich ist (nicht durch den Code, der eingehende Verbindungen verarbeitet). Ein Angriff ist möglich sowohl auf der Client- als auch auf der Serverseite. Auf der Client-Seite ist ein Angriff in der Standardkonfiguration von OpenSMTPD möglich, bei der OpenSMTPD nur Anfragen über die interne Netzwerkschnittstelle (localhost) annimmt und E-Mails an externe Server sendet. Um die Sicherheitsanfälligkeit auszunutzen, reicht es aus, dass OpenSMTPD während der Zustellung einer E-Mail eine Verbindung zu einem vom Angreifer kontrollierten Mailserver herstellt oder dass der Angreifer in die Verbindung des Clients eindringen kann (MITM oder Umleitung während DNS- oder BGP-Attacken).
Für einen Angriff auf der Serverseite muss OpenSMTPD so konfiguriert sein, dass es externe Netzwerkabfragen von anderen Mailservern akzeptiert oder Drittanbieterdienste bedient, die eine Anfrage an eine beliebige E-Mail-Adresse senden können (z. B. Bestätigungsformulare auf Websites). Ein Angreifer könnte sich beispielsweise mit dem OpenSMTPD-Server verbinden und eine falsche E-Mail (an einen nicht existierenden Benutzer) senden, was zu einer Fehlermeldung (Bounce) zurück an den Server des Angreifers führen würde. Der Angreifer könnte eine Schwachstelle ausnutzen, während OpenSMTPD eine Benachrichtigung an den Server des Angreifers zuliefert. Während des Angriffs eingefügte Shell-Befehle werden in eine Datei geschrieben, die mit Root-Rechten ausgeführt wird, wenn OpenSMTPD neu gestartet wird. Daher muss der Angreifer warten, bis OpenSMTPD neu gestartet wird, oder den Absturz von OpenSMTPD initiieren.
Das Problem besteht in der Funktion mta_io() im Code zur Analyse der mehrzeiligen Antwort, die vom entfernten Server nach dem Verbindungsaufbau zurückgegeben wird (z. B. „250-ENHANCEDSTATUSCODES“ und „250 HELP“). In OpenSMTPD wird davon ausgegangen, dass die erste Zeile eine dreistellige Zahl und Text enthält, die durch das Zeichen „-“ getrennt sind, und dass die zweite Zeile eine dreistellige Zahl und Text enthält, die durch ein Leerzeichen getrennt sind. Wenn in der zweiten Zeile nach der dreistelligen Zahl kein Leerzeichen und Text folgt, wird der Zeiger, der zur Bestimmung des Textes verwendet wird, auf das Byte nach dem Zeichen '\0' gesetzt, und es wird versucht, in den Datenpuffer zu kopieren, der nach dem Zeilenende folgt.
Auf Anfrage des OpenBSD-Projekts wird die Veröffentlichung der Einzelheiten zur Ausnutzung der Sicherheitsanfälligkeit bis zum 26. Februar verschoben, um den Benutzern die Möglichkeit zu geben, ihre Systeme zu aktualisieren. Das Problem besteht seit Dezember 2015 im Code, jedoch war die Ausnutzung zur Ausführung von Code mit Root-Rechten seit Mai 2018 möglich. Forscher haben einen funktionierenden Prototyp eines Exploits vorbereitet, der erfolgreich in den OpenSMTPD-Bauten für OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (Testing) und Fedora 31 getestet wurde.
In OpenSMTPD ebenfalls eine weitere Schwachstelle (CVE-2020-8793), die es lokalen Benutzern ermöglicht, die erste Zeile jeder Datei im System zu lesen. Beispielsweise kann die erste Zeile von /etc/master.passwd, in der der Passwort-Hash des Root-Benutzers gespeichert ist, gelesen werden. Diese Schwachstelle ermöglicht es auch, den gesamten Inhalt einer Datei zu lesen, die einem anderen Benutzer gehört, sofern 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 resultiert aus einer unvollständigen Beseitigung , die im Rahmen eines Audits von Qualys im Jahr 2015 identifiziert wurden. Ein Angreifer kann die Ausführung seines Codes mit den Rechten der Gruppe „_smtpq“ erreichen, indem er die Variable „PATH=.“ festlegt und ein Skript mit dem Namen makemap im aktuellen Verzeichnis platziert (das Dienstprogramm smtpctl startet makemap ohne einen expliziten Pfad anzugeben). Nachdem der Angreifer Zugriff auf die Gruppe „_smtpq“ erhalten hat, kann er einen Rennzustand erzeugen (eine große Datei im offline-Verzeichnis erstellen und das Signal SIGSTOP senden) und, bevor die Verarbeitung abgeschlossen ist, die Datei im offline-Verzeichnis durch einen harten symbolischen Link ersetzen, der auf die Zieldatei verweist, deren Inhalt gelesen werden soll.
Bemerkenswert ist, dass in Fedora 31 die Schwachstelle es ermöglicht, sofort Root-Rechte zu erlangen, da der Prozess smtpctl mit dem setgid root-Flag ausgestattet ist, anstelle von setgid smtpq. Mit Zugriff auf die Gruppe root kann der Inhalt von /var/lib/sss/mc/passwd überschrieben und vollständiger Root-Zugriff auf das System erlangt werden.
Quelle: opennet.ru
