He havaitsivat firejailissa haavoittuvuuden, joka salli pääkäyttäjän pääsyn järjestelmään

He julkaisivat hiljattain uutisen siitä haavoittuvuus havaittiin (jo lueteltu kohdassa CVE-2022-31214) Firejail-sovelluksen hiekkalaatikkotyökalussa, on yksityiskohtainen, että havaittu virhe voi antaa paikallisen käyttäjän tulla pääkäyttäjäksi isäntäjärjestelmässä.

Firejail käyttää nimiavaruusmekanismia, AppArmor- ja järjestelmäkutsusuodatusta (seccomp-bpf) Linuxissa eristämiseen, mutta vaatii korotettuja oikeuksia eristetyn julkaisun määrittämiseen, jotka se saa sitoutumalla suid-juurimerkkiapuohjelmaan tai suorittamalla sen sudon kanssa.

Haavoittuvuus johtuu "–join="-vaihtoehdon logiikan virheestä », suunniteltu muodostamaan yhteys eristettyyn ympäristöön, joka on jo käynnissä (samanlainen kuin hiekkalaatikkoympäristön sisäänkirjautumiskomento) ympäristössä, joka on määritetty siinä käynnissä olevan prosessin tunnuksella. Käynnistystä edeltävässä vaiheessa firejail havaitsee määritellyn prosessin oikeudet ja soveltaa niitä uuteen prosessiin, joka liittyy ympäristöön "–join"-vaihtoehdolla.

Ennen yhdistämistä, tarkistaa, onko määritetty prosessi käynnissä firejail-ympäristössä. Tämä tarkistus arvioi /run/firejail/mnt/join-tiedoston olemassaolon. Hyödyntämään haavoittuvuutta Hyökkääjä voi simuloida kuvitteellista ei-eristettyä palovankilaympäristöä käyttämällä mount-nimiavaruutta ja muodostamalla sitten yhteyden siihen käyttämällä "--join"-vaihtoehtoa.

Jos kokoonpano ei salli tila, jolla estetään lisäoikeuksien hankkiminen uusissa prosesseissa (prctl NO_NEW_PRIVS), firejail yhdistää käyttäjän kuvitteelliseen ympäristöön ja yrittää soveltaa aloitusprosessin käyttäjätunnusten (nimiavaruuden käyttäjä) käyttäjän nimiavaruuden määritystä ( PID 1).

Suurin osa liitosfunktion takana olevasta logiikasta on lähdekoodissa src/firejail/join.c-tiedostosta. Kriittiset koodin osat suoritetaan korotetut oikeudet (voimassa oleva UID 0). Prosessin tunnus välitettiin komennona riviargumentti tarkastetaan sen määrittämiseksi, onko se rsäiliö ja määritä jotkin sen ominaisuudet Se koskee myös uutta liittymisprosessia.

Tärkeimmät kriteerit päätettäessä liittyäkö kohdeprosessiin onnistuu on tiedoston läsnäolo kohteen liitännän nimiavaruudessa, prosessi löytyy hakemistosta /run/firejail/mnt/join. Tämä tarkistus tehdään f`is_ready_for_join()` -funktio. Tiedosto avataan näppäimellä l"O_RDONLY|O_CLOEXEC" -lippujen ja jäljityksen "fstat()" tulisi täyttää seuraavat vaatimukset:

– tiedoston on oltava tavallinen tiedosto.
– tiedoston on oltava käyttäjätunnuksen 0 omistuksessa (alkuperäiseltä käyttäjältä katsottuna
nimiavaruus).
– tiedoston tulee olla kooltaan 1 tavu.

Tämän seurauksena "firejail --join" kautta yhdistetty prosessi päätyy nimiavaruuteen käyttäjän alkuperäinen käyttäjätunnus muuttumattomilla oikeuksilla, mutta eri kiinnityspistetilassa, jota hyökkääjä hallitsee kokonaan.

Tuloksena oleva "liitetty" komentotulkki jää nyt alkuperäiselle käyttäjälle
nimiavaruus, säilyttäen kuitenkin alkuperäiset normaalit käyttäjäoikeudet mount-nimiavaruus on se, jota hyökkääjä hallitsee. Kuten
nonewprivs-määrityksiä ei ole otettu käyttöön, hyökkääjä voi nyt
ajaa setuid-root-ohjelmia tässä mount-nimitilassa

Erityisesti hyökkääjä voi ajaa setuid-root-ohjelmia luomansa liitospisteen tilassa, jolloin se voi esimerkiksi muuttaa /etc/sudoers-kokoonpanoa tai PAM-parametreja tiedostohierarkiassa ja saada kyvyn suorittaa komentoja pääkäyttäjänä. käyttämällä sudoa tai sen apuohjelmia.

Lopuksi on syytä mainita, että toiminnallinen hyväksikäyttö on kehitetty, testattu nykyisissä openSUSE-, Debian-, Arch-, Gentoo- ja Fedora-versioissa Firejail-apuohjelman ollessa asennettuna.

Ongelma korjattiin firejail-versiossa 0.9.70. Suojauskorjauksena voit määrittää asetuksiksi (/etc/firejail/firejail.config) "no join" ja "force-nonewprivs yes".

Vihdoin jos olet kiinnostunut tietämään siitä lisää, voit tarkistaa yksityiskohdat seuraava linkki.


Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastuussa tiedoista: Miguel Ángel Gatón
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.