Pakattu Exim - korjaus taas. Tuore etäkomentojen suoritus Exim 4.92:ssa yhdessä pyynnöstä

Pakattu Exim - korjaus taas. Tuore etäkomentojen suoritus Exim 4.92:ssa yhdessä pyynnöstä

Äskettäin, alkukesästä, kehotettiin laajasti päivittämään Exim versioon 4.92 CVE-2019-10149-haavoittuvuuden vuoksi (Päivitä Exim kiireellisesti versioon 4.92 - aktiivinen infektio / Sudo Null IT News). Äskettäin kävi ilmi, että Sustes-haittaohjelma päätti hyödyntää tätä haavoittuvuutta.

Nyt kaikki kiireesti päivittäneet voivat "iloitella" taas: tutkija Zerons löysi 21. heinäkuuta 2019 kriittisen haavoittuvuuden Exim Mail Transfer agent (MTA), kun käytät TLS:ää versioille alkaen 4.80 4.92.1 ylös mukaan lukien, mahdollistaen etäkäytön suorittaa koodin etuoikeutetuilla oikeuksilla (CVE-2019-15846).

Haavoittuvuus

Haavoittuvuus on olemassa käytettäessä sekä GnuTLS- että OpenSSL-kirjastoja suojattua TLS-yhteyttä muodostettaessa.

Kehittäjä Heiko Schlittermannin mukaan Eximin konfiguraatiotiedosto ei ole oletuksena käytä TLS:ää, mutta monet jakelut luovat tarvittavat sertifikaatit asennuksen aikana ja mahdollistavat suojatun yhteyden. Myös uudemmat Exim-versiot asentavat vaihtoehdon tls_advertise_hosts=* ja luo tarvittavat varmenteet.

riippuu kokoonpanosta. Useimmat jakelut mahdollistavat sen oletuksena, mutta Exim tarvitsee varmenteen + avaimen toimiakseen TLS-palvelimena. Luultavasti Distrot luovat varmenteen asennuksen aikana. Uudemmissa Eximissä on tls_advertise_hosts-vaihtoehto, jonka oletusarvo on "*", ja se luo itseallekirjoitetun varmenteen, jos sellaista ei ole.

Haavoittuvuus itsessään piilee SNI:n (Server Name Indication, teknologia, joka otettiin käyttöön vuonna 2003 RFC 3546:ssa, jotta asiakas voi pyytää oikeaa varmennetta verkkotunnukselle) virheellisessä käsittelyssä. TLS SNI -standardin jakelu / WEBO Groupin blogi / Sudo Null IT News) TLS-kättelyn aikana. Hyökkääjän on vain lähetettävä kenoviivaan ("") ja tyhjään merkkiin (" ") päättyvä SNI.

Qualysin tutkijat ovat havainneet virheen string_printing(tls_in.sni)-funktiosta, joka sisältää virheellisen ""-koodin pakotuksen. Seurauksena on, että kenoviiva kirjoitetaan ilman koodinvaihtomerkkiä tulostuspuolan otsikkotiedostoon. Spool_read_header()-funktio lukee tämän tiedoston etuoikeutetuilla oikeuksilla, mikä johtaa keon ylivuotoon.

On syytä huomata, että tällä hetkellä Exim-kehittäjät ovat luoneet haavoittuvuuksien PoC:n suorittamalla komentoja haavoittuvalla etäpalvelimella, mutta se ei ole vielä julkisesti saatavilla. Koska bugi on helppo hyödyntää, se on vain ajan kysymys ja melko lyhyt.

Tarkempi Qualysin tutkimus löytyy täällä.

Pakattu Exim - korjaus taas. Tuore etäkomentojen suoritus Exim 4.92:ssa yhdessä pyynnöstä

SNI:n käyttö TLS:ssä

Mahdollisesti haavoittuvien julkisten palvelimien määrä

Suuren hosting-palveluntarjoajan tilastojen mukaan E-Soft Inc 1. syyskuuta vuokrapalvelimilla versiota 4.92 käytetään yli 70 prosentissa isännistä.

Versio
Palvelinten määrä
prosentti

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%

Muut versiot
25568
5.04%

E-Soft Oy:n yritystilastot

Jos käytät hakukonetta shodanin, sitten palvelintietokannan 5,250,000 XNUMX XNUMX:sta:

  • noin 3,500,000 4.92 1,380,000 käyttää Exim XNUMX:ta (noin XNUMX XNUMX XNUMX SSL/TLS:n avulla);
  • yli 74,000 4.92.1 käytettäessä 25,000:tä (noin XNUMX XNUMX käytettäessä SSL/TLS:ää).

Näin ollen julkisesti tunnettuja ja saatavilla olevia Exim-palvelimia on mahdollisesti haavoittuvia 1.5 miljoonaa.

Pakattu Exim - korjaus taas. Tuore etäkomentojen suoritus Exim 4.92:ssa yhdessä pyynnöstä

Etsi Exim-palvelimia Shodanista

suojaus

  • Yksinkertaisin, mutta ei suositeltava vaihtoehto on olla käyttämättä TLS:ää, jolloin sähköpostiviestit välitetään edelleen selkeästi.
  • Haavoittuvuuden hyödyntämisen välttämiseksi olisi parempi päivittää versioon Exim Internet Mailer 4.92.2.
  • Jos korjatun version päivittäminen tai asentaminen on mahdotonta, voit määrittää ACL:n Exim-kokoonpanossa vaihtoehdolle acl_smtp_mail seuraavilla säännöillä:
    # 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}}}}

Lähde: will.com

Lisää kommentti