Swhkd, „Wayland“ nuorodų tvarkyklės, pažeidžiamumas

Swhkd (Simple Wayland HotKey Daemon) buvo aptikta pažeidžiamumų, kuriuos sukėlė neteisingas darbas su laikinais failais, komandinės eilutės parametrais ir Unix lizdais. Programa parašyta Rust ir tvarko sparčiųjų klavišų paspaudimą aplinkoje, pagrįstoje Wayland protokolu (su konfigūracijos failais suderinamas sxhkd proceso analogas, naudojamas X11 pagrindu sukurtose aplinkose).

Paketas apima neprivilegijuotą swhks procesą, kuris atlieka sparčiuosius klavišus, ir fono swhkd procesą, kuris veikia kaip root ir sąveikauja su įvesties įrenginiais uinput API lygiu. „Unix“ lizdas naudojamas swhks ir swhkd sąveikai organizuoti. Naudodamas Polkit taisykles, bet kuris vietinis vartotojas gali paleisti /usr/bin/swhkd procesą kaip root ir perduoti jam savavališkus parametrus.

Nustatyti pažeidžiamumai:

  • CVE-2022-27815 – proceso PID įrašymas į failą nuspėjamu pavadinimu ir kataloge, kurį gali įrašyti kiti vartotojai (/tmp/swhkd.pid). Bet kuris vartotojas gali sukurti failą /tmp/swhkd.pid ir įdėti į jį esamo proceso pid, todėl swhkd negalės paleisti. Jei nėra apsaugos nuo simbolinių nuorodų kūrimo /tmp, pažeidžiamumas gali būti naudojamas kuriant arba perrašant failus bet kuriame sistemos kataloge (PID įrašomas į failą) arba nustatyti bet kurio sistemoje esančio failo turinį (swhkd spausdina visą PID failo turinį į stdout). Pastebėtina, kad išleistame pataisyme PID failas buvo perkeltas ne į /run katalogą, o į /etc katalogą (/etc/swhkd/runtime/swhkd_{uid}.pid), kur jis taip pat nepriklauso.
  • CVE-2022-27814 – manipuliuojant „-c“ komandų eilutės parinktimi, naudojama konfigūracijos failui nurodyti, galima nustatyti bet kurio failo egzistavimą sistemoje. Pavyzdžiui, norėdami patikrinti /root/.somefile galite paleisti „pkexec /usr/bin/swhkd -d -c /root/.somefile“, o jei failo trūksta, klaida „/root/.somefile“ neegzistuoja. “ bus rodomas. Kaip ir pirmojo pažeidžiamumo atveju, problemos sprendimas yra mįslingas – problemos sprendimas priklauso nuo to, kad išorinė programa „cat“ („Command::new(“/bin/cat)).arg(path) dabar paleistas nuskaityti konfigūracijos failą. output()').
  • CVE-2022-27819 – problema taip pat susijusi su parinkties „-c“ naudojimu, dėl kurios visas konfigūracijos failas įkeliamas ir išanalizuojamas netikrinant failo dydžio ir tipo. Pavyzdžiui, norėdami sukelti paslaugų atsisakymą, kai pritrūksta laisvos atminties ir sukuriate klaidingą I/O, paleidžiant galite nurodyti blokavimo įrenginį ("pkexec /usr/bin/swhkd -d -c /dev/sda") arba simbolių įrenginys, kuris sukuria begalinį duomenų srautą. Problema buvo išspręsta iš naujo nustatant teises prieš atidarant failą, tačiau taisymas nebuvo baigtas, nes iš naujo nustatomas tik vartotojo ID (UID), bet grupės ID (GID) išlieka toks pat.
  • CVE-2022-27818 – „Unix“ lizdas sukuriamas naudojant /tmp/swhkd.sock failą, sukurtą rašomame kataloge, todėl kyla panašių problemų kaip ir pirmasis pažeidžiamumas (bet kuris vartotojas gali sukurti /tmp/swhkd.sock ir generuoti arba perimti klavišų paspaudimo įvykiai).
  • CVE-2022-27817 – įvesties įvykiai priimami iš visų įrenginių ir visuose seansuose, t.y. vartotojas iš kitos Wayland sesijos arba iš konsolės gali perimti įvykius, kai kiti vartotojai paspaudžia sparčiuosius klavišus.
  • CVE-2022-27816 Swhks procesas, kaip ir swhkd, naudoja PID failą /tmp/swhks.pid, esantį rašomame /tmp kataloge. Problema panaši į pirmąjį pažeidžiamumą, tačiau nėra tokia pavojinga, nes swhks veikia neprivilegijuotam vartotojui.

Šaltinis: opennet.ru

Добавить комментарий