OpenBSD:n haavoittuvuudet, jotka mahdollistavat oikeuksien eskaloinnin ja todennuksen ohituksen smtpd-, ldapd- ja radiusd-tiedostoissa

Qualys Company paljastettiin neljä haavoittuvuuksia OpenBSD:ssä, joista yhden avulla voit muodostaa etäyhteyden ilman todennusta joihinkin verkkopalveluihin, ja muut kolme lisätäkseen oikeuksiaan järjestelmässä. Qualysin raportti pani merkille OpenBSD-kehittäjien nopean vastauksen - kaikki ongelmat olivat eliminoitu в OpenBSD 6.5 и OpenBSD 6.6 40 tunnin kuluessa yksityisilmoituksesta.

Etäkäyttöinen haavoittuvuus johtuu virheestä järjestettäessä kutsua libc-kirjaston todennuskäsittelijälle, joka kutsuu
/usr/libexec/auth/login_style ohjelma, joka välittää argumentteja komentorivillä. Mukaan lukien kutsuttaessa login_stylea valinnaisella parametrilla "-s service", protokollan nimen välittäminen on sallittua. Jos "-"-merkkiä käytetään käyttäjänimen alussa, tätä nimeä käsitellään vaihtoehtona, kun login_style suoritetaan. Vastaavasti, jos määrität käyttäjätunnukseksi "-schallenge" tai "-schallenge: passwd" todennuksen aikana, login_style havaitsee pyynnön pyynnöksi käyttää käsittelijää. S/Avain.

Ongelmana on, että S/Key-protokollaa login_stylessa tuetaan vain muodollisesti, mutta se jätetään huomiotta onnistuneen todennuksen merkin tuloksena. Siten hyökkääjä voi esiintyä "-schallenge"-käyttäjänä ja ohittaa todennuksen ja saada pääsyn määrittämättä salasanaa tai avaimia. Ongelma saattaa vaikuttaa kaikkiin verkkopalveluihin, jotka käyttävät tavallisia libc-kutsuja todentamiseen. Esimerkiksi kyky ohittaa todennus vahvistetaan parametreilla smtpd (AUTH PLAIN), ldapd ja radiusd.

Haavoittuvuus ei ilmene sshd:ssä, koska sillä on lisäsuojaus, joka tarkistaa käyttäjän läsnäolon järjestelmässä. Sshd:tä voidaan kuitenkin käyttää testaamaan, onko järjestelmä alttiina haavoittuvuudelle - käytettäessä käyttäjätunnusta "-sresponse:passwd", yhteys katkeaa, koska sshd odottaa login_passwd palauttaa puhelun parametrit (haaste) ja login_passwd odottaa puuttuvien parametrien siirtoa (nimi "- sresponse" otetaan vaihtoehtona). Mahdollinen paikallinen hyökkääjä voi yrittää ohittaa todennuksen su-apuohjelmassa, mutta nimen "-sresponse" välittäminen aiheuttaa prosessin kaatumisen, koska palautetaan nollaosoittimen getpwnam_r("-schallenge", ...) toimintoa suoritettaessa. .

Muut haavoittuvuudet:

  • CVE-2019-19520 - Paikallisten oikeuksien eskalointi manipuloimalla xlock-apuohjelmaa, joka tulee sgid-lipun mukana, joka muuttaa ryhmän arvoksi "auth". xlock-koodissa kirjastopolkujen uudelleenmäärittely on kielletty vain, kun käyttäjätunnusta (setuid) muutetaan, jolloin hyökkääjä voi muuttaa ympäristömuuttujaa "LIBGL_DRIVERS_PATH" ja järjestää jaetun kirjastonsa lataamisen, jonka koodi suoritetaan. sen jälkeen, kun oikeudet on siirretty "auth"-ryhmään.
  • CVE-2019-19522 - Sallii "auth"-ryhmän paikallisen käyttäjän suorittaa koodin pääkäyttäjänä, kun S/Key- tai YubiKey-todennus on käytössä järjestelmässä (ei ole oletuksena käytössä). "Auth"-ryhmän jäsenenä, johon pääsee hyödyntämällä yllä olevaa xlock-haavoittuvuutta, tiedostoja voidaan kirjoittaa hakemistoihin /etc/skey ja /var/db/yubikey. Hyökkääjä voi esimerkiksi lisätä uuden /etc/skey/root-tiedoston luodakseen kertaluontoisia avaimia pääkäyttäjän todentamista varten S/Keyn kautta.
  • CVE-2019-19519 - Mahdollisuus lisätä resurssirajoja manipuloimalla su-apuohjelmaa. Kun määritetään "-L"-vaihtoehto, joka tarkoittaa todennusyritysten syklistä toistamista epäonnistuessa, käyttäjäluokka asetetaan vain kerran, eikä sitä nollata myöhemmillä yrityksillä. Hyökkääjä voi suorittaa komennon "su -l -L" ensimmäisellä kerralla syöttää jonkun toisen kirjautumistunnukset eri tililuokilla, mutta toisella yrityksellä onnistuneesti todentaa itsensä. Tässä tilanteessa käyttäjälle asetetaan rajoitukset, jotka vastaavat ensimmäisellä yrityksellä määritettyä käyttäjäluokkaa (esimerkiksi prosessien enimmäismäärä tai prosessin muistin koko). Menetelmä toimii vain lainarajoilla ei-etuoikeutetuilta käyttäjiltä, ​​koska pääkäyttäjän on oltava pyöräryhmässä).

Lisäksi voidaan huomauttaa toteutus OpenBSD:ssä uusi menetelmä järjestelmäkutsujen oikeellisuuden tarkistamiseen, mikä vaikeuttaa entisestään haavoittuvuuksien hyödyntämistä. Menetelmä sallii järjestelmäkutsujen suorittamisen vain, jos niihin päästään aiemmin rekisteröidyiltä muistialueilta. Muistialueiden merkitseminen ehdotettu uusi järjestelmäkutsu msyscall().

Lähde: opennet.ru