Microsoftovi sigurnosni istraživači identificirali su dvije ranjivosti (CVE-2022-29799, CVE-2022-29800) u servisu networkd-dispatcher, kodnog naziva Nimbuspwn, koje omogućavaju neprivilegovanom korisniku izvršavanje proizvoljnih naredbi s root privilegijama. Problem je riješen u verziji networkd-dispatcher 2.2. Još uvijek nema informacija o tome da li su distribucije objavile ažuriranja.Debian, RHEL, Fedora, SUSE, Ubuntu, Arch Linux).
Networkd-dispatcher se koristi u mnogim distribucijama. Linux, uključujući Ubuntu, koji koristi pozadinski proces systemd-networkd za konfiguraciju mrežnih parametara i obavlja funkcije slične NetworkManager-dispatcheru, tj. pokreće skripte kada se stanje mrežne veze promijeni, na primjer, koristi se za pokretanje VPN nakon uspostavljanja osnovne mrežne veze.
Pozadinski proces povezan sa mrežnim dispečerom radi kao root i prima signale događaja preko D-Bus-a. Informacije o događajima u vezi sa promjenama stanja mrežnih veza šalje systemd-networkd servis. Problem je u tome što neprivilegirani korisnici mogu generirati nepostojeći događaj stanja i pokrenuti njihovu skriptu da se izvrši kao root.
Systemd-networkd je dizajniran da pokreće samo skripte za rukovanje sistemom koje se nalaze u direktoriju /etc/networkd-dispatcher i nisu dostupne za zamjenu korisnika, ali zbog ranjivosti (CVE-2022-29799) u kodu za obradu putanje datoteke, došlo je do mogućnost osnovnog direktorija izvan granica i pokretanja proizvoljnih skripti. Konkretno, prilikom formiranja putanje datoteke do skripte korištene su vrijednosti OperationalState i AdministrativeState koje se prenose preko D-Bus-a, u kojima posebni znakovi nisu obrisani. Napadač bi mogao generirati vlastito stanje sa znakovima “../” u svom imenu i preusmjeriti poziv mrežnog dispečera na drugi direktorij.
Druga ranjivost (CVE-2022-29800) je povezana sa stanjem trke - između provjere parametara skripte (koji pripadaju root-u) i njenog pokretanja, postojao je kratak vremenski period, dovoljan da se datoteka zamijeni i zaobiđe provjera da li je skripta pripada root korisniku. Osim toga, mrežni dispečer nije proveravao simboličke veze, uključujući i pokretanje skripti kroz potproces.Popen poziv, što je značajno pojednostavilo organizaciju napada.
Operativna tehnika:
- Kreiraju se direktorij “/tmp/nimbuspwn” i simbolička veza “/tmp/nimbuspwn/poc.d” koja upućuje na direktorij “/sbin”, koji se koristi za provjeru izvršnih datoteka u vlasništvu root-a.
- Za izvršne datoteke iz “/sbin”, datoteke s istim imenom se kreiraju u direktoriju “/tmp/nimbuspwn”, na primjer, za datoteku “/sbin/vgs” je izvršna datoteka “/tmp/nimbuspwn/vgs” kreiran, u vlasništvu neprivilegovanog korisnika, u koji se stavlja kod koji napadač želi da pokrene.
- Signal se šalje putem D-Bus-a procesu networkd-dispatcher s vrijednošću OperationalState postavljenom na "../../../tmp/nimbuspwn/poc". Za slanje signala u imenskom prostoru "org.freedesktop.network1" korištena je mogućnost dodavanja prilagođenih rukovatelja procesu systemd-networkd, na primjer, manipulacijama s gpgv ili epmd, ili se može iskoristiti činjenica da systemd-networkd ne radi po defaultu (na primjer, u Linux Nana).
- Nakon prijema signala, Networkd-dispatcher pravi listu izvršnih datoteka u vlasništvu root korisnika i dostupnih u direktoriju “/etc/networkd-dispatcher/../../../tmp/nimbuspwn/poc.d”, koji se zapravo povezuje sa "/sbin".
- U trenutku kada je lista datoteka primljena, ali skripta još nije pokrenuta, simbolički link se preusmjerava sa “/tmp/nimbuspwn/poc.d” na “/tmp/nimbuspwn” i mrežni dispečer će pokrenuti skripta koju hostuje napadač sa root pravima.

izvor: opennet.ru
