Kritische Sicherheitslücke bei Exim aufgedeckt

Veröffentlicht Korrekturfreigabe Exim 4.92.2 mit der Eliminierung von Kritischen Schwachstellen (CVE-2019-15846), was in der Standardkonfiguration zur Remotecodeausführung durch einen Angreifer mit Root-Rechten führen kann. Das Problem tritt nur auf, wenn die TLS-Unterstützung aktiviert ist und wird ausgenutzt, indem ein speziell entwickeltes Client-Zertifikat oder ein geänderter Wert an SNI übergeben wird. Verletzlichkeit identifiziert von Qualys.

Problem vorhanden im Handler zum Escapezeichen von Sonderzeichen in der Zeichenfolge (string_interpret_escape() aus string.c) und wird dadurch verursacht, dass das Zeichen „\“ am Ende der Zeichenfolge vor dem Nullzeichen („\0“) interpretiert und als Escapezeichen verwendet wird. Beim Escape werden die Sequenz „\“ und der folgende Null-Zeilenendecode als ein einzelnes Zeichen behandelt und der Zeiger wird auf Daten außerhalb der Zeile verschoben, die als Fortsetzung der Zeile behandelt werden.

Der Code, der string_interpret_escape() aufruft, weist basierend auf der tatsächlichen Größe einen Puffer für den Drain zu, und der verfügbar gemachte Zeiger landet in einem Bereich außerhalb der Puffergrenzen. Dementsprechend kommt es beim Versuch, eine Eingabezeichenfolge zu verarbeiten, zu einer Situation, in der Daten aus einem Bereich außerhalb der Grenzen des zugewiesenen Puffers gelesen werden, und der Versuch, eine nicht maskierte Zeichenfolge zu schreiben, kann zum Schreiben über die Grenzen des Puffers hinaus führen.

In der Standardkonfiguration kann die Schwachstelle ausgenutzt werden, indem beim Aufbau einer sicheren Verbindung zum Server speziell konzipierte Daten an SNI gesendet werden. Das Problem kann auch ausgenutzt werden, indem Peerdn-Werte in Konfigurationen geändert werden, die für die Authentifizierung von Client-Zertifikaten konfiguriert sind, oder beim Importieren von Zertifikaten. Ein Angriff über SNI und peerdn ist ab Release möglich Exim 4.80, in dem die Funktion string_unprinting() zum Entdrucken des Peerdn- und SNI-Inhalts verwendet wurde.

Für einen Angriff über SNI wurde ein Exploit-Prototyp vorbereitet, der auf i386- und amd64-Architekturen auf Linux-Systemen mit Glibc läuft. Der Exploit nutzt eine Datenüberlagerung im Heap-Bereich, was dazu führt, dass der Speicher überschrieben wird, in dem der Protokolldateiname gespeichert ist. Der Dateiname wird durch „/../../../../../../../../etc/passwd“ ersetzt. Als nächstes wird die Variable mit der Absenderadresse überschrieben, die zunächst im Protokoll gespeichert wird, wodurch Sie einen neuen Benutzer zum System hinzufügen können.

Von Distributionen veröffentlichte Paketaktualisierungen mit Schwachstellenkorrekturen Debian, Ubuntu, Fedora, SUSE/openSUSE и FreeBSD. RHEL- und CentOS-Problem nicht anfällig, da Exim nicht in ihrem regulären Paket-Repository enthalten ist (in EPEL обновление bereits gebildet, aber für den Moment nicht platziert an ein öffentliches Repository). Im Exim-Code wird das Problem mit einem Einzeiler behoben Patch, wodurch der Escape-Effekt des Backslashs deaktiviert wird, wenn er sich am Ende der Zeile befindet.

Als Workaround zum Blockieren der Schwachstelle können Sie die TLS-Unterstützung deaktivieren oder hinzufügen
ACL-Abschnitt „acl_smtp_mail“:

Bedingung verweigern = ${if eq{\\}{${substr{-1}{1}{$tls_in_sni}}}}
Bedingung verweigern = ${if eq{\\}{${substr{-1}{1}{$tls_in_peerdn}}}}

Source: opennet.ru

Kommentar hinzufügen