Patched Exim - zakrpa ponovo. Svježe izvršenje daljinske komande u Eximu 4.92 u jednom zahtjevu

Patched Exim - zakrpa ponovo. Svježe izvršenje daljinske komande u Eximu 4.92 u jednom zahtjevu

Nedavno, početkom ljeta, postojali su rasprostranjeni pozivi da se Exim ažurira na verziju 4.92 zbog CVE-2019-10149 ranjivosti (Hitno ažurirajte Exim na 4.92 - postoji aktivna infekcija / Sudo Null IT News). A nedavno se ispostavilo da je zlonamjerni softver Sustes odlučio iskoristiti ovu ranjivost.

Sada svi oni koji su hitno ažurirali mogu ponovo da se "raduju": 21. jula 2019. istraživač Zerons otkrio je kritičnu ranjivost u Exim agent za prijenos pošte (MTA) kada se koristi TLS za verzije od 4.80 4.92.1 up uključujući, omogućava daljinsko izvršavati kod s privilegiranim pravima (CVE-2019-15846).

Ranjivost

Ranjivost je prisutna kada se koriste i GnuTLS i OpenSSL biblioteke prilikom uspostavljanja sigurne TLS veze.

Prema programeru Heiko Schlittermann, konfiguracijska datoteka u Eximu ne koristi TLS po defaultu, ali mnoge distribucije kreiraju potrebne certifikate tokom instalacije i omogućavaju sigurnu vezu. Također novije verzije Exima instaliraju opciju tls_advertise_hosts=* i generirati potrebne certifikate.

zavisi od konfiguracije. Većina distribucija to podrazumevano omogućava, ali Eximu je potreban sertifikat+ključ da bi radio kao TLS server. Vjerovatno Distrosi kreiraju Cert tokom postavljanja. Noviji Eximi imaju opciju tls_advertise_hosts koja je zadana vrijednost "*" i kreiraju samopotpisani certifikat, ako nijedan nije naveden.

Sama ranjivost leži u pogrešnoj obradi SNI (Server Name Indication, tehnologija uvedena 2003. godine u RFC 3546 za klijenta da zatraži ispravan certifikat za ime domene, Distribucija TLS SNI standarda / Blog WEBO Grupe / Sudo Null IT vijesti) tokom TLS rukovanja. Napadač samo treba da pošalje SNI koji završava obrnutom kosom crtom ("") i nultom karakterom (" ").

Istraživači iz Qualysa su otkrili grešku u funkciji string_printing(tls_in.sni), koja uključuje netačno izbjegavanje “. Kao rezultat toga, obrnuta kosa crta se upisuje bez escape-a u datoteku zaglavlja ispisne spool. Ova datoteka se zatim čita s privilegiranim pravima pomoću funkcije spool_read_header(), što dovodi do prekoračenja hrpe.

Vrijedi napomenuti da su u ovom trenutku Exim programeri kreirali PoC ranjivosti sa izvršavanjem naredbi na udaljenom ranjivom serveru, ali još uvijek nije javno dostupan. Zbog lakoće eksploatacije greške, to je samo pitanje vremena, i to prilično kratko.

Detaljniju studiju Qualysa možete pronaći ovdje.

Patched Exim - zakrpa ponovo. Svježe izvršenje daljinske komande u Eximu 4.92 u jednom zahtjevu

Korištenje SNI u TLS-u

Broj potencijalno ranjivih javnih servera

Prema statistici velikog hosting provajdera E-Soft Inc od 1. septembra na iznajmljenim serverima verzija 4.92 se koristi na više od 70% hostova.

verzija
Broj servera
posto

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%

Ostale verzije
25568
5.04%

Statistika kompanije E-Soft Inc

Ako koristite pretraživač Shodan, zatim od 5,250,000 u bazi podataka servera:

  • oko 3,500,000 koristi Exim 4.92 (oko 1,380,000 koristi SSL/TLS);
  • preko 74,000 koristeći 4.92.1 (oko 25,000 koristeći SSL/TLS).

Dakle, javno poznati i dostupni Exim potencijalno ranjivi serveri broje oko 1.5M.

Patched Exim - zakrpa ponovo. Svježe izvršenje daljinske komande u Eximu 4.92 u jednom zahtjevu

Potražite Exim servere u Shodanu

zaštita

  • Najjednostavnija, ali ne preporučljiva opcija je da se ne koristi TLS, što će rezultirati prosljeđivanjem e-poruka u čistom obliku.
  • Da biste izbjegli iskorištavanje ranjivosti, bilo bi bolje ažurirati na verziju Exim Internet Mailer 4.92.2.
  • Ako je nemoguće ažurirati ili instalirati zakrpljenu verziju, možete postaviti ACL u Exim konfiguraciji za opciju acl_smtp_mail sa sljedećim pravilima:
    # 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}}}}

izvor: www.habr.com

Dodajte komentar