Eine Reihe von Exim-Sicherheitslöchern ermöglicht die Übernahme von Linux-Mailservern

Cyber Security News

Remote-Code-Ausführung, Privilegienerweiterung zu Root und Lateral Movement durch die Umgebung eines Opfers sind für ungepatchte oder unwissende Benutzer möglich.

Ein wahres Füllhorn an Sicherheitslücken im Exim-Mailserver wurde aufgedeckt, von denen einige miteinander verkettet werden könnten, um unauthentifizierte Remote-Code-Ausführung (RCE), die Erlangung von Root-Rechten und wurmartige Lateralbewegungen zu ermöglichen, so die Forscher.

Das Qualys Research Team hat satte 21 Bugs im beliebten Mail Transfer Agent (MTA) entdeckt, der zum Senden und Empfangen von E-Mails auf den wichtigsten Unix-ähnlichen Betriebssystemen entwickelt wurde. Es kommt vorinstalliert auf Linux-Distributionen wie Debian, zum Beispiel.

Nehmen Sie an Threatposts LIVE-Roundtable-Veranstaltung “Fortifying Your Business Against Ransomware, DDoS & Cryptojacking Attacks” am Mittwoch, den 12. Mai um 14:00 Uhr EDT teil. Dieses KOSTENLOSE Webinar wird von Zoho ManageEngine gesponsert.

“MTAs sind interessante Ziele für Angreifer, weil sie in der Regel über das Internet erreichbar sind”, heißt es in der Qualys-Analyse, die am Dienstag veröffentlicht wurde. “Einmal ausgenutzt, könnten sie sensible E-Mail-Einstellungen auf den Mail-Servern ändern und es Angreifern ermöglichen, neue Konten auf den Ziel-Mail-Servern zu erstellen”, sagte Qualys Senior Manager of Vulnerabilities Bharat Jogi in einem Beitrag.

Die Forscher sagten, dass laut einer Shodan-Suche fast 4 Millionen Exim-Server direkt dem Internet ausgesetzt sind.

Von den 21 Schwachstellen, die von Qualys als “21 Nails” bezeichnet werden, können 10 aus der Ferne ausgenutzt werden. Und die meisten von ihnen können entweder in der Standardkonfiguration oder “in einer sehr häufigen Konfiguration” ausgenutzt werden, so Qualys. Außerdem betreffen die meisten von ihnen alle Versionen von Exim, die bis zu seiner Einführung im Jahr 2004 zurückreichen.

“Exim-Mailserver sind so weit verbreitet und wickeln einen so großen Teil des Internetverkehrs ab, dass sie oft ein Hauptziel für Hacker sind”, sagte Jogi und wies darauf hin, dass im vergangenen Jahr eine Schwachstelle in Exim ein Ziel der russischen Advanced Persistent Threat (APT) namens Sandworm war.

Er fügte hinzu: “Die 21 Schwachstellen, die wir gefunden haben, sind kritisch, da Angreifer sie aus der Ferne ausnutzen können, um vollständige Root-Rechte auf einem Exim-System zu erlangen – was Kompromittierungen ermöglicht, wie zum Beispiel, dass ein Angreifer aus der Ferne vollständige Root-Rechte auf dem Zielserver erlangt und Befehle ausführt, um Programme zu installieren, Daten zu modifizieren, neue Konten zu erstellen und sensible Einstellungen auf den Mail-Servern zu ändern. Es ist zwingend erforderlich, dass Benutzer die Patches sofort anwenden.”

Exim Patching-Status

Die Forscher von Qualys haben die Patches geschrieben und getestet, so Jogi gegenüber Threatpost; und die “offiziellen” Patches von Exim sind modifizierte Versionen dieser Patches (Interessierte können beide als Referenz und zum Vergleich einsehen). Exim hat den Packagern und Maintainern (einschließlich distros@openwall) Zugang zu seinem Sicherheits-Git-Repository für Updates gewährt.

Was den Patching-Status für verschiedene Linux-Distributionen angeht, sagte Jogi, dass die am weitesten verbreiteten (CentOS, RHEL und SuSE), bereits Fixes ausgerollt haben. Debian hingegen ist in den Versionen “oldstable” (Codename Stretch), “stable” (Buster) oder “Still-in-development” (Sid) nicht verwundbar. Allerdings ist die “Unstable”-Version (Bullseye) verwundbar – und wurde zum Zeitpunkt des Schreibens noch nicht gepatcht.

Was andere Distributionen angeht, “ist es schwer zu sagen, da es hunderte von Distributionen gibt und es in deren Verantwortung liegt, auf dem neuesten Stand zu sein”, sagte er gegenüber Threatpost.

Was die Ausnutzung in der freien Wildbahn angeht, “haben wir keine Beweise für die Ausnutzung dieser Schwachstellen aus erster Hand gesehen, aber da die meisten Schwachstellen bereits 2004 eingeführt wurden, besteht eine gute Chance, dass sie von nationalstaatlichen Akteuren ausgenutzt werden könnten”, fügte er hinzu.

21 Nägel Exim Schwachstellenliste

Die aus der Ferne ausnutzbaren Bugs sind: CVE-2020-28017: Integer-Überlauf in receive_add_recipient() CVE-2020-28020: Integer-Überlauf in receive_msg() CVE-2020-28023: Out-of-bounds read in smtp_setup_msg() CVE-2020-28021: Neuzeileninjektion in Spool-Header-Datei CVE-2020-28022: Heap out-of-bounds lesen und schreiben in extract_option() CVE-2020-28026: Zeilenabbruch und Injektion in spool_read_header() CVE-2020-28019: Fehler beim Zurücksetzen des Funktionszeigers nach BDAT-Fehler CVE-2020-28024: Heap-Puffer-Unterlauf in smtp_ungetc() CVE-2020-28018: Use-after-free in tls-openssl.c CVE-2020-28025: Heap out-of-bounds lesen in pdkim_finish_bodyhash()

Dies sind die lokalen Bugs: CVE-2020-28007: Link-Angriff im Log-Verzeichnis von Exim CVE-2020-28008: Diverse Angriffe im Spool-Verzeichnis von Exim CVE-2020-28014: Beliebige Dateierstellung und Clobbering CVE-2021-27216: Beliebiges Löschen von Dateien CVE-2020-28011: Heap-Pufferüberlauf in queue_run() CVE-2020-28010: Heap out-of-bounds write in main() CVE-2020-28013: Heap-Pufferüberlauf in parse_fix_phrase() CVE-2020-28016: Heap out-of-bounds write in parse_fix_phrase() CVE-2020-28015: Neuzeileninjektion in Spool-Header-Datei CVE-2020-28012: Fehlendes close-on-exec-Flag für privilegierte Pipe CVE-2020-28009: Integer-Überlauf in get_stdinput()

Laut dem Advisory könnte ein nicht authentifizierter, entfernter Angreifer einige dieser Angriffe miteinander verketten, um einen potenziell wurmfähigen Exploit zu erstellen, der zu einer Privilegienerweiterung zu Root führen würde, wodurch Befehle ausgeführt werden könnten, um Programme zu installieren, Daten zu ändern und neue Konten zu erstellen.

Technischer Tauchgang in 21 Nails: RCE-Probleme

Qualys veröffentlicht keine vollständigen Proof-of-Concept-Exploits, stellt jedoch verschiedene Code-Blöcke und viele technische Details innerhalb seiner Analyse zur Verfügung.

Laut den Forschern ist der CVE-2020-28018 use-after-free-Bug die stärkste der 21 Schwachstellen. Er ist ausnutzbar, wenn der Exim-Server mit OpenSSL gebaut ist; und wenn STARTTLS aktiviert ist und wenn PIPELINING aktiviert ist (der Standard); und wenn X_PIPE_CONNECT deaktiviert ist (der Standard vor Exim 4.94).

