Vulnerabilități în OpenSMTPD care permit accesul rădăcină de la distanță și local

Compania Qualys dezvăluit o altă vulnerabilitate critică la distanță (CVE-2020-8794) în serverul de e-mail OpenSMTPD, dezvoltat de proiectul OpenBSD. Ca și cel identificat la sfârșitul lunii ianuarie vulnerabilitate, o nouă problemă face posibilă executarea de la distanță a comenzilor shell arbitrare pe un server cu drepturi de utilizator root. Vulnerabilitate eliminat în chestiune OpenSMTPD 6.6.4p1.

Problema este cauzată de o eroare în codul care livrează corespondența către serverul de e-mail la distanță (nu în codul care se ocupă de conexiunile de intrare). Atacul este posibil atât pe partea client, cât și pe partea serverului. Pe partea clientului, atacul este posibil în configurația implicită a OpenSMTPD, în care OpenSMTPD acceptă cereri doar pe interfața internă de rețea (localhost) și trimite mesaje de e-mail către servere externe. Pentru a exploata vulnerabilitatea, este suficient ca, în timpul livrării unei scrisori, OpenSMTPD să stabilească o sesiune cu un server de e-mail controlat de atacator, sau ca atacatorul să poată intra în conexiunea client (MITM sau redirecționare în timpul atacurilor prin DNS sau BGP). ).

Pentru un atac la nivel de server, OpenSMTPD trebuie configurat pentru a primi solicitări de rețea externă de la alte servere de e-mail sau pentru a servi servicii terțe care vă permit să trimiteți o solicitare către un e-mail arbitrar (de exemplu, formulare de confirmare a adresei de pe site-uri web). De exemplu, un atacator se poate conecta la serverul OpenSMTPD și trimite o scrisoare incorectă (către un utilizator inexistent), ceea ce va duce la un răspuns care trimite o scrisoare cu un cod de eroare (bounce) către serverul atacatorului. Un atacator poate exploata vulnerabilitatea atunci când OpenSMTPD se conectează pentru a trimite o notificare către serverul atacatorului. Comenzile shell injectate în timpul atacului sunt plasate într-un fișier care este executat cu drepturi root atunci când OpenSMTPD este repornit, astfel încât atacatorul trebuie să aștepte ca OpenSMTPD să se repornească sau să inițieze o blocare a OpenSMTPD pentru a finaliza atacul.

Problema este prezentă în funcția mta_io() din codul de analiză a răspunsului pe mai multe linii returnat de serverul la distanță după stabilirea unei conexiuni (de exemplu, „250-ENHANCEDSTATUSCODES” și „250 HELP”). OpenSMTPD calculează că prima linie include un număr din trei cifre și text separate de un caracter „-”, iar a doua linie conține un număr din trei cifre și text separate printr-un spațiu. Dacă un număr din trei cifre nu este urmat de un spațiu și de text pe a doua linie, indicatorul folosit pentru a defini textul este setat la octetul care urmează caracterului „\0” și se încearcă copiarea datelor după sfârșit. a liniei în buffer.

La solicitarea proiectului OpenBSD, publicarea detaliilor despre exploatarea vulnerabilității a fost amânată până pe 26 februarie pentru a permite utilizatorilor să își actualizeze sistemele. Problema este prezentă în baza de cod din decembrie 2015, dar exploatarea înainte de executarea codului cu privilegii root este posibilă din mai 2018. Cercetătorii au pregătit un prototip funcțional al exploit-ului, care a fost testat cu succes în versiunile OpenSMTPD pentru OpenBSD 6.6, OpenBSD 5.9, Debian 10, Debian 11 (testare) și Fedora 31.

Și în OpenSMTPD identificat O altă vulnerabilitate (CVE-2020-8793) care permite unui utilizator local să citească prima linie a oricărui fișier din sistem. De exemplu, puteți citi prima linie din /etc/master.passwd, care conține hash-ul parolei utilizatorului root. Vulnerabilitatea vă permite, de asemenea, să citiți întregul conținut al unui fișier deținut de alt utilizator dacă acest fișier se află în același sistem de fișiere cu directorul /var/spool/smtpd/. Problema nu este exploatabilă pe multe distribuții Linux unde valoarea /proc/sys/fs/protected_hardlinks este setată la 1.

Problema este o consecință a eliminării incomplete Probleme, exprimat în timpul auditului efectuat de Qualys în 2015. Un atacator poate realiza executarea codului său cu drepturile grupului „_smtpq” prin setarea variabilei „PATH=.”. și plasarea unui script numit makemap în directorul curent (utilitatea smtpctl rulează makemap fără a specifica în mod explicit calea). Obținând acces la grupul „_smtpq”, atacatorul poate provoca o condiție de cursă (creează un fișier mare în directorul offline și trimite un semnal SIGSTOP) și, înainte de finalizarea procesării, înlocuiește fișierul din directorul offline cu un hard link simbolic care indică fișierul țintă al cărui conținut trebuie citit.

Este de remarcat faptul că în Fedora 31 vulnerabilitatea vă permite să obțineți imediat privilegiile grupului rădăcină, deoarece procesul smtpctl este echipat cu steag-ul rădăcină setgid, în loc de steag-ul setgid smtpq. Obținând acces la grupul rădăcină, puteți suprascrie conținutul /var/lib/sss/mc/passwd și puteți obține acces complet rădăcină la sistem.

Sursa: opennet.ru

Adauga un comentariu