Networkd-dispetcheri haavatavused, mis võimaldavad juurjuurdepääsu

Microsofti turbeuurijad on tuvastanud kaks haavatavust (CVE-2022-29799, CVE-2022-29800) võrgudispetšeriteenuses, koodnimega Nimbuspwn, mis võimaldavad privilegeerimata kasutajal käivitada suvalisi rootõigustega käske. Probleem on lahendatud võrgud-dispetšeri versiooni 2.2 versioonis. Distributsioonide kaupa (Debian, RHEL, Fedora, SUSE, Ubuntu, Arch Linux) värskenduste avaldamise kohta veel infot pole.

Networkd-dispetcherit kasutatakse paljudes Linuxi distributsioonides, sealhulgas Ubuntus, mis kasutab võrguparameetrite konfigureerimiseks taustprotsessi systemd-networkd ja täidab sarnaseid funktsioone NetworkManager-dispetcheriga, st. tegeleb skriptide käivitamisega, kui võrguühenduse olek muutub, näiteks kasutatakse VPN-i käivitamiseks pärast põhivõrguühenduse loomist.

Networkd-dispetcheriga seotud taustprotsess töötab administraatorina ja võtab D-Busi kaudu vastu sündmuste signaale. Teavet võrguühenduste oleku muutumisega seotud sündmuste kohta saadab teenus systemd-networkd. Probleem on selles, et privilegeerimata kasutajad saavad genereerida olematu olekusündmuse ja käivitada oma skripti administraatorina.

Systemd-networkd on loodud käitama ainult süsteemihalduri skripte, mis asuvad kataloogis /etc/networkd-dispatcher ja pole kasutaja asendamiseks ligipääsetavad, kuid haavatavuse (CVE-2022-29799) tõttu failitee töötlemiskoodis oli piiridest väljapoole jääva baaskataloogi võimalus ja suvaliste skriptide käivitamine. Eelkõige kasutati skripti failitee moodustamisel D-Busi kaudu edastatud väärtusi OperationalState ja AdministrativeState, milles erimärke ei kustutatud. Ründaja sai luua oma oleku, mille nimi sisaldas märke "../" ja suunata networkd-dispetcheri kõne teise kataloogi.

Teine haavatavus (CVE-2022-29800) on seotud võistlusseisundiga – skripti parameetrite kontrollimise (juuri kuuluvate) ja selle käivitamise vahel möödus lühike ajavahemik, millest piisab faili asendamiseks ja kontrollimisest möödahiilimiseks. skript kuulub juurkasutajale. Lisaks ei kontrollinud networkd-dispetšer sümboolseid linke, sealhulgas skriptide käivitamisel alamprotsessi kaudu.Popen kõne, mis lihtsustas oluliselt rünnaku korraldamist.

Toimimistehnika:

  • Kataloog “/tmp/nimbuspwn” ja sümboolne link “/tmp/nimbuspwn/poc.d” luuakse, mis osutab kataloogile “/sbin”, mida kasutatakse juurfailide kontrollimiseks.
  • „/sbin” käivitatavate failide jaoks luuakse sama nimega failid kataloogis „/tmp/nimbuspwn”, näiteks faili „/sbin/vgs” jaoks on käivitatav fail „/tmp/nimbuspwn/vgs”. loodud, mis kuulub privilegeerimata kasutajale, kuhu asetatakse kood, mida ründaja soovib käivitada.
  • D-Busi kaudu saadetakse signaal Networkd-dispetcher protsessile, mis näitab väärtust "../../../tmp/nimbuspwn/poc" olekus OperationalState. Signaali saatmiseks nimeruumis “org.freedesktop.network1” kasutati võimalust ühendada selle töötlejad süsteemiga systemd-networkd, näiteks manipuleerides gpgv või epmd-ga, või kasutada ära seda, et systemd-networkd ei tööta vaikimisi (näiteks Linux Mint).
  • Pärast signaali vastuvõtmist koostab Networkd-dispetcher loendi käivitatavatest failidest, mis kuuluvad juurkasutajale ja mis on saadaval kataloogis "/etc/networkd-dispatcher/../../../tmp/nimbuspwn/poc.d", mis tegelikult linkib "/sbin".
  • Hetkel, kui failide loend on vastu võetud, kuid skripti pole veel käivitatud, suunatakse sümboolne link aadressilt „/tmp/nimbuspwn/poc.d” aadressile „/tmp/nimbuspwn” ja networkd-dispetcher käivitab skript, mida hostib juurõigustega ründaja.

Networkd-dispetcheri haavatavused, mis võimaldavad juurjuurdepääsu


Allikas: opennet.ru

Lisa kommentaar