Er betrifft laut Qualys die Funktion tls_write() in tls-openssl.c und kann von entfernten Angreifern auf verschiedene Weise ausgenutzt werden, indem sie eine struct gstring (server_corked) und den zugehörigen String-Puffer (server_corked->s) verwenden: Überschreiben Sie den String-Puffer (der von tls_write() gesendet wird) und erzeugen Sie ein Informationsleck, indem Sie Zeiger auf den Heap auslaufen lassen; Überschreiben Sie die struct gstring (mit einem beliebigen String-Zeiger und einer beliebigen Größe) und verwandeln Sie das use-after-free in ein read-what-where-Primitiv: Es ist dann möglich, den Heap zu lesen, um die Konfiguration von Exim zu finden; Sobald das write-what-where-Primitiv erreicht ist, können Angreifer die Konfiguration von Exim mit einem beliebigen “${run{command}}” überschreiben, das von expand_string() als unprivilegierter, einfacher Benutzer “exim” ausgeführt wird.

Eine weitere erwähnenswerte Schwachstelle ist CVE-2020-28020, ein Integer-Überlauf, der es einem nicht authentifizierten entfernten Angreifer erlaubt, beliebige Befehle als “exim”-Benutzer auszuführen und Daten auszuspähen.

Er existiert in der Funktion receive_msg(), sagten die Forscher, und obwohl er mächtig ist, ist er auch der am schwierigsten auszunutzende aus der 21-Nails-Gruppe und erfordert drei separate Mails, die innerhalb derselben SMTP-Sitzung an ein Ziel gesendet werden.

“Standardmäßig begrenzt Exim die Größe eines Mail-Headers auf 1 MB”, heißt es in dem Advisory. “Leider kann ein Angreifer dieses Limit umgehen, indem er nur Fortsetzungszeilen sendet (d. h. ‘n’ gefolgt von ‘ ‘ oder ‘t’) und so den Integer-Wert header_size überlaufen lässt.”

Aber “wenn die Integer header_size überläuft, wird sie negativ…aber wir können den resultierenden Rücksprung nicht ausnutzen…weil die freie Größe des aktuellen Speicherblocks ebenfalls negativ wird…was uns daran hindert, in diesen zurückgesprungenen Speicherblock zu schreiben”, erklärten die Forscher. “Um den Integer header_size zu überlaufen, müssen wir 1GB an Exim senden: Folglich muss unser Exploit nach nur wenigen Versuchen erfolgreich sein (insbesondere können wir ASLR nicht brute-force).”

Jede dieser Schwachstellen kann von nicht authentifizierten Angreifern genutzt werden, um sich als “exim”-Benutzer auf dem Mail-Server einen ersten Zugang zu verschaffen. Sobald dies erreicht ist, steht ein Strauß von Schwachstellen zur lokalen Privilegienerweiterung (LPE) zur Verfügung, um volle Root-Rechte zu erlangen.

LPE zur Erlangung des Root-Status

Die Optionen zur Privileg-Eskalation beinhalten CVE-2020-28007, was einen Link-Angriff im Log-Verzeichnis von Exim ermöglicht.

Das Exim-Binary ist set-user-ID-root, und Exim arbeitet als root in seinem Log-Verzeichnis, das dem Benutzer “exim” gehört. Also kann ein Angreifer mit den Rechten des “exim”-Benutzers einen Symlink (oder einen Hardlink) im Log-Verzeichnis erstellen, beliebige Inhalte an eine beliebige Datei anhängen und die Rechte eskalieren, so Qualys.

Angreifer könnten CVE-2020-28008 auch für verschiedene Angriffe im Spool-Verzeichnis von Exim nutzen, so die Forscher. Diese verschiedenen Vektoren umfassen: Direktes Schreiben in eine Spool-Header-Datei (im Unterverzeichnis “input”); das Erstellen einer Datei mit langem Namen im Unterverzeichnis “db”, um einen stapelbasierten Puffer zu überlaufen, oder das Erstellen eines Symlinks (oder eines Hardlinks) im Unterverzeichnis “db”, um das Eigentum an einer beliebigen Datei zu übernehmen.

