Exim je zakrpljen - zakrpi još jednom. Nova Remote Command Execution u Exim 4.92 kroz jedan zahtjev

Exim je zakrpljen - zakrpi još jednom. Nova Remote Command Execution u Exim 4.92 kroz jedan zahtjev

Nedavno, početkom ljeta, pojavili su se masovni pozivi za ažuriranje Exim-a na verziju 4.92 zbog ranjivosti CVE-2019-10149 (Hitno ažurirajte Exim na 4.92 — aktivno se širi infekcija / Habr). A nedavno je otkriveno da je maliciozni Sustes odlučio iskoristiti ovu ranjivost.

Sada se svi koji su hitno ažurirali mogu ponovo "radovati": 21. srpnja 2019. istraživač Zerons otkrio je kritičnu ranjivost u Exim Mail Transfer agent (MTA) prilikom korištenja TLS-a za verzije od 4.80 do 4.92.1 uključivo, koja omogućava daljinsko izvršavanje koda s privilegiranim pravima (CVE-2019-15846).

Ranjivost

Ranjivost se javlja pri korištenju biblioteka kao što su GnuTLS i OpenSSL prilikom uspostavljanja sigurnog TLS veze.

Prema riječima programera Heika Schlittermanna, konfiguracijska datoteka u Eximu po defaultu ne koristi TLS, no mnoge distribucije tijekom instalacije stvaraju potrebne certifikate i uključuju sigurnu vezu. Također, novije verzije Exim-a postavljaju opciju tls_advertise_hosts=* i generiraju potrebne certifikate.

ovisno o konfiguraciji. Većina distribucija uključuje to po defaultu, ali Exim treba certifikat + ključ da bi radio kao TLS server. Vjerojatno distribucije stvaraju certifikat tijekom postavljanja. Noviji Exim-i imaju opciju tls_advertise_hosts postavljenu na «*» i stvaraju samopotpisani certifikat, ako nijedan nije dostavljen.

Sama ranjivost odnosi se na nepravilno rukovanje SNI (Server Name Indication, tehnologija uvedena 2003. u RFC 3546 za zahtjev klijenta da dobije ispravan certifikat za naziv domene, Širenje TLS SNI standarda / Blog kompanije WEBO Group / Habr) tijekom TLS rukovanja. Napadaču je dovoljno poslati SNI koji završava s obrnutim kosom crtom («") i nul-simbolom (» «).

Istraživači iz kompanije Qualys otkrili su grešku u funkciji string_printing(tls_in.sni), koja se odnosi na nepravilno escapovanje «». Kao rezultat toga, dolazi do zapisivanja obrnutih kosa crta u neescapiranom obliku u datoteku zaglavlja print spool. Zatim ovu datoteku s privilegiranim pravima čita funkcija spool_read_header(), što dovodi do prelivanja hrpe (heap overflow).

Važno je napomenuti da su do sada programeri Exim-a stvorili PoC ranjivosti s izvršavanjem naredbi na udaljenom ranjivom serveru, ali u javnom pristupu on još nije dostupan. Zbog jednostavnosti iskorištavanja greške, ovo je samo pitanje vremena, i to prilično kratkog.

Detaljnije istraživanje kompanije Qualys možete pronaći ovdje.

Exim je zakrpljen - zakrpi još jednom. Nova Remote Command Execution u Exim 4.92 kroz jedan zahtjev

Korištenje SNI u TLS-u

Broj potencijalno ranjivih javnih poslužitelja

Prema statistikama velikog provajdera hostinga E-Soft Inc na 1. rujna, na iznajmljenim poslužiteljima verzija 4.92 se koristi na više od 70% hostova.

Verzija
Broj poslužitelja
Postotak

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 tvrtke E-Soft Inc

Ako se obratite tražilici Shodan, od 5,250,000 u bazi poslužitelja:

  • oko 3,500,000 koristi Exim 4.92 (oko 1,380,000 uz korištenje SSL/TLS);
  • više od 74,000 koristi 4.92.1 (oko 25,000 uz korištenje SSL/TLS).

Tako, javno poznatih i dostupnih Exim potencijalno ranjivih poslužitelja ima oko 1,5 milijuna.

Exim je zakrpljen - zakrpi još jednom. Nova Remote Command Execution u Exim 4.92 kroz jedan zahtjev

Pretraživanje Exim-poslužitelja u Shodanu

Zaštita

  • Najjednostavnija, ali nepreporučena opcija — ne koristiti TLS, što će dovesti do slanja poruka u otvorenom obliku.
  • Mnoge su prednosti izbjegavanja iskorištavanja ranjivosti ažuriranjem na verziju Exim Internet Mailer 4.92.2.
  • Ako ažuriranje ili instalacija zakrpljene verzije nije moguća, možete postaviti ACL u konfiguraciji Exima za opciju acl_smtp_mail s 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: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster