Studiuesit e sigurisë nga Microsoft kanë zbuluar dy dobësi (CVE-2022-29799, CVE-2022-29800) në shërbimin networkd-dispatcher, të quajtura me emrin e koduar Nimbuspwn, të cilat i lejojnë një përdoruesi pa privilegje të ekzekutojë komanda arbitrare me të drejta root. Problemi është rregulluar në versionin networkd-dispatcher 2.2. Ende nuk ka informacione për publikimin e përditësimeve nga shpërndarjet (Debian, RHEL, Fedora, SUSE, Ubuntu, Arch Linux).
Networkd-dispatcher përdoret në shumë shpërndarje Linux, përfshirë Ubuntu, që përdorin procesin në sfond systemd-networkd për konfigurimin e parametrave të rrjetit, dhe kryen funksione të ngjashme me NetworkManager-dispatcher, pra merret me nisjen e skripteve kur ndryshon gjendja e lidhjes së rrjetit; për shembull, përdoret për nisjen VPN pas vendosjes së lidhjes kryesore të rrjetit.
Procesi në sfond i lidhur me networkd-dispatcher ekzekutohet me të drejta root dhe merr sinjale për ngjarjet përmes bus-it D-Bus. Informacioni për ngjarjet që lidhen me ndryshimin e gjendjes së lidhjeve të rrjetit dërgohet nga shërbimi systemd-networkd. Problemi qëndron në faktin se përdoruesit pa privilegje mund të krijojnë një ngjarje për një gjendje që nuk ekziston dhe të nisin ekzekutimin e skriptit të tyre, i cili do të ekzekutohet me të drejta root.
Systemd-networkd është projektuar të nisë vetëm skriptet përpunuese të sistemit, të vendosura në direktorinë /etc/networkd-dispatcher dhe të paarritshme për zëvendësim nga përdoruesi, por për shkak të dobësisë (CVE-2022-29799) në kodin e përpunimit të shtegut të skedarit, ishte e mundur të dilje jashtë drejtorisë bazë dhe të ekzekutoje skripte arbitrare. Konkretisht, gjatë formimit të shtegut të skedarit drejt skriptit, përdoreshin vlerat OperationalState dhe AdministrativeState të kaluara përmes D-Bus, te të cilat nuk kryhej pastrimi i simboleve speciale. Sulmuesi mund të gjeneronte gjendjen e vet, në emrin e së cilës përfshiheshin simbolet «../», dhe ta ridrejtonte aksesin e networkd-dispatcher drejt një drejtorie tjetër.
DobĂ«sia e dytĂ« (CVE-2022-29800) lidhet me njĂ« race condition â midis kontrollit tĂ« parametrave tĂ« skriptit (pronĂ«sia nga root) dhe nisjes sĂ« tij ekzistonte njĂ« interval i shkurtĂ«r kohe, i mjaftueshĂ«m pĂ«r tĂ« zĂ«vendĂ«suar skedarin dhe pĂ«r tĂ« anashkaluar kontrollin e pronĂ«sisĂ« sĂ« skriptit nga pĂ«rdoruesi root. PĂ«r mĂ« tepĂ«r, nĂ« networkd-dispatcher mungonte kontrolli i lidhjeve simbolike, pĂ«rfshirĂ« edhe gjatĂ« nisjes sĂ« skripteve pĂ«rmes thirrjes subprocess.Popen, gjĂ« qĂ« e lehtĂ«sonte ndjeshĂ«m organizimin e sulmit.
Teknika e shfrytëzimit:
- Krijohen direktoria "/tmp/nimbuspwn" dhe lidhja simbolike "/tmp/nimbuspwn/poc.d", e cila tregon te direktoria "/sbin" dhe përdoret për të kaluar kontrollin për praninë e skedarëve të ekzekutueshëm në pronësi të root.
- Për skedarët e ekzekutueshëm nga "/sbin" krijohen skedarë me të njëjtin emër në direktorinë "/tmp/nimbuspwn"; për shembull, për skedarin "/sbin/vgs" krijohet skedari i ekzekutueshëm "/tmp/nimbuspwn/vgs", në pronësi të një përdoruesi pa privilegje, ku vendoset kodi që sulmuesi dëshiron të ekzekutojë.
- Procesit D-Bus networkd-dispatcher i dërgohet një sinjal me vlerën "../../../tmp/nimbuspwn/poc" të specifikuar në OperationalState. Për dërgimin e sinjalit në hapësirën e emrave "org.freedesktop.network1" u përdor mundësia për të lidhur trajtuesit e vet me systemd-networkd, për shembull përmes manipulimeve me gpgv ose epmd, ose mund të shfrytëzohet fakti që systemd-networkd nuk është i nisur si parazgjedhje (për shembull, në Linux Mint).
- Pas marrjes së sinjalit, Networkd-dispatcher ndërton listën e skedarëve të ekzekutueshëm në pronësi të përdoruesit root dhe të disponueshëm në direktorinë "/etc/networkd-dispatcher/../../../tmp/nimbuspwn/poc.d", e cila në fakt referon te "/sbin".
- Në momentin kur lista e skedarëve është marrë, por skripti ende nuk është nisur, lidhja simbolike ridrejtohet nga "/tmp/nimbuspwn/poc.d" te "/tmp/nimbuspwn", dhe networkd-dispatcher do të ekzekutojë me të drejta root skriptin e vendosur nga sulmuesi.

Burimi: opennet.ru
