Objavljen je izdanak poštanskog servera Exim 4.94.2 sa ispravkom 21 ranjivosti (CVE-2020-28007-CVE-2020-28026, CVE-2021-27216), koje je otkrila kompanija Qualys i predstavljene su pod kodnim imenom 21Nails. Deset problema može se iskoristiti na daljinu (uključujući izvršavanje koda s pravima root) uz manipulaciju SMTP komandama prilikom interakcije sa serverom.
Svake verzije Exim-a su pogođene, a njihova istorija se prati u Gitu od 2004. godine. Za 4 lokalne ranjivosti i 3 udaljene problema pripremljeni su funkcionalni prototipovi eksploita. Eksploiti za lokalne ranjivosti (CVE-2020-28007, CVE-2020-28008, CVE-2020-28015, CVE-2020-28012) omogućuju povećanje privilegija do korisnika root. Dva udaljena problema (CVE-2020-28020, CVE-2020-28018) omogućavaju izvršavanje koda bez autentifikacije s pravima korisnika exim (nakon čega se može dobiti root pristup iskorištavanjem jedne od lokalnih ranjivosti).
Ranjivost CVE-2020-28021 omogućava daljinsko izvršavanje koda s pravima root, ali zahteva autentifikovani pristup (korisnik mora uspostaviti autentifikovanu sesiju, nakon čega može iskoristiti ranjivost manipulišući parametrom AUTH u komandi MAIL FROM). Problem je uzrokovan time što napadač može postići zamenu stringa u headeru spool datoteke zbog zapisivanja vrednosti authenticated_sender bez odgovarajućeg escape-ovanja specijalnih karaktera (na primer, slanjem komande „MAIL FROM:<> AUTH=Raven+0AReyes“).
Dodatno se navodi da još jedna udaljena ranjivost CVE-2020-28017 može biti iskorišćena za izvršavanje koda s pravima korisnika 'exim' bez autentifikacije, ali zahteva više od 25 GB memorije. Za preostalih 13 ranjivosti potencijalno se takođe mogu unapred pripremiti eksploiti, ali rad u tom pravcu još uvek nije započet.
Razvijači Exim-a su o problemima obavešteni još u oktobru prošle godine i proveli su više od 6 meseci na razvoju ispravki. Svim administratorima se savetuje da hitno ažuriraju Exim na svojim poštanskim serverima. poslužiteljima do verzije 4.94.2. Sve verzije Exima do izdanja 4.94.2 su proglašene zastarjelim (obsolete). Objavljivanje nove verzije je usklađeno sa distribucijama koje su istovremeno objavile ažuriranja paketa: Ubuntu, Arch Linux, FreeBSD, Debian, SUSE i Fedora. RHEL i CentOS nisu pogođeni ovom problematikom, budući da Exim nije uključen u njihov službeni repozitorij paketa (u EPEL ažuriranje još nije dostupno).
Udaljene ranjivosti:
- CVE-2020-28017: Cjelobrojno prelivanje u funkciji receive_add_recipient();
- CVE-2020-28020: Cjelobrojno prelivanje u funkciji receive_msg();
- CVE-2020-28023: Čitanje izvan dodijeljene memorije u funkciji smtp_setup_msg();
- CVE-2020-28021: Umetanje nove linije u zaglavlje spool datoteke;
- CVE-2020-28022: Pisanje i čitanje izvan dodijeljene memorije u funkciji extract_option();
- CVE-2020-28026: Trunciranje i umetanje stringa u funkciji spool_read_header();
- CVE-2020-28019: Ruptura pokazivača funkcije nakon greške BDAT-a;
- CVE-2020-28024: Prelivanja kroz donju granicu memorije u funkciji smtp_ungetc();
- CVE-2020-28018: Pristup memoriji nakon njenog oslobađanja (use-after-free) u tls-openssl.c
- CVE-2020-28025: Čitanje izvan dodijeljene memorije u funkciji pdkim_finish_bodyhash().
Lokalne ranjivosti:
- CVE-2020-28007: Napad putem simboličke veze u direktoriju s Exim logovima;
- CVE-2020-28008: Napadi na direktorij sa spool-om;
- CVE-2020-28014: Kreiranje proizvoljne datoteke;
- CVE-2021-27216: Brisanje proizvoljne datoteke;
- CVE-2020-28011: Prelivanje memorije u funkciji queue_run();
- CVE-2020-28010: Pisanje izvan granica memorije u funkciji main();
- CVE-2020-28013: Prelivanje memorije u funkciji parse_fix_phrase();
- CVE-2020-28016: Pisanje izvan granica memorije u funkciji parse_fix_phrase();
- CVE-2020-28015: Umetanje nove linije u zaglavlje spool datoteke;
- CVE-2020-28012: Nedostatak close-on-exec zastavice za privilegirani neimenovani kanal;
- CVE-2020-28009: Cjelobrojno prelivanje u funkciji get_stdinput().
Izvor: opennet.ru
