- PVSM.RU - https://www.pvsm.ru -

Пропатчил Exim — пропатчь еще раз. Свежее Remote Command Execution в Exim 4.92 в один запрос

Пропатчил Exim — пропатчь еще раз. Свежее Remote Command Execution в Exim 4.92 в один запрос - 1

Совсем недавно, в начале лета, появились массовые призывы к обновлению Exim до версии 4.92 из-за уязвимости CVE-2019-10149 (Срочно обновляйте exim до 4.92 — идёт активное заражение / Хабр [1]). А на днях выяснилось, что вредонос Sustes решил воспользоваться этой уязвимостью.

Теперь все экстренно обновившиеся могут опять «порадоваться»: 21 июля 2019 г. исследователь Zerons обнаружил критическую уязвимость в Exim Mail Transfer agent (MTA) при использовании TLS для версий от 4.80 до 4.92.1 включительно, позволяющую удаленно выполнять код с привилегированными правами (CVE-2019-15846 [2]).

Уязвимость

Уязвимость присутствует при использовании библиотек как GnuTLS, так и OpenSSL при установке защищенного TLS-соединения.

По словам разработчика Heiko Schlittermann, файл конфигурации в Exim по умолчанию не использует TLS, однако многие дистрибутивы во время установки создают необходимые сертификаты и включают защищенное соединение. Также более новые версии Exim устанавливают опцию tls_advertise_hosts=* и генерируют необходимые сертификаты.

depends on the configuration. Most distros enable it by default, but Exim needs a certificate+key to work as a TLS server. Probably Distros create a Cert during setup. Newer Exims have the tls_advertise_hosts option defaulting to "*" and create a self signed certificate, if none is provided.

Сама же уязвимость заключается в некорректной обработке SNI (Server Name Indication, технология, введенная в 2003 в RFC 3546 для запроса клиентом корректного сертификата для доменного имени, Распространение стандарта TLS SNI / Блог компании WEBO Group / Хабр [3]) в ходе TLS-рукопожатия. Злоумышленнику достаточно отправить SNI, оканчивающийся бэкслешем ("") и нулл-символом ("").

Исследователи из компании Qualys обнаружили баг в функции string_printing(tls_in.sni), который заключается в некорректном экранировании "". В результате происходит запись обратного слеша в неэкранированном виде в файл заголовков print spool. Далее этот файл с привилегированными правами считывается функцией spool_read_header(), что ведет к переполнению кучи (heap overflow).

Стоит отметить, что на данный момент разработчики Exim создали PoC уязвимости с выполнением команд на удаленном уязвимом сервере, но в публичном доступе он пока отсутствует. В силу простоты эксплуатации бага это всего лишь вопрос времени, причем довольно короткого.

С более детальным исследованием компании Qualys можно ознакомиться здесь [4].

Использование SNI в TLS

Использование SNI в TLS

Количество потенциально уязвимых публичных серверов

По статистике крупного хостинг-провайдера [5] E-Soft Inc на 1 сентября, на арендованных серверах версия 4.92 используется в более чем 70% хостов.

Version Number of Servers Percent
4.92.1 6471 1.28%
4.92 376436 74.22%
4.91 58179 11.47%
4.9 5732 1.13%
4.89 10700 2.11%
4.87 14177 2.80%
4.84 9937 1.96%
Other versions 25568 5.04%

Статистика компании E-Soft Inc

Если обратиться к поисковой системе Shodan [6], то из 5,250,000 в базе серверов:

  • около 3,500,000 используют Exim 4.92 (около 1,380,000 с использованием SSL/TLS);
  • более 74,000 используют 4.92.1 (около 25,000 с использованием SSL/TLS).

Таким образом, публично известных и доступных Exim потенциально уязвимых серверов насчитывается порядка 1.5 млн.

Поиск Exim-серверов в Shodan

Поиск Exim-серверов в Shodan

Защита

  • Самый простой, но не рекомендуемый вариант — не использовать TLS, что приведет к пересылке почтовых сообщений в открытом виде.
  • Более предпочтительным для избежания эксплуатации уязвимости будет обновление до версии Exim Internet Mailer 4.92.2 [7].
  • В случае невозможности обновления или установки пропатченной версии можно задать ACL в конфигурации Exim для опции acl_smtp_mail со следующими правилами:
    # to be prepended to your mail acl (the ACL referenced
    # by the acl_smtp_mail main config option)
    deny    condition = ${if eq{\}{${substr{-1}{1}{$tls_in_sni}}}}
    deny    condition = ${if eq{\}{${substr{-1}{1}{$tls_in_peerdn}}}}

Автор: BlancLoup

Источник [8]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/uyazvimost/329799

Ссылки в тексте:

[1] Срочно обновляйте exim до 4.92 — идёт активное заражение / Хабр: https://habr.com/ru/post/455598/

[2] CVE-2019-15846: https://exim.org/static/doc/security/CVE-2019-15846.txt

[3] Распространение стандарта TLS SNI / Блог компании WEBO Group / Хабр: https://habr.com/ru/company/webo/blog/327410/

[4] здесь: https://github.com/Exim/exim/blob/master/doc/doc-txt/cve-2019-15846/qualys.mbx

[5] хостинг-провайдера: https://www.reg.ru/?rlink=reflink-717

[6] Shodan: https://www.shodan.io/

[7] Exim Internet Mailer 4.92.2: http://exim.org/index.html

[8] Источник: https://habr.com/ru/post/467089/?utm_source=habrahabr&utm_medium=rss&utm_campaign=467089