Felfedték az Exim kritikus biztonsági résének részleteit

közzétett korrekciós elengedés Exim 4.92.2 с устранением критической sebezhetőségek (CVE-2019 15846-), которая в конфигурации по умолчанию может привести к удалённому выполнению кода злоумышленника с правами root. Проблема проявляется только при включении поддержки TLS и эксплуатируется через передачу специально оформленного клиентского сертификата или модифицированного значения в SNI. Уязвимость azonosított компанией Qualys.

probléma ajándék в обработчике экранирования спецсимволов в строке (string_interpret_escape() из string.c) и вызвана тем, что символ ‘\’ в конце строки интерпретируется перед нулевым символом (‘\0’) и экранирует его. При экранировании последовательность ‘\’ и следующий далее нулевой код конца строки обрабатывается как один символ и указатель сдвигается на данные за пределами строки, которые обрабатываются как её продолжение.

Код, вызывающий string_interpret_escape(), выделяет буфер под стоку, руководствуясь фактическим размером, и выставленный указатель оказывается в области вне границ буфера. Соответственно, при попытке обработки входной строки возникает ситуация чтения данных из области вне границ выделенного буфера, а попытка записи разэкранированной строки может привести к записи за пределы буфера.

В конфигурации по умолчанию уязвимость может быть эксплуатирована через передачу специально оформленных данных в SNI при установке защищённого соединения к серверу. Проблема также может быть эксаплуатирована через модификацию значений peerdn в конфигурациях, настроенных для аутентификации по сертификату клиента, или при импорте сертификатов. Атака через SNI и peerdn возможна начиная с выпуска Exim 4.80, в котором функция string_unprinting() была применена для разэкранирования содержимого peerdn и SNI.

Для атаки через SNI подготовлен прототип эксплоита, работающий на архитектурах i386 и amd64 в Linux-системах с Glibc. В эксплоите используется наложение данных на область кучи, приводящее к перезаписи памяти, в которой хранится имя файла лога. Имя файла заменяется на «/../../../../../../../../etc/passwd». Далее перезаписывается переменная с адресом отправителя, который первым сохраняется в лог, что позволяет добавить нового пользователя в систему.

Обновления пакетов с устранением уязвимости выпущено дистрибутивами Debian, Ubuntu, Fedora, SUSE/openSUSE и FreeBSD. RHEL és CentOS probléma nem fogékony, так как Exim не входит в их штатный репозиторий пакетов (в EPEL обновление már alakított, de egyelőre не помещено в публичный репозиторий). В коде Exim проблема устраняется однострочным tapasz, отключающем экранирующее действие обратного слэша, если он находится в конце строки.

В качестве обходного пути для блокирования уязвимости можно отключить поддержку 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}}}}

Forrás: opennet.ru

Hozzászólás