Qualys-Unternehmen
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
Das Problem ist eine Folge einer unvollständigen Eliminierung
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