Ranjivosti u swhkd-u, menadžeru prečica za Wayland

Identifikovan je niz ranjivosti u swhkd (Simple Wayland HotKey Daemon) uzrokovanih netačnim radom sa privremenim datotekama, parametrima komandne linije i Unix utičnicama. Program je napisan na Rust-u i upravlja pritiskom na prečice u okruženjima zasnovanim na Wayland protokolu (analog sxhkd procesa kompatibilan sa konfiguracijskim datotekama koji se koristi u okruženjima baziranim na X11).

Paket uključuje neprivilegirani swhks proces koji izvodi radnje prečice i pozadinski swhkd proces koji se pokreće kao root i stupa u interakciju sa ulaznim uređajima na uinput API nivou. Unix socket se koristi za organiziranje interakcije između swhks i swhkd. Koristeći Polkit pravila, svaki lokalni korisnik može pokrenuti /usr/bin/swhkd proces kao root i proslijediti mu proizvoljne parametre.

Identifikovane ranjivosti:

  • CVE-2022-27815 – Čuvanje PID-a procesa u datoteci sa predvidljivim imenom iu direktorijumu u koji drugi korisnici mogu pisati (/tmp/swhkd.pid). Svaki korisnik može kreirati datoteku /tmp/swhkd.pid i staviti pid postojećeg procesa u nju, zbog čega swhkd neće moći da se pokrene. Ako ne postoji zaštita od kreiranja simboličkih veza u /tmp, ranjivost se može koristiti za kreiranje ili prepisivanje datoteka u bilo kojem sistemskom direktoriju (PID se upisuje u datoteku) ili određivanje sadržaja bilo koje datoteke na sistemu (swhkd ispisuje cijeli sadržaj PID datoteke u stdout). Važno je napomenuti da je u objavljenom popravku PID fajl premješten ne u /run direktorij, već u /etc direktorij (/etc/swhkd/runtime/swhkd_{uid}.pid), gdje također ne pripada.
  • CVE-2022-27814 – Manipulisanjem opcijom komandne linije „-c” koja se koristi za određivanje konfiguracione datoteke, moguće je utvrditi postojanje bilo koje datoteke na sistemu. Na primjer, da biste provjerili /root/.somefile, možete pokrenuti “pkexec /usr/bin/swhkd -d -c /root/.somefile” i ako datoteka nedostaje, greška “/root/.somefile ne postoji” ” će se prikazati. Kao iu slučaju prve ranjivosti, rješavanje problema je zbunjujuće - rješavanje problema se svodi na činjenicu da vanjski uslužni program “cat” ('Command::new(“/bin/cat”)).arg(path) je sada pokrenut za čitanje konfiguracijske datoteke. output()').
  • CVE-2022-27819 – Problem je takođe povezan sa upotrebom opcije „-c“, koja uzrokuje da se čitava konfiguraciona datoteka učita i analizira bez provere veličine i tipa datoteke. Na primjer, da izazovete uskraćivanje usluge tako što ponestane slobodne memorije i kreira lažan I/O, možete odrediti blok uređaj pri pokretanju ("pkexec /usr/bin/swhkd -d -c /dev/sda") ili karakterni uređaj koji proizvodi beskonačan tok podataka. Problem je riješen resetiranjem privilegija prije otvaranja datoteke, ali popravak nije završen, jer je samo korisnički ID (UID) resetovan, ali ID grupe (GID) ostaje isti.
  • CVE-2022-27818 – Unix socket se kreira pomoću datoteke /tmp/swhkd.sock kreirane u direktoriju za upisivanje, što dovodi do sličnih problema kao i prva ranjivost (svaki korisnik može kreirati /tmp/swhkd.sock i generirati ili presresti događaji pritiska na taster).
  • CVE-2022-27817 - Ulazni događaji se prihvataju sa svih uređaja iu svim sesijama, tj. korisnik iz druge Wayland sesije ili sa konzole može presresti događaje kada drugi korisnici pritisnu prečice.
  • CVE-2022-27816 Proces swhks, kao i swhkd, koristi PID datoteku /tmp/swhks.pid u direktoriju za upisivanje /tmp. Problem je sličan prvoj ranjivosti, ali nije toliko opasan jer swhks radi pod neprivilegiranim korisnikom.

izvor: opennet.ru

Dodajte komentar