Paikalliset pääkäyttäjän haavoittuvuudet Snap-paketinhallintatyökalupakkissa

Qualys on tunnistanut kaksi haavoittuvuutta (CVE-2021-44731, CVE-2021-44730) snap-confine-apuohjelmassa, joka toimitetaan SUID-juurilipun kanssa ja jota snapd-prosessi kutsuu luomaan suoritettavan ympäristön erillisissä paketeissa toimitettaville sovelluksille. snap-muodossa. Haavoittuvuuksien ansiosta paikallinen etuoikeutettu käyttäjä voi suorittaa koodia järjestelmässä pääkäyttäjän oikeuksin. Ongelmat on ratkaistu tämän päivän Ubuntun snapd-pakettipäivityksessä versioille 21.10, 20.04 ja 18.04.

Ensimmäinen haavoittuvuus (CVE-2021-44730) sallii hyökkäyksen kovan linkin manipuloinnin kautta, mutta vaatii järjestelmän kovalinkin suojauksen poistamista käytöstä (asettamalla sysctl fs.protected_hardlinks arvoon 0). Ongelma johtuu pääkäyttäjänä ajettavien snap-update-ns- ja snap-discard-ns-apuohjelmien suoritettavien tiedostojen sijainnin virheellisestä tarkistuksesta. Näiden tiedostojen polku laskettiin sc_open_snapd_tool()-funktiossa sen oman polun perusteella tiedostosta /proc/self/exe, jonka avulla voit luoda kiinteän linkin snap-confine-tiedostoon hakemistoosi ja sijoittaa omat versiosi snap- update-ns ja snap- apuohjelmat tässä hakemistossa. discard-ns. Kovan linkin kautta suoritetun snap-confine root-oikeuksilla käynnistää snap-update-ns- ja snap-discard-ns-tiedostot nykyisestä hakemistosta, jotka hyökkääjä korvaa.

Toinen haavoittuvuus johtuu kilpailutilanteesta, ja sitä voidaan hyödyntää Ubuntu Desktopin oletuskokoonpanossa. Jotta hyväksikäyttö toimisi onnistuneesti Ubuntu Serverissä, sinun on valittava jokin paketeista Featured Server Snaps -osiosta asennuksen yhteydessä. Kilpaehto on ilmeinen setup_private_mount()-funktiossa, jota kutsutaan snap-paketin liitoskohdan nimitilan valmistelun aikana. Tämä toiminto luo väliaikaisen hakemiston "/tmp/snap.$SNAP_NAME/tmp" tai käyttää olemassa olevaa hakemistoa liittääkseen siihen liitettyjä hakemistoja snap-pakettia varten.

Koska väliaikaisen hakemiston nimi on ennustettavissa, hyökkääjä voi korvata sen sisällön symbolisella linkillä tarkistettuaan omistajan, mutta ennen kuin kutsuu liitosjärjestelmäkutsua. Voit esimerkiksi luoda symbolilinkin "/tmp/snap.lxd/tmp" hakemistoon /tmp/snap.lxd, joka osoittaa mielivaltaiseen hakemistoon, ja mount()-kutsu seuraa symlinkkiä ja liittää hakemiston hakemistoon. snap-nimiavaruus. Samalla tavalla voit liittää sisältösi hakemistoon /var/lib ja korvaamalla /var/lib/snapd/mount/snap.snap-store.user-fstab järjestää /etc-hakemiston liittämisen nimiavaruuteen snap-paketti, joka järjestää kirjastosi lataamisen pääkäyttäjän oikeuksin korvaamalla /etc/ld.so.preload.

On huomattava, että hyväksikäytön luominen osoittautui ei-triviaaliksi tehtäväksi, koska snap-confine-apuohjelma on kirjoitettu Go-kielellä turvallisia ohjelmointitekniikoita käyttäen, sillä on AppArmor-profiileihin perustuva suojaus, se suodattaa järjestelmäkutsut seccomp-mekanismin perusteella ja käyttää liittimen nimiavaruus eristystä varten. Tutkijat pystyivät kuitenkin valmistamaan toimivan hyväksikäytön saadakseen järjestelmän juurioikeudet. Hyödyntämiskoodi julkaistaan ​​muutaman viikon kuluttua siitä, kun käyttäjät ovat asentaneet toimitetut päivitykset.

Lähde: opennet.ru

Lisää kommentti