Korrekturversion mit der Behebung der kritischen (), die in der Standardkonfiguration zu einer Remotecodeausführung durch einen Angreifer mit Root-Rechten führen kann. Das Problem tritt nur bei aktivierter TLS-Unterstützung auf und wird durch die Übermittlung eines speziell formatierten Client-Zertifikats oder eines modifizierten Wertes im SNI ausgenutzt. Die Schwachstelle wurde von der Firma Qualys entdeckt.
Problem im Handler für die Escape-Zeichenverarbeitung in der Zeichenkette ( aus string.c) und wird durch den Umstand verursacht, dass das Zeichen ‘\’ am Ende der Zeichenkette vor dem Nullzeichen (‘\0’) interpretiert wird und es maskiert. Bei der Maskierung werden die Sequenzen ‘\’ und das anschließende Nullzeichen als ein Zeichen behandelt, und der Zeiger wird über die Daten hinaus verschoben, die als Fortsetzung der Zeichenkette behandelt werden.
Der Code, der string_interpret_escape() aufruft, allocates a buffer for the input stream based on the actual size, and the resulting pointer ends up in the area outside the buffer's limits. Therefore, when trying to process the input string, data reading from the area beyond the allocated buffer limits occurs, and an attempt to write the unescaped string could lead to writing beyond the buffer.
In der Standardkonfiguration kann die Schwachstelle durch die Übermittlung speziell formatierter Daten im SNI beim Aufbauen einer sicheren Verbindung zu einem Server ausgenutzt werden. Das Problem kann auch durch die Modifikation von Werten für peerdn in Konfigurationen, die für die Zertifikatsauthentifizierung des Clients eingerichtet sind, oder beim Import von Zertifikaten ausgenutzt werden. Angriffe über SNI und peerdn sind ab der Version , in der die Funktion string_unprinting() zur Unmaskierung des Inhalts von peerdn und SNI angewendet wurde, möglich.
Für Angriffe über SNI wurde ein Exploit-Prototyp entwickelt, der auf i386- und amd64-Architekturen in Linux-Systemen mit Glibc funktioniert. Der Exploit nutzt Datenüberlagerungen im Heap, die zu einer Überschreibung des Speichers führen, in dem der Log-Dateiname gespeichert ist. Der Dateiname wird durch „/..//..//..//..//..//..//..//..//etc//passwd“ ersetzt. Anschließend wird die Variable mit der Adresse des Absenders, der zuerst im Log gespeichert wird, überschrieben, wodurch es möglich wird, einen neuen Benutzer im System hinzuzufügen.
Sicherheitsupdates zur Behebung der Schwachstelle wurden von den Distributionen veröffentlicht , , , und . RHEL und CentOS haben sich mit dem Problem beschäftigt , da Exim nicht in deren regulärem Paket-Repository enthalten ist (in Update , sind jedoch bisher in das öffentliche Repository). Im Code von Exim wird das Problem mit einer einzigen Zeile behoben, , die die Escape-Wirkung des Backslashes deaktiviert, wenn er sich am Ende der Zeile befindet.
Als Workaround zur Blockierung der Schwachstelle kann die Unterstützung von TLS deaktiviert oder in die
ACL-Sektion „acl_smtp_mail“ hinzugefügt werden:
deny condition = ${if eq{\\}{${substr{-1}{1}{$tls_in_sni}}}}
deny condition = ${if eq{\\}{${substr{-1}{1}{$tls_in_peerdn}}}}
Quelle: opennet.ru
