Ranljivosti v OpenBSD, ki omogočajo stopnjevanje privilegijev in obvod avtentikacije v smtpd, ldapd in radiusd

Podjetje Qualys razkrila štiri ranljivosti v OpenBSD, od katerih vam eden omogoča povezavo na daljavo brez preverjanja pristnosti z nekaterimi omrežnimi storitvami, drugi trije pa za povečanje njihovih privilegijev v sistemu. Poročilo Qualys je opozorilo na hiter odziv razvijalcev OpenBSD - vse težave so bile odpraviti в OpenBSD 6.5 и OpenBSD 6.6 v 40 urah po zasebnem obvestilu.

Ranljivost, ki jo je mogoče izkoristiti na daljavo, povzroča napaka pri urejanju klica upravljalnika za preverjanje pristnosti v knjižnici libc, ki kliče
/usr/libexec/auth/login_style program, ki posreduje argumente v ukazni vrstici. Vključno s tem, ko kličete login_style z uporabo izbirnega parametra "-s service", je dovoljeno posredovanje imena protokola. Če je na začetku uporabniškega imena uporabljen znak »-«, bo to ime ob zagonu login_style obravnavano kot možnost. V skladu s tem, če kot uporabniško ime med preverjanjem pristnosti podate »-schallenge« ali »-schallenge: passwd«, bo login_style zahtevo zaznal kot zahtevo za uporabo upravljalnika S/ključ.

Težava je v tem, da je protokol S/Key v login_style podprt le formalno, vendar je dejansko prezrt z izhodom znaka uspešne avtentikacije. Tako se lahko napadalec predstavlja kot uporabnik "-schallenge" in zaobide preverjanje pristnosti ter pridobi dostop brez podajanja gesla ali ključev. Težava lahko vpliva na vse omrežne storitve, ki za preverjanje pristnosti uporabljajo redne klice libc. Na primer, zmožnost obhoda avtentikacije je potrjena v smtpd (AUTH PLAIN), ldapd in radiusd.

Ranljivost se ne manifestira v sshd, saj ima dodatno zaščito s preverjanjem prisotnosti uporabnika v sistemu. Vendar pa lahko sshd uporabite za testiranje, ali je sistem dovzeten za ranljivost - pri dostopu do uporabniškega imena "-sresponse:passwd" povezava prekine, saj sshd čaka, da login_passwd vrne parametre klica (izziv) in login_passwd čaka na prenos manjkajočih parametrov (ime "- sresponse" je vzeto kot možnost). Morebiten lokalni napadalec bi lahko poskušal obiti avtentikacijo v pripomočku su, vendar posredovanje imena "-sresponse" povzroči zrušitev procesa zaradi vrnitve ničelnega kazalca pri izvajanju funkcije getpwnam_r("-schallenge", ...) .

Druge ranljivosti:

  • CVE-2019-19520 – Lokalno stopnjevanje privilegijev prek manipulacije pripomočka xlock, ki je priložen zastavici sgid, ki spremeni skupino v »auth«. V kodi xlock je redefinicija poti knjižnice prepovedana le, če je spremenjen ID uporabnika (setuid), kar napadalcu omogoča, da spremeni spremenljivko okolja "LIBGL_DRIVERS_PATH" in organizira nalaganje svoje knjižnice v skupni rabi, katere koda bo izvedena po stopnjevanju privilegijev v skupino "auth".
  • CVE-2019-19522 – Omogoča lokalnemu uporabniku v skupini »auth« zagon kode kot root, ko je v sistemu omogočeno preverjanje pristnosti S/Key ali YubiKey (privzeto ni omogočeno). Članstvo v skupini "auth", do katere lahko dostopate z izkoriščanjem zgornje ranljivosti xlock, omogoča zapisovanje datotek v imenika /etc/skey in /var/db/yubikey. Napadalec lahko na primer doda novo datoteko /etc/skey/root za ustvarjanje enkratnih ključev za korensko preverjanje pristnosti prek S/Key.
  • CVE-2019-19519 - Možnost povečanja omejitev virov z manipulacijami s pripomočkom su. Pri podajanju opcije »-L«, ki pomeni ciklično ponavljanje poskusov avtentikacije v primeru neuspeha, se uporabniški razred nastavi le enkrat in se ob naslednjih poskusih ne ponastavi. Napadalec lahko izvede "su -l -L" ob prvem poskusu vnosa prijave nekoga drugega z drugim razredom računa, vendar pri drugem poskusu uspešno avtentikacijo pod samim seboj. V tem primeru bodo uporabniku nastavljene omejitve, ki ustrezajo uporabniškemu razredu, podanemu ob prvem poskusu (na primer največje število procesov ali velikost pomnilnika za proces). Metoda deluje samo za izposojo omejitev od neprivilegiranih uporabnikov, saj mora biti korenski uporabnik v skupini koles.

Poleg tega je mogoče opozoriti izvajanje v OpenBSD nova metoda za preverjanje veljavnosti sistemskih klicev, kar dodatno otežuje izkoriščanje ranljivosti. Metoda omogoča izvajanje sistemskih klicev le, če se do njih dostopa iz predhodno registriranih pomnilniških območij. Za označevanje področij spomina predlagano nov sistemski klic msyscall().

Vir: opennet.ru