Ranjivosti u OpenSMTPD-u koje omogućavaju daljinski i lokalni pristup root-u

Qualys Company otkriveno još jedna udaljena kritična ranjivost (CVE-2020-8794) na serveru pošte OpenSMTPD, razvijen od strane OpenBSD projekta. Poput onog identifikovanog krajem januara ranjivost, novi problem omogućava daljinsko izvršavanje proizvoljnih komandi ljuske na serveru sa root korisničkim pravima. Ranjivost eliminisan u izdanju OpenSMTPD 6.6.4p1.

Problem je uzrokovan greškom u kodu koji isporučuje poštu udaljenom serveru pošte (ne u kodu koji upravlja dolaznim vezama). Napad je moguć i na strani klijenta i na strani servera. Na strani klijenta, napad je moguć u podrazumevanoj konfiguraciji OpenSMTPD, u kojoj OpenSMTPD prihvata zahteve samo na internom mrežnom interfejsu (localhost) i šalje mail poruke na spoljne servere. Da bi se iskoristila ranjivost, dovoljno je da, tokom dostave pisma, OpenSMTPD uspostavi sesiju sa serverom pošte koji kontroliše napadač, ili da se napadač može uglaviti u klijentsku vezu (MITM ili preusmeravanje tokom napada preko DNS-a ili BGP-a). ).

Za napad na strani servera, OpenSMTPD mora biti konfigurisan da prima zahtjeve vanjske mreže od drugih servera pošte ili da služi uslugama trećih strana koje vam omogućavaju da pošaljete zahtjev na proizvoljnu e-poštu (na primjer, obrasci za potvrdu adrese na web stranicama). Na primjer, napadač se može povezati na OpenSMTPD server i poslati pogrešno pismo (nepostojećem korisniku), što će dovesti do toga da odgovor pošalje pismo sa kodom greške (bounce) na server napadača. Napadač može iskoristiti ranjivost kada se OpenSMTPD poveže kako bi dostavio obavještenje serveru napadača. Komande ljuske koje su ubačene tokom napada smeštene su u datoteku koja se izvršava sa root pravima kada se OpenSMTPD ponovo pokrene, tako da napadač mora da sačeka da se OpenSMTPD ponovo pokrene ili da pokrene pad OpenSMTPD da bi završio napad.

Problem je prisutan u funkciji mta_io() u kodu za raščlanjivanje višelinijskog odgovora koji vraća udaljeni server nakon uspostavljanja veze (na primjer, "250-ENHANCEDSTATUSCODES" i "250 HELP"). OpenSMTPD izračunava da prvi red sadrži trocifreni broj i tekst odvojen znakom „-“, a drugi red sadrži trocifreni broj i tekst odvojen razmakom. Ako trocifreni broj nije praćen razmakom i tekstom u drugom redu, pokazivač koji se koristi za definiranje teksta postavlja se na bajt nakon znaka '\0' i pokušava se kopirati podatak nakon kraja linije u bafer.

Na zahtjev OpenBSD projekta, objavljivanje detalja o iskorištavanju ranjivosti je odgođeno do 26. februara kako bi se omogućilo korisnicima da ažuriraju svoje sisteme. Problem je prisutan u bazi koda od decembra 2015. godine, ali je eksploatacija prije izvršavanja koda sa root privilegijama moguća od maja 2018. godine. Istraživači su pripremili radni prototip eksploatacije, koji je uspješno testiran u OpenSMTPD verzijama za OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (testiranje) i Fedora 31.

U OpenSMTPD također identifikovan Još jedna ranjivost (CVE-2020-8793) koja omogućava lokalnom korisniku da pročita prvi red bilo koje datoteke na sistemu. Na primjer, možete pročitati prvi red /etc/master.passwd, koji sadrži hash lozinke root korisnika. Ranjivost vam takođe omogućava da pročitate ceo sadržaj datoteke u vlasništvu drugog korisnika ako se ova datoteka nalazi u istom sistemu datoteka kao direktorijum /var/spool/smtpd/. Problem se ne može iskoristiti na mnogim Linux distribucijama gdje je vrijednost /proc/sys/fs/protected_hardlinks postavljena na 1.

Problem je posljedica nepotpune eliminacije problemi, izrečeno tokom revizije koju je proveo Qualys 2015. godine. Napadač može postići izvršenje svog koda sa pravima grupe “_smtpq” postavljanjem varijable “PATH=”. i postavljanje skripte koja se zove makemap u trenutni direktorij (uslužni program smtpctl pokreće makemap bez eksplicitnog navođenja putanje). Dobijanjem pristupa grupi "_smtpq", napadač tada može izazvati stanje trke (kreirati veliku datoteku u izvanmrežnom direktoriju i poslati SIGSTOP signal) i, prije nego što se obrada završi, zamijeniti datoteku u offline direktoriju tvrdom simbolična veza koja upućuje na ciljnu datoteku čiji sadržaj treba pročitati.

Važno je napomenuti da vam u Fedori 31 ranjivost omogućava da odmah dobijete privilegije root grupe, budući da je proces smtpctl opremljen root zastavicom setgid, umjesto zastavom setgid smtpq. Dobijanjem pristupa root grupi, možete prepisati sadržaj /var/lib/sss/mc/passwd i dobiti potpuni root pristup sistemu.

izvor: opennet.ru

Dodajte komentar