Раскрыты подробности критической уязвимости в Exim

Discussion in 'Мировые новости. Обсуждения.' started by Suicide, 6 Sep 2019.

  1. Suicide

    Suicide Super Moderator
    Staff Member

    Joined:
    24 Apr 2009
    Messages:
    2,266
    Likes Received:
    6,173
    Reputations:
    693
    Опубликован корректирующий выпуск Exim 4.92.2 с устранением критической уязвимости (CVE-2019-15846), которая в конфигурации по умолчанию может привести к удалённому выполнению кода злоумышленника с правами root. Проблема проявляется только при включении поддержки TLS и эксплуатируется через передачу специально оформленного клиентского сертификата или модифицированного значения в SNI. Уязвимость выявлена компанией Qualys.

    Проблема присутствует в обработчике экранирования спецсимволов в строке (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 и CentOS проблеме не подвержены, так как Exim не входит в их штатный репозиторий пакетов (в EPEL обновление уже вышло). В коде Exim проблема устраняется однострочным патчем, отключающем экранирующее действие обратного слэша, если он находится в конце строки.

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


     
  2. DartPhoenix

    DartPhoenix Elder - Старейшина

    Joined:
    15 Sep 2013
    Messages:
    959
    Likes Received:
    7,372
    Reputations:
    19
    Что убунта делает рядом с Debian, Fedora и BSD. Аж как-то неловко. Как негритенок в семье Ротшильдов :)
     
    Suicide likes this.
Loading...