Ranjivosti u swhkd-u, upravitelju prečaca za Wayland

U swhkd-u (Simple Wayland HotKey Daemon) identificiran je niz ranjivosti uzrokovanih neispravnim radom s privremenim datotekama, parametrima naredbenog retka i Unix utičnicama. Program je napisan u Rustu i upravlja pritiskom tipki prečaca u okruženjima koja se temelje na protokolu Wayland (analog sxhkd procesa kompatibilan s konfiguracijskom datotekom koji se koristi u okruženjima temeljenim na X11).

Paket uključuje neprivilegirani swhks proces koji izvodi radnje prečaca i pozadinski swhkd proces koji radi kao root i komunicira s uređajima za unos na razini uinput API-ja. Unix utičnica koristi se 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.

Identificirane ranjivosti:

  • CVE-2022-27815 – Spremanje PID-a procesa u datoteku s predvidljivim nazivom iu direktoriju 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 se swhkd neće moći pokrenuti. Ako ne postoji zaštita od stvaranja simboličkih veza u /tmp, ranjivost se može koristiti za stvaranje ili prebrisanje datoteka u bilo kojem direktoriju sustava (PID se upisuje u datoteku) ili određivanje sadržaja bilo koje datoteke na sustavu (swhkd ispisuje cijeli sadržaj PID datoteke u stdout). Važno je napomenuti da je u izdanom popravku PID datoteka premještena ne u /run direktorij, već u /etc direktorij (/etc/swhkd/runtime/swhkd_{uid}.pid), gdje također ne pripada.
  • CVE-2022-27814 – Manipuliranjem opcije "-c" naredbenog retka koja se koristi za određivanje konfiguracijske datoteke, moguće je utvrditi postojanje bilo koje datoteke na sustavu. Na primjer, za provjeru /root/.somefile možete pokrenuti “pkexec /usr/bin/swhkd -d -c /root/.somefile” i ako datoteka nedostaje, prikazuje se pogreška “/root/.somefile ne postoji ” će se prikazati. Kao i u slučaju prve ranjivosti, rješavanje problema je zagonetno - rješavanje problema svodi se na činjenicu da vanjski uslužni program “cat” ('Command::new(“/bin/cat”)).arg(path) sada se pokreće za čitanje konfiguracijske datoteke. output()').
  • CVE-2022-27819 – Problem je također povezan s korištenjem opcije “-c”, koja uzrokuje učitavanje i raščlanjivanje cijele konfiguracijske datoteke bez provjere veličine i vrste datoteke. Na primjer, da izazovete uskraćivanje usluge nedostatkom slobodne memorije i stvaranjem lažnog I/O, možete navesti blok uređaj pri pokretanju ("pkexec /usr/bin/swhkd -d -c /dev/sda") ili znakovni uređaj koji proizvodi beskonačni tok podataka. Problem je riješen poništavanjem privilegija prije otvaranja datoteke, ali popravak nije bio potpun jer se samo korisnički ID (UID) poništava, ali ID grupe (GID) ostaje isti.
  • CVE-2022-27818 – Unix utičnica se stvara pomoću datoteke /tmp/swhkd.sock stvorene u direktoriju za pisanje, što dovodi do sličnih problema kao i prva ranjivost (svaki korisnik može stvoriti /tmp/swhkd.sock i generirati ili presresti događaji pritiska tipke).
  • CVE-2022-27817 - Ulazni događaji prihvaćaju se sa svih uređaja i u svim sesijama, tj. korisnik iz druge Waylandove sesije ili s konzole može presresti događaje kada drugi korisnici pritisnu prečace.
  • CVE-2022-27816 Proces swhks, kao i swhkd, koristi PID datoteku /tmp/swhks.pid u direktoriju /tmp koji se može pisati. Problem je sličan prvoj ranjivosti, ali nije toliko opasan jer swhks radi pod neprivilegiranim korisnikom.

Izvor: opennet.ru

Dodajte komentar