Патчът за 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=* и генерират необходимите сертификати.

зависи от конфигурацията. Повечето дистрибуции я активират по подразбиране, но Exim се нуждае от сертификат+ключ, за да работи като TLS сървър. Вероятно дистрибуциите създават сертификат по време на настройката. По-новите версии на Exim имат опцията tls_advertise_hosts, зададена по подразбиране на «*», и създават самоподписан сертификат, ако такъв не бъде предоставен.

Сама по себе си, уязвимостта се състои в неправилна обработка на 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 можете да се запознаете тук.

Патчът за Exim — патчнете отново. Ново Remote Command Execution в Exim 4.92 с един запит

Използване на 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

Ако се обърнете към търсачката Shodan, от 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 — патчнете отново. Ново Remote Command Execution в Exim 4.92 с един запит

Търсене на Exim-сервери в Shodan

Защита

  • Най-простият, но не препоръчван вариант — да не се използва TLS, което ще доведе до изпращане на имейли в открит вид.
  • По-предпочитан за избягване на експлоатацията на уязвимостта е актуализацията до версия Exim Internet Mailer 4.92.2.
  • В случай на невъзможност за актуализация или инсталиране на пропатчена версия, можете да зададете 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

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster