Ranjivosti u networkd-dispatcheru koje dopuštaju root pristup

Sigurnosni istraživači iz Microsofta identificirali su dvije ranjivosti (CVE-2022-29799, CVE-2022-29800) u networkd-dispatcher servisu, kodnog naziva Nimbuspwn, koji dopuštaju neprivilegiranom korisniku izvršavanje proizvoljnih naredbi s root privilegijama. Problem je riješen u izdanju networkd-dispatchera 2.2. Još nema informacija o objavljivanju ažuriranja po distribucijama (Debian, RHEL, Fedora, SUSE, Ubuntu, Arch Linux).

Networkd-dispatcher koristi se u mnogim distribucijama Linuxa, uključujući Ubuntu, koje koriste pozadinski proces systemd-networkd za konfiguriranje mrežnih parametara i obavlja funkcije slične NetworkManager-dispatcheru, tj. bavi se pokretanjem skripti kada se promijeni stanje mrežne veze, na primjer, koristi se za pokretanje VPN-a nakon što je uspostavljena glavna mrežna veza.

Pozadinski proces povezan s networkd-dispatcherom radi kao root i prima signale događaja putem D-Bus-a. Informacije o događajima vezanim uz promjene stanja mrežnih veza šalje servis systemd-networkd. Problem je u tome što neprivilegirani korisnici mogu generirati događaj nepostojećeg stanja i pokrenuti njihovu skriptu da se izvrši kao root.

Systemd-networkd dizajniran je za pokretanje samo skripti rukovatelja sustavom koje se nalaze u /etc/networkd-dispatcher direktoriju 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 imenika izvan granica i pokretanje proizvoljnih skripti. Konkretno, pri formiranju putanje datoteke do skripte korištene su vrijednosti OperationalState i AdministrativeState prenesene putem D-Bus-a, u kojima posebni znakovi nisu izbrisani. Napadač je mogao generirati vlastito stanje čije je ime sadržavalo znakove “../” i preusmjeriti poziv networkd-dispatcher u drugi direktorij.

Druga ranjivost (CVE-2022-29800) odnosi se na stanje utrke - između provjere parametara skripte (koja pripada rootu) i njenog pokretanja, prošlo je kratko vrijeme, dovoljno da se datoteka zamijeni i zaobiđe provjera je li skripta pripada root korisniku. Osim toga, networkd-dispatcher nije provjeravao simboličke veze, uključujući pokretanje skripti kroz poziv subprocess.Popen, što je značajno pojednostavilo organizaciju napada.

Tehnika rada:

  • Stvaraju se direktorij “/tmp/nimbuspwn” i simbolička veza “/tmp/nimbuspwn/poc.d” koji pokazuju na direktorij “/sbin”, koji se koristi za provjeru izvršnih datoteka u vlasništvu roota.
  • Za izvršne datoteke iz “/sbin”, datoteke s istim imenom stvaraju se u direktoriju “/tmp/nimbuspwn”, na primjer, za datoteku “/sbin/vgs” izvršna datoteka “/tmp/nimbuspwn/vgs” je kreiran, u vlasništvu neprivilegiranog korisnika, u koji je smješten kod koji napadač želi pokrenuti.
  • Signal se šalje putem D-Bus-a procesu networkd-dispatcher koji pokazuje vrijednost "../../../tmp/nimbuspwn/poc" u OperationalState. Za slanje signala u prostoru imena “org.freedesktop.network1” korištena je mogućnost povezivanja njegovih rukovatelja sa systemd-networkd, na primjer, kroz manipulacije s gpgv ili epmd, ili možete iskoristiti činjenicu da systemd-networkd ne radi prema zadanim postavkama (na primjer, na Linux Mintu).
  • Nakon što primi signal, Networkd-dispatcher gradi popis izvršnih datoteka u vlasništvu root korisnika i dostupnih u direktoriju “/etc/networkd-dispatcher/../../../tmp/nimbuspwn/poc.d”, koji zapravo povezuje na "/sbin".
  • U trenutku kada je popis datoteka primljen, ali skripta još nije pokrenuta, simbolička veza se preusmjerava iz “/tmp/nimbuspwn/poc.d” u “/tmp/nimbuspwn” i networkd-dispatcher će pokrenuti skriptu koju hostira napadač s root pravima.

Ranjivosti u networkd-dispatcheru koje dopuštaju root pristup


Izvor: opennet.ru

Dodajte komentar