Problem
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
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
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