Fernzugängliche Schwachstelle im Mailserver qmail

Sicherheitsforscher von Qualys haben wir gezeigt, die Möglichkeit Betriebsführung Schwachstellen im Mailserver qmail, bekannten bereits seit 2005 bekannt (CVE-2005-1513), jedoch unbehoben, da der Entwickler von qmail die Machbarkeit eines funktionierenden Exploits, der gegen Standardkonfigurationen eingesetzt werden könnte, als unrealistisch ansah. Qualys gelang es, einen Exploit zu entwickeln, der diese Annahme widerlegt und es ermöglicht, remote Codeausführung auf dem Server durch das Versenden einer speziell formatierten Nachricht zu initiieren.

Das Problem wird durch einen ganzzahligen Überlauf in der Funktion stralloc_readyplus() verursacht, der bei der Verarbeitung sehr großer Nachrichten auftreten kann. Für den Betrieb war ein 64-Bit-System mit mehr als 4 GB virtuellem Speicher erforderlich. Bei der ursprünglichen Analyse der Schwachstelle im Jahr 2005 argumentierte Daniel J. Bernstein, dass die Annahme im Code, dass die Größe des zugewiesenen Arrays immer in einen 32-Bit-Wert passt, darauf beruht, dass niemand jedem Prozess Gigabytes an Speicher zuweist. In den letzten 15 Jahren haben 64-Bit-Systeme auf Servern 32-Bit-Systeme verdrängt, das Volumen des bereitgestellten Speichers ist erheblich gestiegen, ebenso die Bandbreite der Netzwerke.

Die Begleitpakete mit qmail haben Bersteins Anmerkung berücksichtigt und begrenzen beim Start des Prozesses qmail-smtpd den verfügbaren Speicher (zum Beispiel wird in Debian 10 ein Limit von 7 MB gesetzt). Die Ingenieure von Qualys haben jedoch herausgefunden, dass dies nicht ausreicht und zusätzlich zu qmail-smtpd eine Remote-Attacke auch auf den Prozess qmail-local durchgeführt werden kann, der in allen überprüften Paketen unbeschränkt blieb. Als Beweis wurde ein Exploit-Prototyp vorbereitet, der für einen Angriff auf das standardmäßig konfigurierte qmail-Paket in Debian geeignet ist.
Für die Organisation der Remote-Codeausführung während eines Angriffs sind auf dem Server 4 GB freien Speicherplatz und 8 GB RAM erforderlich.
Der Exploit ermöglicht es, beliebige Shell-Befehle mit den Rechten eines beliebigen Benutzers im System auszuführen, außer root und systemeigenen Benutzern, die kein eigenes Unterverzeichnis im Verzeichnis "/home" haben (der Prozess qmail-local wird mit den Rechten des lokalen Benutzers gestartet, dem die Zustellung erfolgt).

Der Angriff erfolgt
durch das Versenden einer sehr großen E-Mail-Nachricht mit mehreren Zeilen im Betreff, die etwa 4 GB und 576 MB groß ist. Die Verarbeitung einer solchen Zeile in qmail-local führt zu einem ganzzahligen Überlauf bei dem Versuch, die Nachricht an den lokalen Benutzer zuzustellen. Der ganzzahlige Überlauf führt anschließend zu einem Buffer-Überlauf beim Kopieren von Daten und ermöglicht das Überschreiben von Speicherseiten mit libc-Code. Durch Manipulation der übertragenden Daten kann unter anderem die Adresse der Funktion „open()“ überschrieben werden, indem sie durch die Adresse der Funktion „system()“ ersetzt wird.

Im nächsten Schritt wird während des Aufrufs von qmesearch() in qmail-local die Datei „.qmail-extension“ über die Funktion open() geöffnet, was zur tatsächlichen Ausführung der Funktion
system(«.qmail-extension»). Da ein Teil der Datei „extension“ auf der Adresse des Empfängers basiert (z. B. „localuser-extension@localdomain“), können Angreifer die Übertragung eines Befehls zur Ausführung organisieren, indem sie den Benutzer „localuser-;command;@localdomain“ als Empfänger der Nachricht angeben.

Bei der Analyse des Codes wurden auch zwei Vulnerabilitäten im zusätzlichen Patch qmail-verify gefunden, der Teil des Pakets für Debian ist. Die erste Vulnerabilität (CVE-2020-3811) ermöglicht das Umgehen der E-Mail-Adressüberprüfung, während die zweite (CVE-2020-3812) zu einer lokalen Informationsleakage führt. Insbesondere erlaubt die erste Schwachstelle das Umgehen der Überprüfung der Gültigkeit der Adresse, die im Exploit zur Übertragung des Befehls verwendet wird (die Überprüfung schlägt nicht fehl bei Adressen ohne Domain, wie „localuser-;command;“). Die zweite Schwachstelle kann verwendet werden, um das Vorhandensein von Dateien und Verzeichnissen im System zu überprüfen, einschließlich solcher, die nur für Root zugänglich sind (qmail-verify wird mit Root-Rechten ausgeführt), durch einen direkten Zugriff auf den lokalen Handler.

Um das Problem zu umgehen, empfahl Bernstein, die Prozesse von qmail mit einer allgemeinen Speicherobergrenze auszuführen („softlimit -m12345678“), wodurch das Problem blockiert wird. Als alternative Schutzmaßnahme wird auch die Begrenzung der maximalen Größe der verarbeiteten Nachricht über die Datei „control/databytes“ erwähnt (standardmäßig wird sie bei den standardmäßigen Einstellungen nicht erstellt, wodurch qmail verwundbar bleibt). Darüber hinaus schützt „control/databytes“ nicht vor lokalen Angriffen von Systembenutzern, da die Begrenzung nur in qmail-smtpd berücksichtigt wird.

Das Problem betrifft das Paket netqmail, der in den Debian-Repositories enthalten ist. Für dieses Paket wurde eine Reihe von Patches vorbereitet, die sowohl alte Schwachstellen aus dem Jahr 2005 beheben (durch das Hinzufügen harter Speicherkapazitätsgrenzen in den Code der Funktion alloc()) als auch neue Probleme in qmail-verify angehen. Separat ist bereitgestellt die aktualisierte Version des Patches für qmail-verify. Die Entwickler dem Branch notqmail haben ihre Patches vorbereitet, um alte Probleme zu beheben, und begonnen, alle möglichen ganzzahligen Überläufe im Code zu beseitigen.

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster