Otkriveni detalji kritične ranjivosti u Eximu

Objavljeno korektivno izdanje Primjer 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 SNI-ju. Ranjivost identificiran od strane Qualysa.

problem predstaviti u rukovatelju za izbjegavanje posebnih znakova u nizu (string_interpret_escape() iz niza.c) i uzrokovan je znakom '\' na kraju niza koji se interpretira prije nultog znaka ('\0') i izbjegava ga. Prilikom izbjegavanja, niz '\' i sljedeći nulti kod kraja retka tretiraju se kao jedan znak, a pokazivač se pomiče na podatke izvan retka, koji se tretiraju kao nastavak retka.

Kod koji poziva string_interpret_escape() dodjeljuje međuspremnik za odvod na temelju stvarne veličine, a izloženi pokazivač završava u području izvan granica međuspremnika. Sukladno tome, kada se pokušava obraditi ulazni niz, dolazi do situacije kada se podaci čitaju iz područja izvan granica dodijeljenog međuspremnika, a pokušaj pisanja neizbjegnutog niza može dovesti do pisanja izvan granica međuspremnika.

U zadanoj konfiguraciji, ranjivost se može iskoristiti slanjem posebno dizajniranih podataka SNI-u prilikom uspostavljanja sigurne veze s poslužiteljem. Problem se također može iskoristiti mijenjanjem peerdn vrijednosti u konfiguracijama konfiguriranim za provjeru autentičnosti certifikata klijenta ili prilikom uvoza certifikata. Napad preko SNI i peerdn je moguć počevši od izdanja Primjer 4.80, u kojem je funkcija string_unprinting() korištena za ispis peerdn i SNI sadržaja.

Pripremljen je prototip exploit-a za napad putem SNI-a, koji radi na arhitekturama i386 i amd64 na Linux sustavima s Glibc-om. Iskorištavanje koristi prekrivanje podataka na području gomile, što rezultira prepisivanjem memorije u kojoj je pohranjen naziv datoteke dnevnika. Naziv datoteke zamijenjen je s "/../../../../../../../../etc/passwd". Zatim se prepisuje varijabla s adresom pošiljatelja, koja se prvo sprema u log, što vam omogućuje dodavanje novog korisnika u sustav.

Ažuriranja paketa s ispravcima ranjivosti koje izdaju distribucije Debian, Ubuntu, Fedora, SUSE/openSUSE и FreeBSD. RHEL i CentOS problem nije osjetljiv, budući da Exim nije uključen u njihov redoviti repozitorij paketa (in TOPLO обновление već formirana, ali za sada nije postavljeno u javno spremište). U Exim kodu problem je riješen jednolinijskim zakrpa, koji onemogućuje efekt izbjegavanja obrnute kose crte ako je na kraju retka.

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

uvjet odbijanja = ${if eq{\\}{${substr{-1}{1}{$tls_in_sni}}}}
uvjet odbijanja = ${if eq{\\}{${substr{-1}{1}{$tls_in_peerdn}}}}

Izvor: opennet.ru

Dodajte komentar