Otkrivena kritična ranjivost Exim-a

objavljeno korektivno oslobađanje Exim 4.92.2 uz eliminaciju kritičnih ranjivosti (CVE-2019-15846), što u zadanoj konfiguraciji može dovesti do daljinskog izvršavanja koda od strane napadača s root privilegijama. Problem se pojavljuje samo kada je TLS podrška omogućena i iskorištava se prosljeđivanjem posebno dizajniranog klijentskog certifikata ili modificirane vrijednosti u SNI. Ranjivost identifikovan od Qualysa.

problem prisutan u rukovaocu za izbjegavanje posebnih znakova u nizu (string_interpret_escape() iz string.c) i uzrokovan je znakom '\' na kraju stringa koji se tumači prije nultog znaka ('\0') i izbjegava ga. Prilikom izbjegavanja, sekvenca '\' i sljedeći null kod na kraju reda se tretiraju kao jedan znak i pokazivač se pomjera na podatke izvan reda, koji se tretiraju kao nastavak reda.

Kod koji poziva string_interpret_escape() dodeljuje bafer za odvod na osnovu stvarne veličine, a izloženi pokazivač završava u oblasti izvan granica bafera. U skladu s tim, kada se pokušava obraditi ulazni niz, dolazi do situacije kada se čitaju podaci iz područja izvan granica dodijeljenog bafera, a pokušaj upisivanja niza bez preklapanja može dovesti do pisanja izvan granica bafera.

U podrazumevanoj konfiguraciji, ranjivost se može iskoristiti slanjem posebno dizajniranih podataka SNI-u prilikom uspostavljanja bezbedne veze sa serverom. Problem se također može iskoristiti modificiranjem peerdn vrijednosti u konfiguracijama konfiguriranim za provjeru autentičnosti certifikata klijenta ili prilikom uvoza certifikata. Napad preko SNI-a i peerdn-a je moguć počevši od izdavanja Exim 4.80, u kojem je funkcija string_unprinting() korištena za odštampanje peerdn i SNI sadržaja.

Pripremljen je prototip eksploatacije za napad preko SNI, koji radi na i386 i amd64 arhitekturi na Linux sistemima sa Glibc-om. Eksploatacija koristi preklapanje podataka na području hrpe, što rezultira prepisivanjem memorije u kojoj je pohranjeno ime datoteke dnevnika. Ime datoteke se zamjenjuje sa "/../../../../../../../../etc/passwd". Zatim se prepisuje varijabla sa adresom pošiljaoca, koja se prvo pohranjuje u dnevnik, što vam omogućava da dodate novog korisnika u sistem.

Ažuriranja paketa sa ispravkama ranjivosti koje su objavile distribucije Debian, Ubuntu, fedora, SUSE/openSUSE и FreeBSD. RHEL i CentOS problem nije podložan, budući da Exim nije uključen u njihovo redovno spremište paketa (u TOPLO ažuriranje već formirana, ali za sada nije postavljeno u javno spremište). U Exim kodu problem je riješen jednolinerom patch, koji onemogućuje efekat izbegavanja obrnute kose crte ako je na kraju reda.

Kao rješenje za blokiranje ranjivosti, možete onemogućiti TLS podršku ili dodati
ACL odjeljak “acl_smtp_mail”:

uslov poricanja = ${if eq{\\}{${substr{-1}{1}{$tls_in_sni}}}}
poricanje uslov = ${if eq{\\}{${substr{-1}{1}{$tls_in_peerdn}}}}

izvor: opennet.ru

Dodajte komentar