Patched Exim – plaaster uuesti. Värske kaugkäskude täitmine versioonis Exim 4.92 ühes päringus

Patched Exim – plaaster uuesti. Värske kaugkäskude täitmine versioonis Exim 4.92 ühes päringus

Hiljuti, varasuvel, kutsuti haavatavuse CVE-4.92-2019 tõttu laialdaselt üles Eximi värskendama versioonile 10149 (Värskendage Exim kiiresti versioonile 4.92 - on aktiivne infektsioon / Sudo Null IT News). Ja hiljuti selgus, et Sustes pahavara otsustas seda haavatavust ära kasutada.

Nüüd saavad kõik need, kes kiiresti uuendasid, taas "rõõmustada": 21. juulil 2019 avastas teadlane Zerons kriitilise haavatavuse Exim Mail Transfer agent (MTA), kui kasutate TLS-i versioonide jaoks alates 4.80 4.92.1 üles kaasa arvatud, võimaldades kaugjuhtimist käivitada privilegeeritud õigustega kood (CVE-2019-15846).

Haavatavus

Haavatavus esineb nii GnuTLS-i kui ka OpenSSL-i teekide kasutamisel turvalise TLS-ühenduse loomisel.

Arendaja Heiko Schlittermanni sõnul ei kasuta Eximis olev konfiguratsioonifail vaikimisi TLS-i, kuid paljud distributsioonid loovad installimise käigus vajalikud sertifikaadid ja võimaldavad turvalist ühendust. Selle valiku installivad ka Eximi uuemad versioonid tls_advertise_hosts=* ja genereerida vajalikud sertifikaadid.

oleneb konfiguratsioonist. Enamik distrosid lubab selle vaikimisi, kuid Exim vajab TLS-serverina töötamiseks sertifikaati + võtit. Tõenäoliselt loovad Distrod seadistamise ajal sertifikaadi. Uuemates Eximsis on suvand tls_advertise_hosts vaikimisi "*" ja loob ise allkirjastatud sertifikaadi, kui seda pole ette nähtud.

Haavatavus ise seisneb SNI (Server Name Indication, 2003. aastal RFC 3546-s kasutusele võetud tehnoloogia, mille abil klient taotleb domeeninime jaoks õiget sertifikaati) vales töötlemises. TLS SNI standardi levitamine / WEBO Groupi ajaveeb / Sudo Null IT-uudised) TLS-i käepigistuse ajal. Ründaja peab lihtsalt saatma SNI, mis lõpeb kaldkriipsuga ("") ja nullmärgiga (" ").

Qualysi teadlased avastasid funktsioonis string_printing(tls_in.sni) vea, mis hõlmab "" vale põgenemist. Selle tulemusel kirjutatakse kaldkriips prindipooli päise faili ilma paokoodita. Seejärel loeb funktsioon spool_read_header() seda faili privilegeeritud õigustega, mis viib kuhja ülevooluni.

Väärib märkimist, et hetkel on Eximi arendajad loonud haavatavuste PoC kaugserveris käskude täitmisega, kuid see pole veel avalikult saadaval. Vea hõlpsa kasutamise tõttu on see vaid aja küsimus ja üsna lühike.

Qualyse täpsema uurimuse leiate siin.

Patched Exim – plaaster uuesti. Värske kaugkäskude täitmine versioonis Exim 4.92 ühes päringus

SNI kasutamine TLS-is

Potentsiaalselt haavatavate avalike serverite arv

Suure hostingu pakkuja statistika järgi E-Soft Inc 1. septembri seisuga on renditud serverites versioon 4.92 kasutusel enam kui 70% hostidest.

versioon
Serverite arv
Protsent

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%

Muud versioonid
25568
5.04%

E-Soft Inc ettevõtte statistika

Kui kasutate otsingumootorit shōdan, siis serveri andmebaasis olevast 5,250,000 XNUMX XNUMX-st:

  • umbes 3,500,000 4.92 1,380,000 kasutavad Exim XNUMX (umbes XNUMX XNUMX XNUMX SSL/TLS-i kasutades);
  • üle 74,000 4.92.1, kasutades 25,000 (umbes XNUMX XNUMX kasutades SSL/TLS).

Seega on avalikult teadaolevate ja juurdepääsetavate Eximi potentsiaalselt haavatavate serverite arv umbes 1.5 miljonit.

Patched Exim – plaaster uuesti. Värske kaugkäskude täitmine versioonis Exim 4.92 ühes päringus

Otsige Shodanis Eximi servereid

kaitse

  • Lihtsaim, kuid mitte soovitatav võimalus on mitte kasutada TLS-i, mille tulemusel saadetakse meilisõnumid selgeks.
  • Haavatavuse ärakasutamise vältimiseks oleks parem uuendada versioonile Exim Internet Mailer 4.92.2.
  • Kui paigatud versiooni värskendamine või installimine on võimatu, saate selle valiku jaoks Eximi konfiguratsioonis määrata ACL-i acl_smtp_mail järgmiste reeglitega:
    # 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}}}}

Allikas: www.habr.com

Lisa kommentaar