OpenBSD eskalacija privilegija i provjera autentičnosti zaobilaze ranjivosti u smtpd, ldapd i radiusd

Tvrtka Qualys otkriveno četiri ranjivosti u OpenBSD-u, od kojih vam jedan omogućuje daljinsko povezivanje bez autentifikacije na neke mrežne usluge, a ostala tri povećavaju vaše privilegije u sustavu. Izvješće Qualysa zabilježilo je brz odgovor programera OpenBSD-a - svi problemi su bili eliminiran в OpenBSD 6.5 и OpenBSD 6.6 u roku od 40 sati nakon privatne obavijesti.

Ranjivost koja se može daljinski iskoristiti uzrokovana je pogreškom u pozivanju rukovatelja autentifikacijom u biblioteci libc, koja poziva
program /usr/libexec/auth/login_style prosljeđivanje argumenata na naredbenom retku. Uključujući prilikom pozivanja login_style korištenjem izbornog parametra “-s service”, moguće je prenijeti naziv protokola. Ako koristite znak "-" na početku korisničkog imena, ovo će se ime smatrati opcijom prilikom pokretanja login_style. U skladu s tim, ako navedete “-schallenge” ili “-schallenge:passwd” kao korisničko ime tijekom autentifikacije, tada će login_style percipirati zahtjev kao zahtjev za korištenje rukovatelja S/Ključ.

Problem je u tome što je S/Key protokol u login_style podržan samo formalno, ali se zapravo zanemaruje s ispisom znaka uspješne autentifikacije. Dakle, napadač može, predstavljajući se kao korisnik "-challenge", zaobići autentifikaciju i dobiti pristup bez davanja lozinke ili ključeva. Sve mrežne usluge koje koriste standardne libc pozive za provjeru autentičnosti su potencijalno zahvaćene problemom. Na primjer, mogućnost zaobilaženja provjere autentičnosti podržana je u smtpd (AUTH PLAIN), ldapd i radiusd.

Ranjivost se ne pojavljuje u sshd-u jer ima dodatnu zaštitu koja provjerava prisutnost korisnika u sustavu. Međutim, sshd se može koristiti za testiranje ranjivosti sustava - kada se pristupa korisničkom imenu "-sresponse:passwd", veza se prekida, budući da sshd čeka da login_passwd vrati parametre izazova, a login_passwd čeka parametre koji nedostaju da biti poslan (naziv "- sresponse" tretira se kao opcija). Lokalni napadač potencijalno bi mogao pokušati zaobići provjeru autentičnosti u uslužnom programu su, ali prosljeđivanje naziva "-sresponse" uzrokuje pad procesa vraćanjem nultog pokazivača prilikom izvršavanja funkcije getpwnam_r("-schallenge", ...).

Ostale ranjivosti:

  • CVE-2019-19520 Lokalna eskalacija privilegija putem manipulacije pomoćnim programom xlock isporučenim s zastavom sgid koja mijenja grupu u "auth". U xlock kodu, redefiniranje staza do biblioteka zabranjeno je samo kada se promijeni korisnički identifikator (setuid), što napadaču omogućuje promjenu varijable okruženja “LIBGL_DRIVERS_PATH” i organiziranje učitavanja njegove dijeljene biblioteke, čiji će kod biti izvršen nakon podizanja privilegija grupi “auth”.
  • CVE-2019-19522 - Omogućuje lokalnom korisniku koji je član grupe "auth" pokretanje koda kao root kada je S/Key ili YubiKey provjera autentičnosti omogućena na sustavu (nije aktivno prema zadanim postavkama). Pridruživanje grupi "auth", kojoj se može pristupiti iskorištavanjem gore spomenute ranjivosti u xlocku, omogućuje vam pisanje datoteka u direktorije /etc/skey i /var/db/yubikey. Na primjer, napadač može dodati novu datoteku /etc/skey/root za generiranje jednokratnih ključeva za autentifikaciju kao root korisnika putem S/Key.
  • CVE-2019-19519 - mogućnost povećanja ograničenja resursa manipulacijom uslužnog programa su. Kada je navedena opcija "-L", koja uzrokuje cikličko ponavljanje pokušaja provjere autentičnosti ako su neuspješni, korisnička klasa postavlja se samo jednom i ne poništava se pri sljedećim pokušajima. Napadač može izvršiti "su -l -L" pri prvom pokušaju da unese tuđu prijavu s drugom klasom računa, ali pri drugom pokušaju može se uspješno autentificirati kao on sam. U ovoj situaciji, korisnik će biti podvrgnut ograničenjima na temelju korisničke klase navedene u prvom pokušaju (na primjer, najveći broj procesa ili veličina memorije za proces). Metoda radi samo za ograničenja posuđivanja od neprivilegiranih korisnika, budući da root korisnik mora biti u skupini kotača).

Dodatno, možete napomenuti implementacija u OpenBSD-u nova metoda za provjeru valjanosti sistemskih poziva, što dodatno komplicira iskorištavanje ranjivosti. Metoda omogućuje izvođenje sistemskih poziva samo ako im se pristupa iz prethodno registriranih memorijskih područja. Za označavanje memorijskih područja zaprosio novi sistemski poziv msyscall().

Izvor: opennet.ru