Compania Qualys patru În OpenBSD, una dintre acestea permite conectarea la unele servicii de rețea fără autentificare, iar celelalte trei pot crește privilegiile în sistem. Raportul Qualys menționează reacția rapidă a dezvoltatorilor OpenBSD — toate problemele au fost în și rezolvate în termen de 40 de ore de la notificarea privată.
Vulnerabilitatea exploatabilă de la distanță este cauzată de o eroare în organizarea apelului handler-ului de autentificare în biblioteca libc, care apelează
programul /usr/libexec/auth/login_style cu transmiterea argumentelor în linia de comandă. De asemenea, la apelarea login_style cu opțiunea „-s service”, este permisă transmiterea numelui protocolului. Dacă se folosește simbolul „-” la începutul numelui de utilizator, acest nume va fi tratat ca o opțiune la pornirea login_style. Astfel, dacă se indică la autentificare numele de utilizator „-schallenge” sau „-schallenge:passwd”, login_style va interpreta apelul ca o solicitare de utilizare a handler-ului .
Problema este că protocolul S/Key în login_style este susținut doar formal, iar în realitate este ignorat, generând un indiciu de autentificare reușită. Astfel, un atacator se poate prezenta ca utilizator „-schallenge”, ocolind autentificarea și obținând acces fără a indica parola sau cheile. Potențial, această problemă afectează toate serviciile de rețea care folosesc apeluri standard libc pentru a efectua autentificarea. De exemplu, posibilitatea de a accesa fără autentificare este confirmată în smtpd (AUTH PLAIN), ldapd și radiusd.
În sshd, vulnerabilitatea nu se manifestă, deoarece acesta are o protecție suplimentară care verifică prezența utilizatorului în sistem. Totuși, sshd poate fi folosit pentru a verifica expunerea sistemului la vulnerabilitate — atunci când se accesează cu numele de utilizator „-sresponse:passwd”, conexiunea se blochează, deoarece sshd așteaptă ca login_passwd să returneze parametrii de apel (challenge), iar login_passwd așteaptă transmiterea parametrilor lipsă (numele „-sresponse” este perceput ca o opțiune). Potențial, un atacator local poate încerca să ocolească autentificarea în utilitarul su, dar transmiterea numelui „-sresponse” duce la prăbușirea procesului din cauza returnării unui pointer nul la executarea funcției getpwnam_r(„-schallenge”, ...).
Alte vulnerabilități:
- CVE-2019-19520 — creșterea locală a privilegiilor prin manipularea utilitarului xlock, livrat cu flagul sgid, care schimbă grupul în „auth”. În codul xlock, redefinirea căilor către biblioteci este interzisă doar în cazul schimbării identificatorului de utilizator (setuid), ceea ce permite atacatorului să schimbe variabila de mediu „LIBGL_DRIVERS_PATH” și să organizeze încărcarea bibliotecii sale partajate, codul căreia va fi executat după creșterea privilegiilor la grupul „auth”.
- CVE-2019-19522 — permite unui utilizator local, care face parte din grupul „auth”, să execute cod cu drepturi de root când este activat sistemul de autentificare prin S/Key sau YubiKey (care sunt dezactivate în mod implicit). Includerea în grupul „auth”, care poate fi obținută prin exploatarea vulnerabilității menționate anterior în xlock, permite scrierea de fișiere în directoarele /etc/skey și /var/db/yubikey. De exemplu, atacatorul poate adăuga un nou fișier /etc/skey/root pentru generarea de chei unice pentru autentificarea ca utilizator root prin S/Key.
- CVE-2019-19519 — posibilitatea de a crește limitele de resurse prin manipularea utilitarului su. Când este specificată opțiunea „-L”, care implică repetarea ciclică a încercărilor de autentificare în cazul eșecului, clasa utilizatorului este stabilită o singură dată și nu este resetată la încercările ulterioare. Atacatorul poate executa „su -l -L” și, la prima încercare, introduce un alt nume de utilizator cu o clasă diferită de cont, dar la a doua încercare se poate autentifica cu succes sub propriul cont. În această situație, utilizatorului îi vor fi stabilite limitele corespunzătoare clasei de utilizator specificată la prima încercare (de exemplu, numărul maxim de procese sau dimensiunea memoriei pentru proces). Metoda funcționează doar pentru împrumutul limitelor de la utilizatori neprivilegiați, deoarece pentru utilizatorul root este necesară prezența în grupul wheel).
apariția în OpenBSD a fost introdus un nou method de verificare a validității apelurilor de sistem, complicând suplimentar exploatarea vulnerabilităților. Metoda permite executarea apelurilor de sistem doar dacă acestea sunt invocate din zone de memorie înregistrate anterior. Pentru a marca zonele de memorie nou apel de sistem .
Sursa: opennet.ro
