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.
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}}}}