Patched Exim – pataisykite dar kartą. Naujas nuotolinio komandų vykdymas Exim 4.92 vienoje užklausoje

Patched Exim – pataisykite dar kartą. Naujas nuotolinio komandų vykdymas Exim 4.92 vienoje užklausoje

Visai neseniai, vasaros pradžioje, buvo plačiai paplitę raginimai atnaujinti „Exim“ į 4.92 versiją dėl CVE-2019-10149 pažeidžiamumo (Skubiai atnaujinkite Exim į 4.92 - yra aktyvi infekcija / Sudo Null IT naujienos). Neseniai paaiškėjo, kad Sustes kenkėjiška programa nusprendė pasinaudoti šiuo pažeidžiamumu.

Dabar visi, kurie skubiai atnaujino, vėl gali „džiaugtis“: 21 m. liepos 2019 d. tyrėjas Zeronsas aptiko kritinį pažeidžiamumą Exim Mail Transfer agent (MTA), kai naudojate TLS versijoms nuo 4.80 4.92.1 iki imtinai, leidžiantis nuotoliniu būdu vykdyti kodą su privilegijuotomis teisėmis (CVE-2019-15846).

Pažeidžiamumas

Pažeidžiamumas yra naudojant GnuTLS ir OpenSSL bibliotekas, kai sukuriamas saugus TLS ryšys.

Kūrėjo Heiko Schlittermann teigimu, „Exim“ konfigūracijos failas pagal numatytuosius nustatymus nenaudoja TLS, tačiau daugelis platinimų įdiegimo metu sukuria reikiamus sertifikatus ir įgalina saugų ryšį. Taip pat naujesnėse „Exim“ versijose įdiegta parinktis tls_advertise_hosts=* ir sugeneruoti reikiamus sertifikatus.

priklauso nuo konfigūracijos. Dauguma platinimo įrenginių tai įgalina pagal numatytuosius nustatymus, tačiau „Exim“ reikia sertifikato + rakto, kad jis veiktų kaip TLS serveris. Tikriausiai Distros sukuria sertifikatą sąrankos metu. Naujesnėse programose yra tls_advertise_hosts parinktis, kurios numatytoji reikšmė yra „*“, ir sukuriamas savarankiškai pasirašytas sertifikatas, jei toks nėra.

Pats pažeidžiamumas slypi neteisingame SNI (serverio vardo indikacijos) apdorojime, 2003 m. RFC 3546 įdiegta technologija, skirta klientui prašyti teisingo domeno vardo sertifikato. TLS SNI standarto platinimas / WEBO grupės tinklaraštis / Sudo Null IT naujienos) per TLS rankos paspaudimą. Užpuolikas tiesiog turi išsiųsti SNI, kuris baigiasi pasviruoju brūkšniu ("") ir nuliniu simboliu (" ").

Tyrėjai iš Qualys aptiko klaidą string_printing(tls_in.sni) funkcijoje, dėl kurios neteisingai pašalinama „“. Todėl spausdinimo ritės antraštės faile pasvirasis brūkšnys įrašomas be kodo. Tada šį failą privilegijuotomis teisėmis nuskaito funkcija spool_read_header(), dėl kurios atsiranda krūvos perpildymas.

Verta paminėti, kad šiuo metu „Exim“ kūrėjai sukūrė pažeidžiamumų PoC, vykdydami komandas nuotoliniame pažeidžiamame serveryje, tačiau jis dar nėra viešai prieinamas. Dėl paprastos klaidos išnaudojimo tai tik laiko klausimas ir gana trumpas.

Išsamesnį Qualys tyrimą galima rasti čia.

Patched Exim – pataisykite dar kartą. Naujas nuotolinio komandų vykdymas Exim 4.92 vienoje užklausoje

SNI naudojimas TLS

Potencialiai pažeidžiamų viešųjų serverių skaičius

Pagal statistiką iš didelio prieglobos paslaugų teikėjo E-Soft Inc nuo rugsėjo 1 d. nuomojamuose serveriuose 4.92 versija naudojama daugiau nei 70% pagrindinių kompiuterių.

versija
Serverių skaičius
Procentas

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%

Kitos versijos
25568
5.04%

E-Soft Inc įmonės statistika

Jei naudojate paieškos variklį Šodanas, tada iš 5,250,000 XNUMX XNUMX serverio duomenų bazėje:

  • apie 3,500,000 4.92 1,380,000 naudoja Exim XNUMX (apie XNUMX XNUMX XNUMX naudoja SSL/TLS);
  • daugiau nei 74,000 4.92.1 naudojant 25,000 (apie XNUMX XNUMX naudojant SSL/TLS).

Taigi, viešai žinomų ir prieinamų Exim potencialiai pažeidžiamų serverių yra apie 1.5M.

Patched Exim – pataisykite dar kartą. Naujas nuotolinio komandų vykdymas Exim 4.92 vienoje užklausoje

Ieškoti Exim serverių Shodan

apsauga

  • Paprasčiausias, bet nerekomenduojamas variantas yra nenaudoti TLS, todėl el. laiškai bus persiunčiami aiškiai.
  • Norint išvengti pažeidžiamumo išnaudojimo, geriau būtų atnaujinti į versiją Exim Internet Mailer 4.92.2.
  • Jei neįmanoma atnaujinti arba įdiegti pataisytos versijos, parinkties Exim konfigūracijoje galite nustatyti ACL acl_smtp_mail su šiomis taisyklėmis:
    # 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}}}}

Šaltinis: www.habr.com