Opravený Exim - znova oprava. Čerstvé spustenie vzdialeného príkazu v Exim 4.92 v jednej žiadosti

Opravený Exim - znova oprava. Čerstvé spustenie vzdialeného príkazu v Exim 4.92 v jednej žiadosti

Nedávno, začiatkom leta, boli rozšírené výzvy na aktualizáciu Exim na verziu 4.92 kvôli zraniteľnosti CVE-2019-10149 (Naliehavo aktualizujte Exim na 4.92 - je aktívna infekcia / Sudo Null IT News). A nedávno sa ukázalo, že malvér Sustes sa rozhodol využiť túto zraniteľnosť.

Teraz sa môžu všetci tí, ktorí súrne aktualizovali, opäť „radovať“: 21. júla 2019 výskumník Zerons objavil kritickú zraniteľnosť v Exim Mail Transfer agent (MTA) pri používaní TLS pre verzie z 4.80 4.92.1 up vrátane, umožňujúce diaľkové spustiť kód s privilegovanými právami (CVE-2019 15846,).

Zraniteľnosť

Zraniteľnosť sa vyskytuje pri používaní knižníc GnuTLS aj OpenSSL pri vytváraní zabezpečeného pripojenia TLS.

Podľa vývojára Heika Schlittermanna konfiguračný súbor v Exime štandardne nepoužíva TLS, no mnohé distribúcie si pri inštalácii vytvárajú potrebné certifikáty a umožňujú zabezpečené pripojenie. Možnosť nainštalovať aj novšie verzie Exim tls_advertise_hosts=* a vygenerovať potrebné certifikáty.

závisí od konfigurácie. Väčšina distribúcií to štandardne povoľuje, ale Exim potrebuje certifikát + kľúč, aby fungoval ako server TLS. Pravdepodobne distribúcia vytvorí certifikát počas nastavenia. Novšie Eximy majú možnosť tls_advertise_hosts predvolenú na "*" a vytvoria certifikát s vlastným podpisom, ak nie je poskytnutý.

Samotná zraniteľnosť spočíva v nesprávnom spracovaní SNI (Server Name Indication, technológia zavedená v roku 2003 v RFC 3546, aby klient mohol požiadať o správny certifikát pre názov domény, Distribúcia štandardu TLS SNI / WEBO Group Blog / Sudo Null IT News) počas TLS handshake. Útočníkovi stačí poslať SNI končiace opačnou lomkou ("") a znakom null (" ").

Výskumníci z Qualys objavili chybu vo funkcii string_printing(tls_in.sni), ktorá zahŕňa nesprávne escapovanie „“. V dôsledku toho sa spätná lomka zapíše do súboru hlavičky tlačovej fronty bez kódovania. Tento súbor je potom načítaný s privilegovanými právami pomocou funkcie spool_read_header(), čo vedie k pretečeniu haldy.

Stojí za zmienku, že v súčasnosti vývojári Exim vytvorili PoC zraniteľností s vykonávaním príkazov na vzdialenom zraniteľnom serveri, ale zatiaľ nie je verejne dostupný. Vzhľadom na jednoduchosť využitia chyby je to len otázka času a pomerne krátka.

Podrobnejšiu štúdiu Qualys možno nájsť tu.

Opravený Exim - znova oprava. Čerstvé spustenie vzdialeného príkazu v Exim 4.92 v jednej žiadosti

Použitie SNI v TLS

Počet potenciálne zraniteľných verejných serverov

Podľa štatistík veľkého poskytovateľa hostingu Spoločnosť E-Soft Inc od 1. septembra na prenajatých serveroch používa verziu 4.92 viac ako 70 % hostiteľov.

verzia
Počet serverov
Percento

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%

Iné verzie
25568
5.04%

Štatistiky spoločnosti E-Soft Inc

Ak používate vyhľadávač Shodan, potom z 5,250,000 XNUMX XNUMX v databáze servera:

  • asi 3,500,000 4.92 1,380,000 používa Exim XNUMX (asi XNUMX XNUMX XNUMX používa SSL/TLS);
  • viac ako 74,000 4.92.1 používa 25,000 (približne XNUMX XNUMX používa SSL/TLS).

Verejne známych a prístupných Exim potenciálne zraniteľných serverov je teda okolo 1.5 milióna.

Opravený Exim - znova oprava. Čerstvé spustenie vzdialeného príkazu v Exim 4.92 v jednej žiadosti

Vyhľadajte servery Exim v Shodan

ochrana

  • Najjednoduchšou, ale neodporúčanou možnosťou je nepoužívať TLS, čo bude mať za následok, že e-mailové správy sa budú posielať ďalej.
  • Aby sa predišlo zneužitiu zraniteľnosti, bolo by vhodnejšie aktualizovať verziu Exim Internet Mailer 4.92.2.
  • Ak nie je možné aktualizovať alebo nainštalovať opravenú verziu, môžete pre túto možnosť nastaviť ACL v konfigurácii Exim acl_smtp_mail s nasledujúcimi pravidlami:
    # 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}}}}

Zdroj: hab.com

Pridať komentár