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
