Patched Exim - patch znovu. Čerstvé spuštění vzdáleného příkazu v Exim 4.92 v jedné žádosti

Patched Exim - patch znovu. Čerstvé spuštění vzdáleného příkazu v Exim 4.92 v jedné žádosti

V poslední době, na začátku léta, se objevily rozsáhlé výzvy, aby byl Exim aktualizován na verzi 4.92 kvůli zranitelnosti CVE-2019-10149 (Urychleně aktualizujte Exim na 4.92 - je aktivní infekce / Sudo Null IT News). A nedávno se ukázalo, že malware Sustes se rozhodl využít této zranitelnosti.

Nyní se všichni, kdo naléhavě aktualizovali, mohou znovu „radovat“: 21. července 2019 výzkumník Zerons objevil kritickou zranitelnost v Exim Mail Transfer agent (MTA) při použití TLS pro verze od 4.80 4.92.1 na včetně, umožňující dálkové spustit kód s privilegovanými právy (CVE-2019-15846).

Zranitelnost

Tato chyba zabezpečení se vyskytuje při použití knihoven GnuTLS i OpenSSL při navazování zabezpečeného připojení TLS.

Podle vývojáře Heiko Schlittermanna konfigurační soubor v Eximu standardně nepoužívá TLS, ale mnoho distribucí si během instalace vytváří potřebné certifikáty a umožňuje zabezpečené připojení. Možnost nainstalovat také novější verze Exim tls_advertise_hosts=* a vygenerovat potřebné certifikáty.

záleží na konfiguraci. Většina distribucí to ve výchozím nastavení povoluje, ale Exim potřebuje certifikát+klíč, aby fungoval jako TLS server. Pravděpodobně Distros vytvoří certifikát během instalace. Novější Eximy mají možnost tls_advertise_hosts ve výchozím nastavení na "*" a vytvoří certifikát s vlastním podpisem, pokud žádný není poskytnut.

Samotná zranitelnost spočívá v nesprávném zpracování SNI (Server Name Indication, technologie zavedená v roce 2003 v RFC 3546 pro klienta, aby požádal o správný certifikát pro název domény, Distribuce standardu TLS SNI / WEBO Group Blog / Sudo Null IT News) během TLS handshake. Útočníkovi stačí odeslat SNI končící zpětným lomítkem ("") a znakem null (" ").

Výzkumníci z Qualys objevili chybu ve funkci string_printing(tls_in.sni), která zahrnuje nesprávné escapování „“. V důsledku toho je zpětné lomítko zapsáno do souboru záhlaví tiskového zařazování bez kódování znaků. Tento soubor je pak čten s privilegovanými právy funkcí spool_read_header(), což vede k přetečení haldy.

Stojí za zmínku, že v tuto chvíli vývojáři Exim vytvořili PoC zranitelností s prováděním příkazů na vzdáleném zranitelném serveru, ale zatím není veřejně dostupný. Vzhledem ke snadnému zneužití chyby je to jen otázka času a poměrně krátká.

Podrobnější studii společnosti Qualys lze nalézt zde.

Patched Exim - patch znovu. Čerstvé spuštění vzdáleného příkazu v Exim 4.92 v jedné žádosti

Použití SNI v TLS

Počet potenciálně zranitelných veřejných serverů

Podle statistik velkého poskytovatele hostingu Společnost E-Soft Inc k 1. září je na pronajatých serverech verze 4.92 používána na více než 70 % hostitelů.

Verze
Počet serverů
Procento

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%

Jiné verze
25568
5.04%

Statistiky společnosti E-Soft Inc

Pokud používáte vyhledávač Shodan, pak z 5,250,000 XNUMX XNUMX v databázi serveru:

  • asi 3,500,000 4.92 1,380,000 používá Exim XNUMX (asi XNUMX XNUMX XNUMX používá SSL/TLS);
  • více než 74,000 4.92.1 pomocí 25,000 (asi XNUMX XNUMX pomocí SSL/TLS).

Veřejně známých a přístupných Exim potenciálně zranitelných serverů je tedy kolem 1.5M.

Patched Exim - patch znovu. Čerstvé spuštění vzdáleného příkazu v Exim 4.92 v jedné žádosti

Vyhledejte servery Exim v Shodan

ochrana

  • Nejjednodušší, ale nedoporučovanou možností je nepoužívat TLS, což povede k tomu, že e-mailové zprávy budou přeposílány v jasném formátu.
  • Aby se zabránilo zneužití zranitelnosti, bylo by vhodnější aktualizovat na verzi Exim Internet Mailer 4.92.2.
  • Pokud není možné aktualizovat nebo nainstalovat opravenou verzi, můžete pro tuto volbu nastavit ACL v konfiguraci Exim acl_smtp_mail s následujícími pravidly:
    # 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: www.habr.com

Přidat komentář