Prije nekoliko dana objavljena je vijest o tome pronađen je veliki broj ranjivosti u swhkd (Simple Wayland HotKey Daemon) uzrokovan netačnim rukovanjem privremenim datotekama, opcijama komandne linije i unix utičnicama.
Program je napisan u Rust-u i rukuje prečicama u okruženjima baziranim na Wayland protokolu (analog sxhkd procesa kompatibilan s konfiguracijskim datotekama koji se koristi u okruženjima baziranim na X11). Paket uključuje neprivilegirani swhks proces koji izvodi radnje za prečice i swhkd pozadinski proces koji se pokreće kao root i stupa u interakciju sa ulaznim uređajima na uinput API nivou. Za organizaciju interakcije između swhks i swhkd, koristi se Unix socket.
Polkitova pravila dozvoljavaju svakom lokalnom korisniku da pokrene proces /usr/bin/swhkd kao root i da mu prenese proizvoljne parametre.
Integracija RPM paketa podnesen za openSUSE Tumbleweed je sadržavao neobična Polkit pravila u definicijski fajl koji je zahtijevao pregled od strane SUSE sigurnosnog tima.
Kao rezultat pregleda, identifikovano je više sigurnosnih problema. Pojedinačni problemi su opisani u detaljnom izvještaju u nastavku.
Od ranjivosti koje su identifikovane, spominju se sljedeće:
CVE-2022-27815
Ova ranjivost omogućava spremanje PID-a procesa u datoteku s predvidljivim imenom i u direktorij za pisanje za druge korisnike (/tmp/swhkd.pid), pri čemu svaki korisnik može kreirati /tmp/swhkd.pid datoteku i staviti pid postojećeg procesa u nju, što će onemogućiti pokretanje swhkd-a.
U nedostatku zaštite od kreiranja simboličkih veza u /tmp, ranjivost se može koristiti za kreiranje ili prepisivanje datoteka u bilo kojem direktoriju na sistemu (PID je upisan u datoteku) ili odredite sadržaj bilo koje datoteke na sistemu (swhkd ispisuje cijeli sadržaj PID datoteke u stdout). Treba napomenuti da u objavljenom popravku PID fajl nije premješten u /run direktorij, već u /etc direktorij (/etc/swhkd/runtime/swhkd_{uid}.pid), gdje ni on ne pripada .
CVE-2022-27814
Ova ranjivost omogućava vam da manipulišete opcijom komandne linije "-c" da biste naveli konfiguracioni fajl može utvrditi postojanje bilo koje datoteke na sistemu.
Kao iu slučaju prve ranjivosti, rješavanje problema je zbunjujuće: rješavanje problema svodi se na činjenicu da je vanjski uslužni program "mačka" ('Command::new("/bin/cat").arg(path) sada pokrenut za čitanje konfiguracijske datoteke.output()').
CVE-2022-27819
Ovaj problem takođe se odnosi na upotrebu opcije "-c"., koji učitava i analizira cijelu konfiguracijsku datoteku bez provjere veličine i tipa datoteke.
Na primjer, da izazovete uskraćivanje usluge zbog ponestajanja slobodne memorije i stvaranja zalutalih I/O, možete odrediti blok uređaj pri pokretanju ("pkexec /usr/bin/swhkd -d -c /dev/sda ») ili karakterni uređaj koji emituje beskonačan tok podataka.
Problem je riješen resetiranjem privilegija prije otvaranja datoteke, ali rješenje nije bilo potpuno jer je samo korisnički ID (UID) resetovan, ali ID grupe (GID) ostaje isti.
CVE-2022-27818
Ova ranjivost omogućava vam da koristite datoteku /tmp/swhkd.sock za kreiranje Unix utičnice, koji je kreiran u javnom upisnom direktoriju, uzrokujući slične probleme kao i prva ranjivost (svaki korisnik može kreirati /tmp/swhkd.sock i generirati ili presresti događaje pritiska na tipku).
CVE-2022-27817
U ovoj ranjivosti, ulazni događaji se primaju sa svih uređaja iu svim sesijama, odnosno korisnik u drugoj sesiji Waylanda ili 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 javnom upisnom /tmp direktoriju. Problem je sličan prvoj ranjivosti, ali nije toliko opasan, jer swhks radi pod neprivilegiranim korisnikom.
Napokon, ako ste zainteresirani da saznate više o tome, možete se obratiti detalje na sljedećem linku.