
Nemrégiben, a nyár elején tömeges felhívások indultak az Exim 4.92 verzióra történő frissítésre a CVE-2019-10149 sebezhetőség miatt (). A napokban derült ki, hogy a Sustes nevű rosszindulatú program kihasználja ezt a sebezhetőséget.
Most pedig az összes sürgősen frissített felhasználó újra „örvendezhet”: 2019. július 21-én a Zerons kutató kritikus sebezhetőséget fedezett fel az Exim Mail Transfer agent (MTA) TLS használata közben a 4.80-tól 4.92.1-ig terjedően, amely lehetővé teszi a távoli privilegizált jogokkal rendelkező kód végrehajtását. ().
Sérülékenység
A sebezhetőség fennáll a GnuTLS és OpenSSL könyvtárak használata során, amikor biztonságos TLS kapcsolatot létesítenek.
Heiko Schlittermann fejlesztő elmondása szerint az Exim konfigurációs fájlja alapértelmezetten nem használ TLS-t, azonban sok disztribúció telepítéskor létrehozza a szükséges tanúsítványokat és engedélyezi a biztonságos kapcsolatot. Ezen kívül az újabb Exim verziók automatikusan beállítják a tls_advertise_hosts=* opciót, és létrehozzák a szükséges tanúsítványokat.
a konfigurációtól függően. A legtöbb disztribúció alapértelmezetten engedélyezi, de az Exim-nek tanúsítványra és kulcsra van szüksége a TLS kiszolgálóként való működéshez. Valószínű, hogy a disztribúciók a telepítés során létrehoznak egy tanúsítványt. Az újabb Exim verziók alapértelmezés szerint a tls_advertise_hosts opciót „*”-ra állítják, és önaláírt tanúsítványt hoznak létre, ha nincs megadva.
A sebezhetőség alapja a SNI (Server Name Indication) helytelen kezelése, amely technológiát 2003-ban vezették be az RFC 3546-ban, hogy a kliens megfelelő tanúsítványt kérhessen a domain névhez. ) a TLS kézfogás során. A támadónak elegendő, ha egy SNI-t küld, amely egy visszaperjel („”) és egy nullaszimbolum („ ”) végződik.
A Qualys kutatói feltárták a string_printing(tls_in.sni) funkcióban lévő hibát, amely a „” helytelen escaping-jében rejlik. Ennek következtében a visszaperjel nem escape-elt formában kerül be a print spool fejléc fájlba. E fájl, amelynek privilegizált jogai vannak, beolvasható a spool_read_header() funkció által, ami heap overflow-hoz vezet.
Érdemes megjegyezni, hogy jelenleg az Exim fejlesztői létrehozták a sebezhetőség PoC-ját, amely parancsok végrehajtását teszi lehetővé egy távoli sebezhető szerveren, de ez még nem áll nyilvános elérésre. A hiba kihasználásának egyszerűsége miatt ez csupán idő kérdése, és meglehetősen rövid időn belül várható.
A Qualys részletesebb kutatása megismerhető .

Az SNI használata a TLS-ben
A potenciálisan sebezhető nyílt szerverek száma
Egy nagy hosting szolgáltató statisztikái szerint E-Soft Inc szeptember 1-jén a bérelt szervereken a 4.92-es verziót a hosztok több mint 70%-a használja.
Verzió
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%
Más verziók
25568
5.04%
E-Soft Inc statisztikája
Ha a keresőszolgáltatáshoz fordulunk , akkor az 5,250,000 szerver adatbázisból:
- kb. 3,500,000 használja az Exim 4.92-t (kb. 1,380,000 SSL/TLS használatával);
- több mint 74,000 használja a 4.92.1-et (kb. 25,000 SSL/TLS használatával).
Így a nyilvánosan ismert és hozzáférhető, potenciálisan sebezhető Exim szerverek száma körülbelül 1.5 millió.

Exim szerverek keresése a Shodan-ban
Védelem
- A legegyszerűbb, de nem ajánlott megoldás a TLS használatának mellőzése, ami a levelek nyílt formában való továbbításához vezet.
- Jobb megoldás a sebezhetőség kihasználásának elkerülésére a verzióra történő frissítés .
- Ha a frissítés vagy a javított verzió telepítése nem lehetséges, akkor az Exim konfigurációjában beállítható az ACL 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}}}}
Forrás: habr.com
