
Съвсем наскоро, в началото на лятото, се появиха масови призиви за актуализация на Exim до версия 4.92 заради уязвимостта CVE-2019-10149 (). А наскоро стана ясно, че злонамереният Sustes е решил да се възползва от тази уязвимост.
Сега всички бързо обновени отново могат да се «похвалят»: на 21 юли 2019 г. изследователят Zerons откри критична уязвимост в Exim Mail Transfer agent (MTA) при използване на TLS за версии от 4.80 до 4.92.1 включително, позволяваща дистанционно да изпълнява код с привилегировани права ().
Уязвимост
Уязвимостта присъства, когато се използват библиотеки като GnuTLS и OpenSSL при установяване на защитена TLS-сесия.
Според разработчика Heiko Schlittermann, конфигурационният файл в Exim по подразбиране не използва TLS, но много дистрибуции по време на инсталацията създават необходимите сертификати и включват защитена връзка. Също така, по-новите версии на Exim задават опцията tls_advertise_hosts=* и генерират необходимите сертификати.
зависи от конфигурацията. Повечето дистрибуции я активират по подразбиране, но Exim се нуждае от сертификат+ключ, за да работи като TLS сървър. Вероятно дистрибуциите създават сертификат по време на настройката. По-новите версии на Exim имат опцията tls_advertise_hosts, зададена по подразбиране на «*», и създават самоподписан сертификат, ако такъв не бъде предоставен.
Сама по себе си, уязвимостта се състои в неправилна обработка на SNI (Server Name Indication, технология, въведена през 2003 г. в RFC 3546 за искане от клиента на правилния сертификат за домейн, ) по време на 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% от хостовете.
Version
Брой на сървърите
Процент
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}}}}
Източник: habr.com