Andere Möglichkeiten für LPE to root sind CVE-2020-28011 und CVE-2020-28013, beides Heap-Pufferüberlauf-Probleme; CVE-2020-28010 und CVE-2020-28016, beides Heap-out-of-bounds-Writes; oder CVE-2020-28009, ein Integer-Überlauf in get_stdinput().

Speicher-Korruptions-Fehler im Überfluss

Bei den meisten Schwachstellen in dem Advisory handelt es sich laut Qualys um leicht auszunutzende Speicherkorruptionen, mit denen verschiedene Schutzmechanismen wie ASLR, NX und malloc-Härtung umgangen werden können.

“Der Speicherallokator von Exim … bietet Angreifern ungewollt mächtige Exploit-Primitive”, so die Forscher. “Insbesondere, wenn ein Angreifer eine negative Größe an den Allokator übergeben kann (durch einen Integer-Überlauf oder direkte Kontrolle), dann glaubt store_get(), dass der aktuelle Speicherblock groß genug ist (weil die Größe negativ ist), und … als Ergebnis kann der Aufrufer von store_get() den aktuellen Speicherblock überlaufen lassen.”

Infolgedessen kann die nächste Speicherzuweisung den Anfang des Heaps von Exim überschreiben. Dies ist “ein relativer Write-What-Where, der natürlich ASLR umgeht (ein ‘Backward-Jump’ oder ‘Back-Jump’)”, so die Analyse.

Aus diesem Grund können einige der Fehler in dem Schreiben von McGyver ausgenutzt werden, um beliebige Codeausführung zu ermöglichen.

“Der Anfang des Heaps enthält die Konfiguration von Exim, die verschiedene Zeichenketten enthält, die zur Laufzeit an expand_string() übergeben werden”, erklären die Forscher. “Folglich kann ein Angreifer, der einen Back-Jump ausführen kann, diese Strings mit ‘${run{…}}’ überschreiben und beliebige Befehle ausführen (und so NX umgehen).”

Ebenfalls von Interesse: Authentifizierte Code-Ausführung als Root

Ein weiterer interessanter Fehler ist CVE-2020-28021, eine Neuzeileninjektion in die Spool-Header-Datei, die ebenfalls RCE ermöglicht, wenn sie mit anderen Problemen verkettet wird.

“Ein authentifizierter SMTP-Client kann einen AUTH=-Parameter zu seinem MAIL FROM-Befehl hinzufügen. Dieser AUTH=-Parameter wird von auth_xtextdecode() dekodiert und der resultierende authenticated_sender wird ohne Kodierung oder Escaping in die Spool-Header-Datei geschrieben”, heißt es in dem Advisory. “Unglücklicherweise kann authenticated_sender beliebige Zeichen enthalten, so dass ein authentifizierter Angreifer neue Zeilen in die Spool-Header-Datei einfügen und beliebige Befehle als root ausführen kann.”

Diese Schwachstelle ist besonders problematisch für ISPs und Mail-Provider, die Exim einsetzen und Mail-Konten, aber keine Shell-Konten anbieten, fügten die Forscher hinzu; und sie kann mit einer Authentifizierungsumgehung wie CVE-2020-12783, die von Orange Tsai im Mai 2020 entdeckt wurde, für einen vollständigen RCE-plus-LPE-Angriff verkettet werden. Außerdem kann er für die Offenlegung von Informationen verwendet werden.

Nehmen Sie an der Threatpost-Veranstaltung “Fortifying Your Business Against Ransomware, DDoS & Cryptojacking Attacks” teil – ein LIVE-Roundtable-Event am Mi, 12. Mai um 14:00 Uhr EDT. Gesponsert von Zoho ManageEngine, moderiert Threatpost-Moderatorin Becky Bracken eine Expertenrunde, die die besten Abwehrstrategien für diese Bedrohungen des Jahres 2021 diskutiert. Fragen und LIVE-Beteiligung des Publikums sind erwünscht. Nehmen Sie an der lebhaften Diskussion teil und registrieren Sie sich HIER kostenlos.

Einige Teile dieses Artikels stammen aus:
threatpost.com