Opraven Exim — oprav ještě jednou. Nová zranitelnost Remote Command Execution v Exim 4.92 v jednom požadavku

Opraven Exim — oprav ještě jednou. Nová zranitelnost Remote Command Execution v Exim 4.92 v jednom požadavku

Nedávno, na začátku léta, se objevily masivní výzvy k aktualizaci Exim na verzi 4.92 kvůli zranitelnosti CVE-2019-10149 (Urgentně aktualizujte exim na 4.92 — aktivní infekce / Habr). A nedávno se ukázalo, že malware Sustes se rozhodl využít této zranitelnosti.

Nyní se všichni, kdo urgentně aktualizovali, mohou opět "potěšit": 21. července 2019 výzkumník Zerons objevil kritickou zranitelnost v Exim Mail Transfer agent (MTA) při používání TLS pro verze od 4.80 do 4.92.1 včetně, což umožňuje vzdálené provádění kódu s privilegovanými oprávněními (CVE-2019-15846).

Zranitelnost

Zranitelnost se vyskytuje při použití knihoven GnuTLS i OpenSSL při nastavení zabezpečeného TLS spojení.

Podle slov vývojáře Heika Schlittermanna soubor konfigurace v Exim dle výchozího nastavení nepoužívá TLS, avšak mnoho distribucí při instalaci vytváří potřebné certifikáty a zapíná zabezpečené spojení. Také novější verze Exim nastavují volbu tls_advertise_hosts=* a generují potřebné certifikáty.

závisí na konfiguraci. Většina distribucí ji zapíná ve výchozím nastavení, ale Exim potřebuje certifikát + klíč, aby fungoval jako TLS server. Pravděpodobně distribuce vytvářejí certifikát během nastavení. Novější verze Exim mají výchozí volbu tls_advertise_hosts nastavenou na „*“ a vytvářejí self-signed certifikát, pokud není žádný poskytnut.

Sama zranitelnost spočívá v nesprávném zpracování SNI (Server Name Indication, technologie, zavedená v roce 2003 v RFC 3546 pro požadavek klienta na správný certifikát pro doménové jméno, Rozšíření standardu TLS SNI / Blog společnosti WEBO Group / Habr) během TLS handshake. Útočníkovi stačí poslat SNI končící zpětným lomítkem („\“) a nulovým znakem (" ").

Výzkumníci z firmy Qualys objevili chybu ve funkci string_printing(tls_in.sni), která spočívá v nesprávném escapování „\“. V důsledku toho se zapisuje zpětné lomítko v neošetřené podobě do souboru hlaviček print spool. Tento soubor s privilegovanými právy se poté čte funkcí spool_read_header(), což vede k přetečení haldy (heap overflow).

Je třeba poznamenat, že v současné době vývojáři Exim vytvořili PoC zranitelnosti s prováděním příkazů na vzdáleném zranitelném serveru, ale v veřejném přístupu zatím chybí. Vzhledem k jednoduchosti exploitace chyby je to pouze otázka času, a to poměrně krátkého.

S podrobnějším výzkumem společnosti Qualys se můžete seznámit zde.

Opraven Exim — oprav ještě jednou. Nová zranitelnost Remote Command Execution v Exim 4.92 v jednom požadavku

Použití SNI v TLS

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

Podle statistik významného poskytovatele hostingu E-Soft Inc k 1. září je na pronajímaných serverech verze 4.92 používána na více než 70 % hostech.

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%

Ostatní verze
25568
5.04%

Statistiky společnosti E-Soft Inc

Pokud se obrátíte na vyhledávač Shodan, tak z 5,250,000 v databázi serverů:

  • přibližně 3,500,000 používá Exim 4.92 (přibližně 1,380,000 s použitím SSL/TLS);
  • více než 74,000 používá 4.92.1 (přibližně 25,000 s použitím SSL/TLS).

Takže celkový počet veřejně známých a dostupných potenciálně zranitelných Exim serverů činí přibližně 1.5 mil..

Opraven Exim — oprav ještě jednou. Nová zranitelnost Remote Command Execution v Exim 4.92 v jednom požadavku

Vyhledávání Exim serverů v Shodan

Ochrana

  • Nejjednodušší, ale nedoporučená varianta — nepoužívat TLS, což povede k přenosu e-mailových zpráv v otevřeném formátu.
  • Přednostní variantou pro vyhnutí se zneužití zranitelnosti je aktualizace na verzi Exim Internet Mailer 4.92.2.
  • Pokud není možné aktualizovat nebo nainstalovat opravenou verzi, lze v konfiguraci Exim nastavit ACL pro možnost 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: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster