
Съвсем наскоро, в началото на лятото, се появиха масови призиви за обновление на Exim до версия 4.92 заради уязвимостта CVE-2019-10149 (). А наскоро стана ясно, че злонамереният Sustes решил да се възползва от тази уязвимост.
Сега всички, които спешно се обновиха, отново могат да „се радват“: на 21 юли 2019 г. изследователят Zerons откри критична уязвимост в Exim Mail Transfer agent (MTA) при използване на TLS за версии от 4.80 до 4.92.1 включително, позволяваща дистанционно да изпълнява код с привилегировани права. ().
Уязвимостта
Уязвимостта присъства при използване на библиотеките GnuTLS и OpenSSL при установяване на защитена TLS-свръзка.
Според разработчика Хейко Шлитерман, конфигурационният файл в 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
