Popravljen Exim - ponovno popravi. Sveže izvajanje daljinskega ukaza v Exim 4.92 v eni zahtevi

Popravljen Exim - ponovno popravi. Sveže izvajanje daljinskega ukaza v Exim 4.92 v eni zahtevi

Pred kratkim, v začetku poletja, so bili razširjeni pozivi k posodobitvi Exima na različico 4.92 zaradi ranljivosti CVE-2019-10149 (Nujno posodobite Exim na 4.92 - obstaja aktivna okužba / Sudo Null IT News). In pred kratkim se je izkazalo, da se je zlonamerna programska oprema Sustes odločila izkoristiti to ranljivost.

Zdaj se lahko vsi tisti, ki so nujno posodobili, znova "veselijo": 21. julija 2019 je raziskovalec Zerons odkril kritično ranljivost v Exim Mail Transfer agent (MTA) pri uporabi TLS za različice od 4.80 4.92.1 up vključno, kar omogoča daljinsko izvajati kodo s privilegiranimi pravicami (CVE-2019-15846).

Ranljivost

Ranljivost je prisotna pri uporabi knjižnic GnuTLS in OpenSSL pri vzpostavljanju varne povezave TLS.

Po besedah ​​razvijalca Heika Schlittermanna konfiguracijska datoteka v Eximu privzeto ne uporablja TLS, vendar številne distribucije med namestitvijo ustvarijo potrebna potrdila in omogočijo varno povezavo. Tudi novejše različice Exima namestijo možnost tls_advertise_hosts=* in ustvarite potrebna potrdila.

odvisno od konfiguracije. Večina distribucij ga privzeto omogoča, vendar Exim potrebuje potrdilo + ključ, da deluje kot strežnik TLS. Verjetno Distros ustvari Cert med namestitvijo. Novejši Eximi imajo privzeto možnost tls_advertise_hosts na "*" in ustvarijo samopodpisano potrdilo, če ni na voljo.

Sama ranljivost je v nepravilni obdelavi SNI (Server Name Indication, tehnologija, uvedena leta 2003 v RFC 3546 za odjemalca, da zahteva pravilno potrdilo za ime domene, Distribucija standarda TLS SNI / Blog skupine WEBO / Sudo Null IT News) med rokovanjem TLS. Napadalec mora samo poslati SNI, ki se konča s poševnico nazaj ("") in ničelnim znakom (" ").

Raziskovalci iz Qualysa so odkrili napako v funkciji string_printing(tls_in.sni), ki vključuje nepravilno ubežanje »«. Posledično je poševnica obrnjena brez ubežnega načina zapisana v datoteko glave tiskalne vrstice. To datoteko nato s privilegiranimi pravicami prebere funkcija spool_read_header(), kar vodi do prelivanja kopice.

Omeniti velja, da so trenutno razvijalci Exima ustvarili PoC ranljivosti z izvajanjem ukazov na oddaljenem ranljivem strežniku, vendar še ni javno dostopen. Zaradi enostavnosti izkoriščanja hrošča je le vprašanje časa in precej kratkega.

Podrobnejšo študijo Qualysa lahko najdete tukaj.

Popravljen Exim - ponovno popravi. Sveže izvajanje daljinskega ukaza v Exim 4.92 v eni zahtevi

Uporaba SNI v TLS

Število potencialno ranljivih javnih strežnikov

Glede na statistiko velikega ponudnika gostovanja E-Soft Inc s 1. septembrom je na najetih strežnikih različica 4.92 uporabljena v več kot 70% hostov.

različica
Število strežnikov
Odstotek

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%

Druge različice
25568
5.04%

Statistika podjetja E-Soft Inc

Če uporabljate iskalnik Shodan, potem od 5,250,000 v strežniški bazi podatkov:

  • približno 3,500,000 uporablja Exim 4.92 (približno 1,380,000 uporablja SSL/TLS);
  • več kot 74,000 uporablja 4.92.1 (približno 25,000 uporablja SSL/TLS).

Tako je javno znanih in dostopnih potencialno ranljivih strežnikov Exim približno 1.5M.

Popravljen Exim - ponovno popravi. Sveže izvajanje daljinskega ukaza v Exim 4.92 v eni zahtevi

Poiščite strežnike Exim v Shodanu

zaščita

  • Najenostavnejša, vendar nepriporočljiva možnost je, da ne uporabljate TLS, zaradi česar bodo e-poštna sporočila posredovana v čistem stanju.
  • Da bi se izognili izkoriščanju ranljivosti, bi bilo bolje, da posodobite na različico Exim Internet Mailer 4.92.2.
  • Če ni mogoče posodobiti ali namestiti popravljene različice, lahko nastavite ACL v konfiguraciji Exima za možnost acl_smtp_mail z naslednjimi pravili:
    # 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}}}}

Vir: www.habr.com

Dodaj komentar