ProHoster > Блог > адміністрування > Пропатчив Exim - пропатчити ще раз. Новий Remote Command Execution в Exim 4.92 в один запит
Пропатчив Exim - пропатчити ще раз. Новий Remote Command Execution в Exim 4.92 в один запит
Нещодавно, на початку літа, з'явилися масові заклики до оновлення Exim до версії 4.92 через вразливість CVE-2019-10149 (Терміново оновлюйте exim до 4.92 — активне зараження / Хабр). А днями з'ясувалося, що шкідливість Sustes вирішила скористатися цією вразливістю.
Тепер усі екстрено оновлені можуть знову «потішитися»: 21 липня 2019 р. дослідник Zerons виявив критичну вразливість Exim Mail Transfer agent (MTA) під час використання TLS для версій від 4.80 до 4.92.1 включно, що дозволяє віддалено виконувати код із привілейованими правами (CVE-2019-15846).
уразливість
Вразливість присутня при використанні бібліотек як GnuTLS, так і OpenSSL під час встановлення захищеного TLS-з'єднання.
За словами розробника Heiko Schlittermann, файл конфігурації в Exim за умовчанням не використовує TLS, проте багато дистрибутивів під час встановлення створюють необхідні сертифікати та включають захищене з'єднання. Також новіші версії Exim встановлюють опцію tls_advertise_hosts=* та генерують необхідні сертифікати.
depends on the configuration. Most distros enable it by default, але Exim потребує certificate+key для роботи як TLS server. Probably Distros створить Cert during setup. Newer Exims має tls_advertise_hosts option defaulting до «*» і створить self signed certificate, if none is provided.
Сама ж вразливість полягає в некоректній обробці SNI (Server Name Indication, технологія, введена в 2003 RFC 3546 для запиту клієнтом коректного сертифіката для доменного імені, Розповсюдження стандарту TLS SNI / Блог компанії WEBO Group / Хабр) в ході TLS-рукостискання. Зловмиснику достатньо відправити SNI, що закінчується бекслешем ("") і нулл-символом ("").
Дослідники з компанії Qualys виявили баг у функції string_printing(tls_in.sni), який полягає у некоректному екрануванні «». Через війну відбувається запис зворотного слеша в неэкранированном вигляді файл заголовків print spool. Далі цей файл із привілейованими правами зчитується функцією spool_read_header(), що веде до переповнення купи (heap overflow).
На даний момент розробники Exim створили PoC вразливості з виконанням команд на віддаленому вразливому сервері, але в публічному доступі він поки що відсутній. В силу простоти експлуатації бага це лише питання часу, причому досить короткого.
З детальнішим дослідженням компанії Qualys можна ознайомитися тут.
Використання SNI у TLS
Кількість потенційно вразливих публічних серверів
За статистикою великого хостинг-провайдера E-Soft Inc на 1 вересня, на орендованих серверах версія 4.92 використовується у більш ніж 70% хостів.
версія
Кількість серверів
Відсоток
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%
Інші версії
25568
5.04%
Статистика компанії E-Soft Inc
Якщо звернутися до пошукової системи Шодан, то з 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
Захист
Найпростіший, але не рекомендований варіант - не використовувати TLS, що призведе до пересилання поштових повідомлень у відкритому вигляді.
У разі неможливості оновлення або встановлення пропатченої версії можна встановити 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}}}}