Ranljivosti v OpenSMTPD, ki omogočajo oddaljeni in lokalni korenski dostop

Podjetje Qualys razkrila druga oddaljena kritična ranljivost (CVE-2020-8794) v poštnem strežniku OpenSMTPD, ki ga je razvil projekt OpenBSD. Kot tistega, ki so ga identificirali konec januarja ranljivost, nova težava omogoča oddaljeno izvajanje poljubnih lupinskih ukazov na strežniku s pravicami korenskega uporabnika. Ranljivost odpraviti v izdaji OpenSMTPD 6.6.4p1.

Težavo povzroča napaka v kodi, ki dostavlja pošto oddaljenemu poštnemu strežniku (ne v kodi, ki obravnava dohodne povezave). Napad je možen tako na strani odjemalca kot na strani strežnika. Na strani odjemalca je napad možen v privzeti konfiguraciji OpenSMTPD, v kateri OpenSMTPD sprejema zahteve samo na notranjem omrežnem vmesniku (localhost) in pošilja poštna sporočila zunanjim strežnikom. Za izkoriščanje ranljivosti je dovolj, da med dostavo pisma OpenSMTPD vzpostavi sejo s poštnim strežnikom, ki ga nadzoruje napadalec, ali da se lahko napadalec zagozdi v odjemalsko povezavo (MITM ali preusmeritev med napadi prek DNS ali BGP). ).

Za napad na strani strežnika mora biti OpenSMTPD konfiguriran za prejemanje zunanjih omrežnih zahtev od drugih poštnih strežnikov ali storitev tretjih oseb, ki vam omogočajo pošiljanje zahteve na poljubno e-pošto (na primer obrazci za potrditev naslova na spletnih mestih). Napadalec se lahko na primer poveže s strežnikom OpenSMTPD in pošlje napačno pismo (neobstoječemu uporabniku), kar bo privedlo do pošiljanja pisma s kodo napake (bounce) na napadalčev strežnik. Napadalec lahko izkoristi ranljivost, ko se OpenSMTPD poveže, da pošlje obvestilo napadalčevemu strežniku. Ukazi lupine, vstavljeni med napadom, so postavljeni v datoteko, ki se izvede s korenskimi pravicami, ko se OpenSMTPD znova zažene, tako da mora napadalec počakati, da se OpenSMTPD znova zažene, ali sproži zrušitev OpenSMTPD, da dokonča napad.

Težava je prisotna v funkciji mta_io() v kodi za razčlenjevanje večvrstičnega odgovora, ki ga vrne oddaljeni strežnik po vzpostavitvi povezave (na primer "250-ENHANCEDSTATUSCODES" in "250 HELP"). OpenSMTPD izračuna, da prva vrstica vključuje trimestno številko in besedilo, ločeno z znakom »-«, druga vrstica pa vsebuje trimestno število in besedilo, ločeno s presledkom. Če trimestnemu številu ne sledita presledek in besedilo v drugi vrstici, se kazalec, ki se uporablja za definiranje besedila, nastavi na bajt, ki sledi znaku '\0', in poskuša se kopirati podatek, ki sledi koncu vrstice v medpomnilnik.

Na zahtevo projekta OpenBSD je bila objava podrobnosti o izkoriščanju ranljivosti odložena do 26. februarja, da bi lahko uporabniki posodobili svoje sisteme. Težava je v kodni bazi prisotna od decembra 2015, vendar je izkoriščanje pred izvajanjem kode s korenskimi pravicami možno od maja 2018. Raziskovalci so pripravili delujoč prototip izkoriščanja, ki je bil uspešno testiran v različicah OpenSMTPD za OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (testiranje) in Fedora 31.

Tudi v OpenSMTPD ugotovljeno Druga ranljivost (CVE-2020-8793), ki lokalnemu uporabniku omogoča branje prve vrstice katere koli datoteke v sistemu. Na primer, lahko preberete prvo vrstico /etc/master.passwd, ki vsebuje zgoščeno vrednost gesla korenskega uporabnika. Ranljivost vam omogoča tudi branje celotne vsebine datoteke, ki je v lasti drugega uporabnika, če se ta datoteka nahaja v istem datotečnem sistemu kot imenik /var/spool/smtpd/. Težave ni mogoče izkoristiti v številnih distribucijah Linuxa, kjer je vrednost /proc/sys/fs/protected_hardlinks nastavljena na 1.

Težava je posledica nepopolne eliminacije težave, izraženo med revizijo, ki jo je leta 2015 izvedel Qualys. Napadalec lahko doseže izvedbo svoje kode s pravicami skupine “_smtpq” z nastavitvijo spremenljivke “PATH=.” in postavitev skripta z imenom makemap v trenutni imenik (pripomoček smtpctl zažene makemap brez izrecne podaje poti). Z dostopom do skupine »_smtpq« lahko napadalec nato povzroči stanje tekmovanja (ustvari veliko datoteko v imeniku brez povezave in pošlje signal SIGSTOP) in preden je obdelava končana, zamenja datoteko v imeniku brez povezave s trdim simbolna povezava, ki kaže na ciljno datoteko, katere vsebino je treba prebrati.

Omeniti velja, da vam v Fedori 31 ranljivost omogoča, da takoj pridobite privilegije korenske skupine, saj je proces smtpctl opremljen s korensko zastavo setgid namesto zastavice setgid smtpq. Če pridobite dostop do korenske skupine, lahko prepišete vsebino /var/lib/sss/mc/passwd in pridobite popoln korenski dostop do sistema.

Vir: opennet.ru

Dodaj komentar