Sicherheitslücken in OpenSMTPD, die den Remote- und lokalen Zugriff auf Root ermöglichen

Qualys-Unternehmen enthüllt eine weitere kritische Remote-Schwachstelle (CVE-2020-8794) im Mailserver OpenSMTPD, entwickelt vom OpenBSD-Projekt. So wie der, der Ende Januar identifiziert wurde VerwundbarkeitDurch ein neues Problem ist es möglich, beliebige Shell-Befehle aus der Ferne auf einem Server mit Root-Benutzerrechten auszuführen. Verletzlichkeit eliminiert in der Ausgabe OpenSMTPD 6.6.4p1.

Das Problem wird durch einen Fehler im Code verursacht, der E-Mails an den Remote-Mailserver zustellt (nicht im Code, der eingehende Verbindungen verarbeitet). Der Angriff ist sowohl clientseitig als auch serverseitig möglich. Auf der Client-Seite ist der Angriff in der Standardkonfiguration von OpenSMTPD möglich, in der OpenSMTPD Anfragen nur auf der internen Netzwerkschnittstelle (localhost) akzeptiert und Mail-Nachrichten an externe Server sendet. Um die Schwachstelle auszunutzen, reicht es aus, dass OpenSMTPD während der Zustellung eines Briefes eine Sitzung mit einem vom Angreifer kontrollierten Mailserver aufbaut oder dass sich der Angreifer in die Client-Verbindung einklinken kann (MITM oder Umleitung bei Angriffen über DNS oder BGP). ).

Für einen serverseitigen Angriff muss OpenSMTPD so konfiguriert sein, dass es externe Netzwerkanfragen von anderen Mailservern empfängt oder Dienste von Drittanbietern bereitstellt, die es Ihnen ermöglichen, eine Anfrage an eine beliebige E-Mail-Adresse zu senden (z. B. Adressbestätigungsformulare auf Websites). Beispielsweise kann ein Angreifer eine Verbindung zum OpenSMTPD-Server herstellen und einen falschen Brief (an einen nicht existierenden Benutzer) senden, was dazu führt, dass als Antwort ein Brief mit einem Fehlercode (Bounce) an den Server des Angreifers gesendet wird. Ein Angreifer kann die Sicherheitslücke ausnutzen, wenn OpenSMTPD eine Verbindung herstellt, um eine Benachrichtigung an den Server des Angreifers zu übermitteln. Die während des Angriffs eingeschleusten Shell-Befehle werden in einer Datei abgelegt, die beim Neustart von OpenSMTPD mit Root-Rechten ausgeführt wird. Der Angreifer muss also auf den Neustart von OpenSMTPD warten oder einen Absturz von OpenSMTPD auslösen, um den Angriff abzuschließen.

Das Problem liegt in der Funktion mta_io() im Code zum Parsen der mehrzeiligen Antwort vor, die vom Remote-Server zurückgegeben wird, nachdem eine Verbindung hergestellt wurde (z. B. „250-ENHANCEDSTATUSCODES“ und „250 HELP“). OpenSMTPD berechnet, dass die erste Zeile eine dreistellige Zahl und einen durch ein „-“-Zeichen getrennten Text enthält und die zweite Zeile eine dreistellige Zahl und einen durch ein Leerzeichen getrennten Text enthält. Wenn einer dreistelligen Zahl in der zweiten Zeile kein Leerzeichen und kein Text folgt, wird der Zeiger zur Definition des Textes auf das Byte nach dem Zeichen „\0“ gesetzt und es wird versucht, die Daten nach dem Ende zu kopieren der Zeile in den Puffer.

Auf Wunsch des OpenBSD-Projekts wurde die Veröffentlichung von Details zur Ausnutzung der Schwachstelle auf den 26. Februar verschoben, um Benutzern die Möglichkeit zu geben, ihre Systeme zu aktualisieren. Das Problem ist seit Dezember 2015 in der Codebasis vorhanden, eine Ausnutzung vor der Codeausführung mit Root-Rechten ist jedoch seit Mai 2018 möglich. Die Forscher erstellten einen funktionierenden Prototyp des Exploits, der erfolgreich in OpenSMTPD-Builds für OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (Test) und Fedora 31 getestet wurde.

Auch in OpenSMTPD identifiziert Eine weitere Sicherheitslücke (CVE-2020-8793), die es einem lokalen Benutzer ermöglicht, die erste Zeile einer beliebigen Datei auf dem System zu lesen. Sie können beispielsweise die erste Zeile von /etc/master.passwd lesen, die den Passwort-Hash des Root-Benutzers enthält. Die Sicherheitslücke ermöglicht es Ihnen 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 lässt sich auf vielen Linux-Distributionen, bei denen der Wert von /proc/sys/fs/protected_hardlinks auf 1 gesetzt ist, nicht ausnutzen.

Das Problem ist eine Folge einer unvollständigen Eliminierung проблем, geäußert während des von Qualys im Jahr 2015 durchgeführten Audits. Ein Angreifer kann die Ausführung seines Codes mit den Rechten der Gruppe „_smtpq“ erreichen, indem er die Variable „PATH=.“ setzt. und Platzieren eines Skripts namens makemap im aktuellen Verzeichnis (das Dienstprogramm smtpctl führt makemap aus, ohne den Pfad explizit anzugeben). Durch den Zugriff auf die Gruppe „_smtpq“ kann der Angreifer dann eine Race Condition auslösen (eine große Datei im Offline-Verzeichnis erstellen und ein SIGSTOP-Signal senden) und vor Abschluss der Verarbeitung die Datei im Offline-Verzeichnis durch eine Festplatte ersetzen Symlink, der auf die Zieldatei verweist, deren Inhalt gelesen werden muss.

Bemerkenswert ist, dass Sie in Fedora 31 durch die Sicherheitslücke sofort die Berechtigungen der Root-Gruppe erlangen können, da der Prozess smtpctl mit dem Flag setgid root anstelle des Flags setgid smtpq ausgestattet ist. Durch den Zugriff auf die Root-Gruppe können Sie den Inhalt von /var/lib/sss/mc/passwd überschreiben und vollständigen Root-Zugriff auf das System erhalten.

Source: opennet.ru

Kommentar hinzufügen