Ranjivost koja se može daljinski iskoristiti na poslužitelju e-pošte qmail

Istraživači sigurnosti iz Qualysa pokazala prilika eksploatacije ranjivosti u qmail mail serveru, slavni još 2005. (CVE-2005-1513), ali je ostao nezakrpan jer je autor qmaila tvrdio da je nerealno stvoriti radni exploit koji bi se mogao koristiti za napad na sustave u zadanoj konfiguraciji. Qualys je uspio pripremiti exploit koji opovrgava ovu pretpostavku i omogućuje pokretanje udaljenog izvršavanja koda na poslužitelju slanjem posebno dizajnirane poruke.

Problem je uzrokovan prekoračenjem cijelog broja u funkciji stralloc_readyplus(), koje se može dogoditi prilikom obrade vrlo velike poruke. Rad je zahtijevao 64-bitni sustav s više od 4 GB virtualne memorije. Kada je ranjivost izvorno analizirana 2005., Daniel J. Bernstein je tvrdio da se pretpostavka u kodu da je veličina dodijeljenog niza uvijek unutar 32-bitne vrijednosti temelji na činjenici da nitko ne daje gigabajte memorije svakom procesu. Tijekom proteklih 15 godina 64-bitni sustavi na poslužiteljima zamijenili su 32-bitne sustave, a količina isporučene memorije i propusnost mreže dramatično su porasli.

Održavatelji paketa qmail uzeli su u obzir Bernsteinovu napomenu i ograničili dostupnu memoriju prilikom pokretanja procesa qmail-smtpd (na primjer, u Debianu 10 ograničenje je postavljeno na 7 MB). No, inženjeri iz Qualysa otkrili su da to nije dovoljno te se, osim na qmail-smtpd, daljinski napad može izvršiti i na proces qmail-local, koji je ostao neograničen u svim testiranim paketima. Kao dokaz, pripremljen je prototip exploita koji je bio prikladan za napad na Debian paket s qmailom u zadanoj konfiguraciji.
Da bi organizirao daljinsko izvršavanje koda tijekom napada, poslužitelj zahtijeva 4 GB slobodnog prostora na disku i 8 GB RAM-a.
Eksploatacija vam omogućuje pokretanje bilo koje naredbe ljuske s pravima bilo kojeg korisnika u sustavu, osim root korisnika i korisnika sustava koji nemaju vlastiti poddirektorij u direktoriju “/home” (proces qmail-local pokreće se s pravima lokalnog korisnika kojemu se vrši dostava).

Napad je izveden
slanjem vrlo velike poruke pošte, uključujući nekoliko redaka zaglavlja, veličine približno 4 GB i 576 MB. Obrada takvog niza u qmail-local rezultira prekoračenjem cijelog broja pri pokušaju isporuke poruke lokalnom korisniku. Integer overflow zatim dovodi do prekoračenja međuspremnika prilikom kopiranja podataka i mogućnosti prepisivanja memorijskih stranica libc kodom. Manipuliranjem rasporeda prenesenih podataka također je moguće prepisati adresu funkcije "open()", zamjenjujuć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
sustav(".qmail-ekstenzija"). No budući da se dio datoteke s "ekstenzijom" generira na temelju adrese primatelja (na primjer, "localuser-extension@localdomain"), napadači mogu organizirati slanje naredbe za izvođenje navođenjem korisničke "localuser-;command ;@localdomain” kao primatelja poruke.

Tijekom analize koda također su identificirane dvije ranjivosti u dodatnoj zakrpi qmail-verify, koja je dio paketa za Debian. Prva ranjivost (CVE-2020-3811) omogućuje zaobilaženje provjere adrese e-pošte, a drugi (CVE-2020-3812) dovodi do curenja lokalnih informacija. Konkretno, prva ranjivost omogućuje vam da zaobiđete provjeru točnosti adrese koja se koristi u eksploataciji za slanje naredbe (provjera ne radi za adrese bez domene, kao što je “localuser-;command;”). Druga se ranjivost može koristiti za provjeru prisutnosti datoteka i direktorija na sustavu, uključujući one kojima može pristupiti samo root (qmail-verify radi s root pravima), putem izravnog poziva lokalnom rukovatelju.

Kako bi se zaobišao problem, Bernstein je preporučio pokretanje qmail procesa s ukupnim ograničenjem dostupne memorije (“softlimit -m12345678”), u kojem slučaju se problem blokira. Kao alternativna metoda zaštite također se spominje ograničavanje maksimalne veličine obrađene poruke kroz datoteku “control/databytes” (prema zadanim postavkama nije kreirana sa zadanim postavkama, qmail ostaje ranjiv). Dodatno, "control/databytes" ne štiti od lokalnih napada korisnika sustava, budući da ograničenje uzima u obzir samo qmail-smtpd.

Problem utječe na paket netqmail, uključen u Debian repozitorije. Skup zakrpa je pripremljen za ovaj paket, eliminirajući i stare ranjivosti iz 2005. (dodavanjem tvrdih ograničenja memorije kodu funkcije alloc()) i nove probleme u qmail-verify. Odvojeno pripremljeno ažurirana verzija zakrpe qmail-verify. Programeri grane notqmail pripremili vlastite zakrpe za blokiranje starih problema, a također su počeli raditi na uklanjanju svih mogućih prekoračenja cjelobrojnih brojeva u kodu.

Izvor: opennet.ru

Dodajte komentar