OpenBSD privileegide eskaleerimine ja autentimine väldivad smtpd, ldapd ja radiusd haavatavusi

Qualys ettevõte paljastatud neli haavatavused OpenBSD-s, millest üks võimaldab kaugühendust ilma autentimiseta mõne võrguteenusega luua ja ülejäänud kolm suurendavad teie privileege süsteemis. Qualy aruanne märkis OpenBSD arendajate kiiret reageerimist – kõik probleemid olid kõrvaldatud в OpenBSD 6.5 и OpenBSD 6.6 40 tunni jooksul pärast privaatset teavitamist.

Kaugkasutatava haavatavuse põhjuseks on viga libc teegi autentimistöötleja kutsumisel, mis kutsub
programm /usr/libexec/auth/login_style edastab argumendid käsureal. Sealhulgas valikulise parameetri "-s service" abil login_style helistamisel on võimalik protokolli nimi üle kanda. Kui kasutate kasutajanime alguses märki "-", käsitletakse seda nime sisselogimisstiili käivitamisel valikuna. Seega, kui määrate autentimisel kasutajanimeks "-schallenge" või "-schallenge:passwd", siis login_style tajub päringut töötleja kasutamise taotlusena. S/Key.

Probleem on selles, et login_style S/Key protokolli toetatakse ainult formaalselt, kuid tegelikult ignoreeritakse seda eduka autentimise märgi väljundiga. Seega saab ründaja end kasutajaks "-challenge" esitades autentimisest mööda minna ja pääseda juurde ilma parooli või võtmeid esitamata. Probleem võib mõjutada kõiki võrguteenuseid, mis kasutavad autentimiseks standardseid libc-kutseid. Näiteks võimalust autentimisest mööda minna toetavad smtpd (AUTH PLAIN), ldapd ja radiusd.

Sshd-s haavatavust ei kuvata, kuna sellel on täiendav kaitse, mis kontrollib kasutaja olemasolu süsteemis. Kuid sshd abil saab testida süsteemi haavatavust – kasutajanimele "-sresponse:passwd" sisenemisel katkeb ühendus, kuna sshd ootab väljakutse parameetrite tagastamist login_passwd ja login_passwd ootab puuduvate parameetrite sisestamist. saata (nime "- sresponse" käsitletakse valikuna). Kohalik ründaja võib potentsiaalselt proovida su utiliidi autentimisest mööda minna, kuid nime "-sresponse" edastamine põhjustab protsessi krahhi, tagastades funktsiooni getpwnam_r("-schallenge", ...) käivitamisel null-osuti.

Muud haavatavused:

  • CVE-2019-19520 Kohalike õiguste eskaleerimine sgid lipuga kaasasoleva utiliidi xlock manipuleerimise kaudu, muutes rühma väärtuseks "auth". Xlocki koodis on teekide teede ümberdefineerimine keelatud ainult siis, kui kasutaja identifikaatorit (setuid) muudetakse, mis võimaldab ründajal muuta keskkonnamuutujat LIBGL_DRIVERS_PATH ja korraldada oma jagatud teegi laadimist, mille kood käivitatakse. pärast õiguste tõstmist grupile "auth".
  • CVE-2019-19522 – võimaldab kohalikul kasutajal, kes on grupi "auth" liige, käivitada koodi administraatorina, kui S/Key või YubiKey autentimine on süsteemis lubatud (vaikimisi pole aktiivne). Auth-rühmaga liitumine, millele pääseb juurde ülalmainitud xlocki haavatavust ära kasutades, võimaldab kirjutada faile kataloogidesse /etc/skey ja /var/db/yubikey. Näiteks võib ründaja lisada uue faili /etc/skey/root, et luua ühekordsed võtmed juurkasutaja autentimiseks S/Key kaudu.
  • CVE-2019-19519 – võimalus suurendada ressursipiiranguid su utiliidiga manipuleerimise kaudu. Kui on määratud suvand "-L", mis põhjustab ebaõnnestumise korral autentimiskatsete tsüklilist kordamist, määratakse kasutajaklass ainult üks kord ja seda ei lähtestata järgmistel katsetel. Ründaja võib käivitada "su -l -L" esimesel katsel sisestada teise kontoklassiga kellegi teise sisselogimisandmed, kuid teisel katsel saab ta edukalt ennast autentida. Sellises olukorras kehtivad kasutajale piirangud, mis põhinevad esimesel katsel määratud kasutajaklassil (näiteks protsesside maksimaalne arv või protsessi mälumaht). Meetod töötab ainult privilegeeritud kasutajatelt laenamise limiitide puhul, kuna juurkasutaja peab olema rattarühmas).

Lisaks võib märkida rakendamine OpenBSD-s on uus meetod süsteemikutsete kehtivuse kontrollimiseks, mis muudab haavatavuste ärakasutamise veelgi keerulisemaks. Meetod võimaldab süsteemikutseid teostada ainult siis, kui neile pääseb juurde varem registreeritud mälupiirkondadest. Mälupiirkondade märgistamiseks pakutud uus süsteemikõne msyscall().

Allikas: opennet.ru