Ranljivosti v swhkd, upravitelju bližnjic za Wayland

V swhkd (Simple Wayland HotKey Daemon) je bila ugotovljena vrsta ranljivosti, ki jih povzroča nepravilno delo z začasnimi datotekami, parametri ukazne vrstice in vtičnicami Unix. Program je napisan v Rustu in obravnava pritiske bližnjičnih tipk v okoljih, ki temeljijo na protokolu Wayland (analog postopka sxhkd, ki je združljiv s konfiguracijsko datoteko in se uporablja v okoljih, ki temeljijo na X11).

Paket vključuje neprivilegiran proces swhks, ki izvaja dejanja bližnjičnih tipk, in proces swhkd v ozadju, ki se izvaja kot root in komunicira z vhodnimi napravami na ravni uinput API. Vtičnica Unix se uporablja za organizacijo interakcije med swhks in swhkd. Z uporabo pravil Polkit lahko vsak lokalni uporabnik zažene proces /usr/bin/swhkd kot root in mu posreduje poljubne parametre.

Ugotovljene ranljivosti:

  • CVE-2022-27815 – Shranjevanje PID-ja procesa v datoteko s predvidljivim imenom in v imenik, v katerega lahko pišejo drugi uporabniki (/tmp/swhkd.pid). Vsak uporabnik lahko ustvari datoteko /tmp/swhkd.pid in vanjo vnese pid obstoječega procesa, zaradi česar se swhkd ne bo mogel zagnati. Če ni zaščite pred ustvarjanjem simbolnih povezav v /tmp, se lahko ranljivost uporabi za ustvarjanje ali prepisovanje datotek v katerem koli sistemskem imeniku (PID je zapisan v datoteko) ali določanje vsebine katere koli datoteke v sistemu (swhkd natisne celotno vsebino datoteke PID v stdout). Omeniti velja, da v izdanem popravku datoteka PID ni bila premaknjena v imenik /run, temveč v imenik /etc (/etc/swhkd/runtime/swhkd_{uid}.pid), kamor tudi ne sodi.
  • CVE-2022-27814 – Z manipulacijo možnosti ukazne vrstice »-c«, ki se uporablja za določanje konfiguracijske datoteke, je mogoče ugotoviti obstoj katere koli datoteke v sistemu. Če želite na primer preveriti /root/.somefile, lahko zaženete »pkexec /usr/bin/swhkd -d -c /root/.somefile« in če datoteka manjka, se prikaže napaka »/root/.somefile ne obstaja « bo prikazano. Tako kot v primeru prve ranljivosti je odpravljanje težave zagonetno - odpravljanje težave se skrči na dejstvo, da zunanji pripomoček »cat« ('Command::new(“/bin/cat”)).arg(path) se zdaj zažene za branje konfiguracijske datoteke. output()').
  • CVE-2022-27819 – Težava je povezana tudi z uporabo možnosti »-c«, ki povzroči nalaganje in razčlenitev celotne konfiguracijske datoteke brez preverjanja velikosti in vrste datoteke. Na primer, če želite povzročiti zavrnitev storitve, tako da zmanjka prostega pomnilnika in ustvarite lažne V/I, lahko ob zagonu določite blokovno napravo ("pkexec /usr/bin/swhkd -d -c /dev/sda") ali znakovna naprava, ki proizvaja neskončen tok podatkov. Težavo smo rešili s ponastavitvijo privilegijev pred odpiranjem datoteke, vendar popravek ni bil dokončan, saj se ponastavi samo ID uporabnika (UID), ID skupine (GID) pa ostane enak.
  • CVE-2022-27818 – Vtičnica Unix je ustvarjena z uporabo datoteke /tmp/swhkd.sock, ustvarjene v zapisljivem imeniku, kar vodi do podobnih težav kot prva ranljivost (vsak uporabnik lahko ustvari /tmp/swhkd.sock in ustvari ali prestreže dogodki pritiskov tipk).
  • CVE-2022-27817 – Vhodni dogodki so sprejeti iz vseh naprav in v vseh sejah, tj. uporabnik iz druge seje Wayland ali iz konzole lahko prestreže dogodke, ko drugi uporabniki pritisnejo bližnjične tipke.
  • CVE-2022-27816 Proces swhks, tako kot swhkd, uporablja datoteko PID /tmp/swhks.pid v zapisljivem imeniku /tmp. Težava je podobna prvi ranljivosti, vendar ni tako nevarna, ker se swhks izvaja pod neprivilegiranim uporabnikom.

Vir: opennet.ru

Dodaj komentar