ProHoster > Blog > Adminisztráció > Patched Exim - patch újra. Friss távoli parancsvégrehajtás az Exim 4.92-ben egy kérésben
Patched Exim - patch újra. Friss távoli parancsvégrehajtás az Exim 4.92-ben egy kérésben
A közelmúltban, nyár elején, a CVE-4.92-2019 biztonsági rés miatt széles körben elterjedt felszólítások érkeztek az Exim 10149-es verzióra való frissítésére (Sürgősen frissítse az Exim-et 4.92-re - aktív fertőzés van / Sudo Null IT News). Nemrég pedig kiderült, hogy a Sustes malware úgy döntött, hogy kihasználja ezt a biztonsági rést.
Most újra „örülhet” mindaz, aki sürgősen frissített: 21. július 2019-én Zerons kutató egy kritikus biztonsági rést fedezett fel Exim Mail Transfer agent (MTA) TLS használatakor verzióihoz 4.80 4.92.1 fel inkluzív, lehetővé téve a távoli privilegizált jogokkal futtatja a kódot (CVE-2019 15846-).
Sebezhetőség
A biztonsági rés akkor jelentkezik, ha a GnuTLS és az OpenSSL könyvtárakat is használja biztonságos TLS kapcsolat létrehozása során.
Heiko Schlittermann fejlesztő szerint az Exim konfigurációs fájlja alapértelmezés szerint nem használ TLS-t, de sok disztribúció a telepítés során létrehozza a szükséges tanúsítványokat, és lehetővé teszi a biztonságos kapcsolatot. Az Exim újabb verziói is telepítik az opciót tls_advertise_hosts=* és generálja a szükséges tanúsítványokat.
konfigurációtól függ. A legtöbb disztribúció alapértelmezés szerint engedélyezi, de az Eximnek szüksége van egy tanúsítvány + kulcsra, hogy TLS-kiszolgálóként működjön. Valószínűleg a disztribúciók létrehoznak egy tanúsítványt a telepítés során. Az újabb Eximekben a tls_advertise_hosts beállítás alapértelmezés szerint "*", és ha nincs megadva, önaláírt tanúsítványt hoz létre.
Maga a sérülékenység az SNI (Server Name Indication) helytelen feldolgozásában rejlik, egy olyan technológia, amelyet 2003-ban vezettek be az RFC 3546-ban, hogy az ügyfél a megfelelő tanúsítványt kérje egy domain névhez, A TLS SNI szabvány terjesztése / WEBO Group Blog / Sudo Null IT News) TLS-kézfogás közben. A támadónak csak egy fordított perjelre ("") és null karakterre (" ") végződő SNI-t kell küldenie.
A Qualys kutatói hibát fedeztek fel a string_printing(tls_in.sni) függvényben, ami a "" szó helytelen kilépését jelenti. Ennek eredményeként a fordított perjel megtisztítás nélkül kerül beírásra a nyomtatási sorfejlécfájlba. Ezt a fájlt a spool_read_header() függvény privilegizált jogokkal olvassa be, ami halom túlcsorduláshoz vezet.
Érdemes megjegyezni, hogy jelenleg az Exim fejlesztői a sebezhetőségek PoC-ját hoztak létre a parancsok végrehajtásával egy távoli sebezhető szerveren, de ez még nem elérhető nyilvánosan. A hiba egyszerű kihasználhatósága miatt ez csak idő kérdése, és meglehetősen rövid.
A Qualys részletesebb tanulmánya megtalálható itt.
SNI használata TLS-ben
A potenciálisan sebezhető nyilvános szerverek száma
Egy nagy tárhelyszolgáltató statisztikái szerint E-Soft Inc szeptember 1-től a bérelt szervereken a 4.92-es verziót használják a gazdagépek több mint 70%-án.
Változat
Szerverek száma
Százalék
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%
Egyéb verziók
25568
5.04%
E-Soft Inc cégstatisztika
Ha keresőt használsz Shodan, majd a szerveradatbázisban lévő 5,250,000 XNUMX XNUMX közül:
körülbelül 3,500,000 4.92 1,380,000-en használják az Exim XNUMX-t (körülbelül XNUMX XNUMX XNUMX-en SSL/TLS használatával);
több mint 74,000 4.92.1 25,000 használatával (kb. XNUMX XNUMX SSL/TLS használatával).
Így a nyilvánosan ismert és elérhető Exim potenciálisan sebezhető szerverek száma kb 1.5 millió.
Exim szerverek keresése Shodanban
védelem
A legegyszerűbb, de nem ajánlott lehetőség az, hogy nem használja a TLS-t, ami az e-mail üzenetek tiszta továbbítását eredményezi.
A sérülékenység kihasználásának elkerülése érdekében érdemesebb a verzióra frissíteni Exim Internet Mailer 4.92.2.
Ha nem lehetséges a javított verzió frissítése vagy telepítése, beállíthat egy ACL-t az Exim konfigurációjában az opcióhoz acl_smtp_mail a következő szabályokkal:
# 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}}}}