Ranjivost na qmail serveru pošte koja se može daljinski iskoristiti

Istraživači sigurnosti iz Qualysa pokazao prilika eksploatacija ranjivosti na qmail serveru pošte, slavna još 2005. godine (CVE-2005-1513), ali je ostao nezakrpljen jer je autor qmail-a tvrdio da je nerealno kreirati radni eksploat koji bi se mogao koristiti za napad na sisteme u podrazumevanoj konfiguraciji. Qualys je bio u mogućnosti da pripremi eksploataciju koja opovrgava ovu pretpostavku i omogućava da se pokrene daljinsko izvršavanje koda na serveru slanjem posebno dizajnirane poruke.

Problem je uzrokovan prekomjernim cijelim brojem u funkciji stralloc_readyplus(), koji se može pojaviti prilikom obrade vrlo velike poruke. Za rad je bio potreban 64-bitni sistem sa više od 4 GB virtuelne memorije. Kada je ranjivost prvobitno analizirana 2005. godine, Daniel J. Bernstein je tvrdio da je pretpostavka u kodu da je veličina dodijeljenog niza uvijek unutar 32-bitne vrijednosti zasnovana na činjenici da niko ne daje gigabajte memorije svakom procesu. Tokom proteklih 15 godina, 64-bitni sistemi na serverima su zamenili 32-bitne sisteme, a količina isporučene memorije i propusni opseg mreže su dramatično porasli.

Održavači qmail paketa uzeli su u obzir Bernsteinovu napomenu i ograničili dostupnu memoriju prilikom pokretanja qmail-smtpd procesa (na primjer, u Debianu 10 ograničenje je postavljeno na 7MB). Ali inženjeri iz Qualysa su otkrili da to nije dovoljno i, pored qmail-smtpd, može se izvršiti daljinski napad na qmail-local proces, koji je ostao neograničen u svim testiranim paketima. Kao dokaz, pripremljen je prototip eksploatacije koji je bio prikladan za napad na Debian paket s qmailom u zadanoj konfiguraciji.
Za organizaciju daljinskog izvršavanja koda tokom napada, serveru je potrebno 4 GB slobodnog prostora na disku i 8 GB RAM-a.
Eksploatacija vam omogućava da pokrenete bilo koje komande ljuske sa pravima bilo kog korisnika u sistemu, osim za root i sistemske korisnike koji nemaju svoj poddirektorij u direktorijumu “/home” (qmail-local proces se pokreće sa pravima lokalnog korisnika kome se vrši dostava).

Napad je izveden
slanjem veoma velike e-mail poruke, uključujući nekoliko redova zaglavlja, veličine otprilike 4GB i 576MB. Obrada takvog niza u qmail-local rezultira prelivanjem cijelog broja pri pokušaju isporuke poruke lokalnom korisniku. Prelivanje celog broja onda dovodi do prekoračenja bafera prilikom kopiranja podataka i mogućnosti prepisivanja memorijskih stranica sa libc kodom. Manipulisanjem rasporeda prenetih podataka, takođe je moguće prepisati adresu funkcije „open()“, zamenjujući je adresom funkcije „system()“.

Zatim, u procesu pozivanja qmesearch() u qmail-local, datoteka “.qmail-extension” se otvara kroz open() funkciju, što dovodi do stvarnog izvršavanja funkcije
system(".qmail-extension"). Ali budući da se dio datoteke "proširenje" generira na osnovu adrese primatelja (na primjer, "localuser-extension@localdomain"), napadači mogu urediti da se naredba pošalje tako što će navesti korisnika "localuser-;command ;@localdomain” kao primalac poruke.

Tijekom analize koda, dvije ranjivosti su također identificirane u dodatnoj qmail-verify zakrpi, koja je dio paketa za Debian. Prva ranjivost (CVE-2020-3811) omogućava vam da zaobiđete verifikaciju adrese e-pošte, a drugi (CVE-2020-3812) dovodi do curenja lokalnih informacija. Konkretno, prva ranjivost vam omogućava da zaobiđete verifikaciju ispravnosti adrese korišćene u eksploataciji za slanje komande (provera ne radi za adrese bez domena, kao što je „localuser-;command;“). Druga ranjivost se može koristiti za provjeru prisutnosti datoteka i direktorija na sistemu, uključujući i one dostupne samo root-u (qmail-verify radi sa root pravima), putem direktnog poziva lokalnom rukovaocu.

Da zaobiđe problem, Bernstein je preporučio pokretanje qmail procesa sa ukupnim ograničenjem dostupne memorije (“softlimit -m12345678”), u kom slučaju je problem blokiran. Kao alternativni način zaštite pominje se i ograničavanje maksimalne veličine obrađene poruke kroz fajl “control/databytes” (podrazumevano se ne kreira sa podrazumevanim postavkama qmail ostaje ranjiv). Dodatno, "control/databytes" ne štiti od lokalnih napada korisnika sistema, pošto ograničenje uzima u obzir samo qmail-smtpd.

Problem utiče na paket netqmail, uključeno u Debian spremišta. Pripremljen je set zakrpa za ovaj paket, eliminišući kako stare ranjivosti iz 2005. (dodavanjem ograničenja tvrde memorije kodu funkcije alloc()) tako i nove probleme u qmail-verify. Odvojeno pripremljeno ažurirana verzija qmail-verify zakrpe. Developers grane notqmail pripremili vlastite zakrpe da blokiraju stare probleme, a također su počeli raditi na eliminaciji svih mogućih prekoračenja cijelih brojeva u kodu.

izvor: opennet.ru

Dodajte komentar