Suicide
06.09.2019, 23:34
Опубликован (https://ftp.exim.org/pub/exim/exim4/) корректирующий выпуск Exim 4.92.2 (https://github.com/Exim/exim/releases/tag/exim-4.92.2) с устранением критической уязвимости (http://exim.org/static/doc/security/CVE-2019-15846.txt) (CVE-2019-15846 (https://security-tracker.debian.org/tracker/CVE-2019-15846)), которая в конфигурации по умолчанию может привести к удалённому выполнению кода злоумышленника с правами root. Проблема проявляется только при включении поддержки TLS и эксплуатируется через передачу специально оформленного клиентского сертификата или модифицированного значения в SNI. Уязвимость выявлена (https://git.exim.org/exim.git/blob/2600301ba6:/doc/doc-txt/cve-2019-15846/qualys.mbx) компанией Qualys.
Проблема присутствует (https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2019-15846) в обработчике экранирования спецсимволов в строке (string_interpret_escape() (https://git.exim.org/exim.git/blob/cf84d126bc:/src/src/string.c#l217) из string.c) и вызвана тем, что символ '\' в конце строки интерпретируется перед нулевым символом ('\0') и экранирует его. При экранировании последовательность '\' и следующий далее нулевой код конца строки обрабатывается как один символ и указатель сдвигается на данные за пределами строки, которые обрабатываются как её продолжение.
Код, вызывающий string_interpret_escape(), выделяет буфер под стоку, руководствуясь фактическим размером, и выставленный указатель оказывается в области вне границ буфера. Соответственно, при попытке обработки входной строки возникает ситуация чтения данных из области вне границ выделенного буфера, а попытка записи разэкранированной строки может привести к записи за пределы буфера.
В конфигурации по умолчанию уязвимость может быть эксплуатирована в через передачу специально оформленных данных в SNI при установке защищённого соединения к серверу. Проблема также может быть эксаплуатирована через модификацию значений peerdn в конфигурациях, настроенных для аутентификации по сертификату клиента, или при импорте сертификатов. Атака через SNI и peerdn возможна начиная с выпуска Exim 4.80 (https://www.opennet.ru/opennews/art.shtml?num=33981), в котором функция string_unprinting() была применена для разэкранирования содержимого peerdn и SNI.
Для атаки через SNI подготовлен прототип эксплоита, работающий на архитектурах i386 и amd64 в Linux-системах с Glibc. В эксплоите используется наложение данных на область кучи, приводящее к перезаписи памяти, в которой хранится имя файла лога. Имя файла заменяется на "/../../../../../../../../etc/passwd". Далее перезаписывается переменная с адресом отравителя, который первым сохраняется в лог, что позволяет добавить нового пользователя в систему.
Обновления пакетов с устранением уязвимости выпущено дистрибутивами Debian (https://security-tracker.debian.org/tracker/CVE-2019-15846), Ubuntu (https://people.canonical.com/~ubuntu-security/cve/2019/CVE-2019-15846.html), Fedora (https://bodhi.fedoraproject.org/updates/FEDORA-2019-467fcbb10a), SUSE/openSUSE (https://bugzilla.novell.com/show_bug.cgi?id=CVE-2019-15846) и FreeBSD (http://www.vuxml.org/freebsd/61db9b88-d091-11e9-8d41-97657151f8c2.html). RHEL и CentOS проблеме не подвержены (https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2019-15846), так как Exim не входит в их штатный репозиторий пакетов (в EPEL (https://lists.fedoraproject.org/archives/list/epel-package-announce@lists.fedoraproject.org/) обновление уже вышло (https://bugzilla.redhat.com/show_bug.cgi?id=1749838)). В коде Exim проблема устраняется однострочным патчем (https://git.exim.org/exim.git/blobdiff/165e7dd1823da93e43b41bcc9941a6a9088ba11f..2600301b a6dbac5c9d640c87007a07ee6dcea1f4:/src/src/string.c), отключающем экранирующее действие обратного слэша, если он находится в конце строки.
В качестве обходного пути для блокирования уязвимости можно отключить поддержку TLS или добавить в секцию ACL "acl_smtp_mail":
deny condition = ${if eq{\\}{${substr{-1}{1}{$tls_in_sni}}}}
deny condition = ${if eq{\\}{${substr{-1}{1}{$tls_in_peerdn}}}}
09.09.2019
http://www.opennet.ru/opennews/art.shtml?num=51435
Проблема присутствует (https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2019-15846) в обработчике экранирования спецсимволов в строке (string_interpret_escape() (https://git.exim.org/exim.git/blob/cf84d126bc:/src/src/string.c#l217) из string.c) и вызвана тем, что символ '\' в конце строки интерпретируется перед нулевым символом ('\0') и экранирует его. При экранировании последовательность '\' и следующий далее нулевой код конца строки обрабатывается как один символ и указатель сдвигается на данные за пределами строки, которые обрабатываются как её продолжение.
Код, вызывающий string_interpret_escape(), выделяет буфер под стоку, руководствуясь фактическим размером, и выставленный указатель оказывается в области вне границ буфера. Соответственно, при попытке обработки входной строки возникает ситуация чтения данных из области вне границ выделенного буфера, а попытка записи разэкранированной строки может привести к записи за пределы буфера.
В конфигурации по умолчанию уязвимость может быть эксплуатирована в через передачу специально оформленных данных в SNI при установке защищённого соединения к серверу. Проблема также может быть эксаплуатирована через модификацию значений peerdn в конфигурациях, настроенных для аутентификации по сертификату клиента, или при импорте сертификатов. Атака через SNI и peerdn возможна начиная с выпуска Exim 4.80 (https://www.opennet.ru/opennews/art.shtml?num=33981), в котором функция string_unprinting() была применена для разэкранирования содержимого peerdn и SNI.
Для атаки через SNI подготовлен прототип эксплоита, работающий на архитектурах i386 и amd64 в Linux-системах с Glibc. В эксплоите используется наложение данных на область кучи, приводящее к перезаписи памяти, в которой хранится имя файла лога. Имя файла заменяется на "/../../../../../../../../etc/passwd". Далее перезаписывается переменная с адресом отравителя, который первым сохраняется в лог, что позволяет добавить нового пользователя в систему.
Обновления пакетов с устранением уязвимости выпущено дистрибутивами Debian (https://security-tracker.debian.org/tracker/CVE-2019-15846), Ubuntu (https://people.canonical.com/~ubuntu-security/cve/2019/CVE-2019-15846.html), Fedora (https://bodhi.fedoraproject.org/updates/FEDORA-2019-467fcbb10a), SUSE/openSUSE (https://bugzilla.novell.com/show_bug.cgi?id=CVE-2019-15846) и FreeBSD (http://www.vuxml.org/freebsd/61db9b88-d091-11e9-8d41-97657151f8c2.html). RHEL и CentOS проблеме не подвержены (https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2019-15846), так как Exim не входит в их штатный репозиторий пакетов (в EPEL (https://lists.fedoraproject.org/archives/list/epel-package-announce@lists.fedoraproject.org/) обновление уже вышло (https://bugzilla.redhat.com/show_bug.cgi?id=1749838)). В коде Exim проблема устраняется однострочным патчем (https://git.exim.org/exim.git/blobdiff/165e7dd1823da93e43b41bcc9941a6a9088ba11f..2600301b a6dbac5c9d640c87007a07ee6dcea1f4:/src/src/string.c), отключающем экранирующее действие обратного слэша, если он находится в конце строки.
В качестве обходного пути для блокирования уязвимости можно отключить поддержку TLS или добавить в секцию ACL "acl_smtp_mail":
deny condition = ${if eq{\\}{${substr{-1}{1}{$tls_in_sni}}}}
deny condition = ${if eq{\\}{${substr{-1}{1}{$tls_in_peerdn}}}}
09.09.2019
http://www.opennet.ru/opennews/art.shtml?num=51435