Ranjivosti u OpenSMTPD-u koje dopuštaju udaljeni i lokalni root pristup

Tvrtka Qualys otkriveno još jedna udaljena kritična ranjivost (CVE-2020-8794) u poslužitelju e-pošte OpenSMTPD, razvijen od strane projekta OpenBSD. Kao onaj identificiran krajem siječnja ranjivost, novi problem omogućuje daljinsko izvršavanje proizvoljnih naredbi ljuske na poslužitelju s pravima root korisnika. Ranjivost eliminiran u pitanju OpenSMTPD 6.6.4p1.

Problem je uzrokovan greškom u kodu koji isporučuje poštu udaljenom poslužitelju e-pošte (ne u kodu koji upravlja dolaznim vezama). Napad je moguć i na strani klijenta i na strani poslužitelja. Na strani klijenta, napad je moguć u zadanoj konfiguraciji OpenSMTPD-a, u kojoj OpenSMTPD prihvaća zahtjeve samo na internom mrežnom sučelju (localhost) i šalje e-poruke vanjskim poslužiteljima. Za iskorištavanje ranjivosti dovoljno je da tijekom dostave pisma OpenSMTPD uspostavi sesiju s poslužiteljem e-pošte kojim napadač upravlja ili da se napadač može ubaciti u vezu klijenta (MITM ili preusmjeravanje tijekom napada putem DNS-a ili BGP-a). ).

Za napad na strani poslužitelja, OpenSMTPD mora biti konfiguriran za primanje vanjskih mrežnih zahtjeva od drugih poslužitelja e-pošte ili posluživanje usluga trećih strana koje vam omogućuju slanje zahtjeva na proizvoljnu e-poštu (na primjer, obrasci za potvrdu adrese na web stranicama). Na primjer, napadač se može spojiti na OpenSMTPD poslužitelj i poslati netočno pismo (nepostojećem korisniku), što će dovesti do odgovora koji šalje pismo s kodom greške (bounce) na napadačev poslužitelj. Napadač može iskoristiti ranjivost kada se OpenSMTPD poveže kako bi isporučio obavijest napadačevom poslužitelju. Naredbe ljuske umetnute tijekom napada stavljaju se u datoteku koja se izvršava s root pravima kada se OpenSMTPD ponovno pokrene, tako da napadač mora čekati da se OpenSMTPD ponovno pokrene ili pokrenuti rušenje OpenSMTPD-a kako bi dovršio napad.

Problem je prisutan u funkciji mta_io() u kodu za raščlanjivanje višelinijskog odgovora koji vraća udaljeni poslužitelj nakon uspostavljanja veze (na primjer, "250-ENHANCEDSTATUSCODES" i "250 HELP"). OpenSMTPD izračunava da prvi red sadrži troznamenkasti broj i tekst odvojen znakom “-“, a drugi red sadrži troznamenkasti broj i tekst odvojen razmakom. Ako nakon troznamenkastog broja ne slijede razmak i tekst u drugom retku, pokazivač koji se koristi za definiranje teksta postavlja se na bajt koji slijedi nakon znaka '\0' i pokušava se kopirati podatak nakon kraja linije u međuspremnik.

Na zahtjev projekta OpenBSD, objava detalja o iskorištavanju ranjivosti odgođena je do 26. veljače kako bi se korisnicima omogućilo ažuriranje sustava. Problem je prisutan u bazi koda od prosinca 2015., ali je iskorištavanje prije izvršenja koda s root privilegijama moguće od svibnja 2018. Istraživači su pripremili radni prototip eksploatacije, koji je uspješno testiran u verzijama OpenSMTPD za OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (testiranje) i Fedora 31.

U OpenSMTPD također identificiran Još jedna ranjivost (CVE-2020-8793) koja lokalnom korisniku omogućuje čitanje prvog reda bilo koje datoteke na sustavu. Na primjer, možete pročitati prvi red /etc/master.passwd, koji sadrži hash zaporke root korisnika. Ranjivost vam također omogućuje čitanje cijelog sadržaja datoteke u vlasništvu drugog korisnika ako se ta datoteka nalazi u istom datotečnom sustavu kao /var/spool/smtpd/ direktorij. Problem se ne može iskoristiti na mnogim distribucijama Linuxa gdje je vrijednost /proc/sys/fs/protected_hardlinks postavljena na 1.

Problem je posljedica nepotpune eliminacije problem, izrečeno tijekom revizije koju je proveo Qualys 2015. godine. Napadač može postići izvršenje svog koda s pravima grupe “_smtpq” postavljanjem varijable “PATH=.” i postavljanje skripte pod nazivom makemap u trenutni direktorij (uslužni program smtpctl pokreće makemap bez izričitog navođenja staze). Dobivanjem pristupa grupi "_smtpq", napadač tada može uzrokovati stanje utrke (stvoriti veliku datoteku u izvanmrežnom direktoriju i poslati signal SIGSTOP) i, prije završetka obrade, zamijeniti datoteku u izvanmrežnom direktoriju tvrdim simbolička veza koja pokazuje na ciljnu datoteku čiji sadržaj treba pročitati.

Važno je napomenuti da u Fedori 31 ranjivost omogućuje trenutno dobivanje privilegija root grupe, budući da je smtpctl proces opremljen setgid root oznakom, umjesto setgid smtpq oznakom. Dobivanjem pristupa root grupi, možete prebrisati sadržaj /var/lib/sss/mc/passwd i dobiti puni root pristup sustavu.

Izvor: opennet.ru

Dodajte komentar