Pred nekaj dnevi je bila objavljena novica ugotovljene so bile številne ranljivosti v swhkd (Simple Wayland HotKey Daemon), ki je posledica nepravilnega ravnanja z začasnimi datotekami, možnostmi ukazne vrstice in unix vtičnicami.
Program je napisan v Rustu in obdeluje bližnjice v okoljih, ki temeljijo na protokolu Wayland (analog procesa sxhkd, ki je združljiv s konfiguracijsko datoteko, ki se uporablja v okoljih, ki temeljijo na X11). Paket vključuje neprivilegiran proces swhks, ki izvaja dejanja za hitre tipke, in proces swhkd v ozadju, ki se izvaja kot root in sodeluje z vhodnimi napravami na ravni uinput API. Za organizacijo interakcije med swhks in swhkd se uporablja vtičnica Unix.
Polkitova pravila omogočajo vsakemu lokalnemu uporabniku, da zažene proces /usr/bin/swhkd kot root in mu posreduje poljubne parametre.
Integracija paketa RPM predložen za openSUSE Tumbleweed je vseboval nenavadna pravila Polkita v definicijska datoteka, ki je zahtevala pregled varnostne skupine SUSE.
Kot rezultat pregleda je bilo ugotovljenih več varnostnih težav. Posamezne težave so opisane v spodnjem podrobnem poročilu.
Od ranljivosti, ki so bile ugotovljene, so navedeni naslednji:
CVE-2022-27815
Ta ranljivost omogoča shranjevanje PID procesa v datoteko s predvidljivim imenom in v zapisovalnem imeniku za druge uporabnike (/tmp/swhkd.pid), pri čemer lahko vsak uporabnik ustvari datoteko /tmp/swhkd.pid in vanjo vnese pid obstoječega procesa, kar bo onemogočalo zagon swhkd.
Če ni zaščite pred ustvarjanjem simbolnih povezav v /tmp, ranljivost se lahko uporabi za ustvarjanje ali prepisovanje datotek v katerem koli imeniku v sistemu (PID se zapiše v datoteko) ali določi vsebino katere koli datoteke v sistemu (swhkd izpiše celotno vsebino datoteke PID v stdout). Opozoriti je treba, da v izdanem popravku datoteka PID ni bila premaknjena v imenik /run, ampak v imenik /etc (/etc/swhkd/runtime/swhkd_{uid}.pid), kamor tudi ne sodi .
CVE-2022-27814
Ta ranljivost vam omogoča, da manipulirate z možnostjo ukazne vrstice "-c", da podate konfiguracijsko datoteko lahko ugotovi obstoj katere koli datoteke v sistemu.
Tako kot v primeru prve ranljivosti je tudi odpravljanje težave zmedeno: odpravljanje težave se zmanjša na dejstvo, da je zunanji pripomoček "cat" ('Command::new("/bin/cat").arg(path) zdaj zagnan za branje konfiguracijske datoteke.output()').
CVE-2022-27819
Ta težava povezana je tudi z uporabo možnosti "-c"., ki naloži in razčleni celotno konfiguracijsko datoteko brez preverjanja velikosti in vrste datoteke.
Če želite na primer povzročiti zavrnitev storitve zaradi pomanjkanja prostega pomnilnika in ustvarjanja napačnih V/I, lahko ob zagonu določite blokovno napravo ("pkexec /usr/bin/swhkd -d -c /dev/sda ») ali znakovna naprava, ki oddaja neskončen tok podatkov.
Težava je bila odpravljena s ponastavitvijo privilegijev pred odpiranjem datoteke, vendar rešitev ni bila popolna, saj je ponastavljen samo ID uporabnika (UID), ID skupine (GID) pa ostaja enak.
CVE-2022-27818
Ta ranljivost omogoča uporabo datoteke /tmp/swhkd.sock za ustvarjanje vtičnice Unix, ki je ustvarjen v javnem zapisljivem imeniku, kar povzroča podobne težave kot prva ranljivost (vsak uporabnik lahko ustvari /tmp/swhkd.sock in ustvari ali prestreže dogodke pritiska na tipko).
CVE-2022-27817
V tej ranljivosti, vhodni dogodki se sprejemajo iz vseh naprav in v vseh sejah, to pomeni, da lahko uporabnik v drugi seji Waylanda ali konzole prestreže dogodke, ko drugi uporabniki pritisnejo bližnjice.
CVE-2022-27816
Proces swhks, tako kot swhkd, uporablja datoteko PID /tmp/swhks.pid v javno zapisljivem imeniku /tmp. Težava je podobna prvi ranljivosti, vendar ni tako nevarna, saj swhks deluje pod neprivilegiranim uporabnikom.
Nazadnje, če vas zanima več o tem, se lahko obrnete na podrobnosti na naslednji povezavi.