Mga kahinaan sa swhkd, isang shortcut manager para sa Wayland

Isang serye ng mga kahinaan ang natukoy sa swhkd (Simple Wayland HotKey Daemon) na dulot ng maling trabaho sa mga pansamantalang file, mga parameter ng command line at mga Unix socket. Ang programa ay nakasulat sa Rust at pinangangasiwaan ang pagpindot ng hotkey sa mga kapaligiran batay sa protocol ng Wayland (isang configuration-file-compatible na analogue ng proseso ng sxhkd na ginagamit sa mga kapaligiran na nakabatay sa X11).

Kasama sa package ang isang unprivileged na proseso ng swhks na nagsasagawa ng mga hotkey action, at isang background na proseso ng swhkd na tumatakbo bilang root at nakikipag-ugnayan sa mga input device sa uinput API level. Ang isang Unix socket ay ginagamit upang ayusin ang pakikipag-ugnayan sa pagitan ng swhks at swhkd. Gamit ang mga panuntunan ng Polkit, maaaring patakbuhin ng sinumang lokal na user ang /usr/bin/swhkd na proseso bilang ugat at magpasa ng mga arbitrary na parameter dito.

Natukoy na mga kahinaan:

  • CVE-2022-27815 – Pag-save ng prosesong PID sa isang file na may predictable na pangalan at sa isang direktoryo na maaaring isulat ng ibang mga user (/tmp/swhkd.pid). Ang sinumang user ay maaaring lumikha ng isang file /tmp/swhkd.pid at ilagay ang pid ng isang umiiral na proseso dito, na gagawing hindi makapagsimula ang swhkd. Kung walang proteksyon laban sa paglikha ng mga simbolikong link sa /tmp, ang kahinaan ay maaaring gamitin upang lumikha o mag-overwrite ng mga file sa anumang direktoryo ng system (ang PID ay nakasulat sa file) o matukoy ang mga nilalaman ng anumang file sa system (swhkd prints the buong nilalaman ng PID file sa stdout). Kapansin-pansin na sa inilabas na pag-aayos ang PID file ay inilipat hindi sa /run directory, ngunit sa /etc directory (/etc/swhkd/runtime/swhkd_{uid}.pid), kung saan hindi rin ito nabibilang.
  • CVE-2022-27814 – Sa pamamagitan ng pagmamanipula sa β€œ-c” na opsyon sa command line na ginamit upang tukuyin ang isang configuration file, posibleng matukoy ang pagkakaroon ng anumang file sa system. Halimbawa, upang suriin ang /root/.somefile maaari mong patakbuhin ang β€œpkexec /usr/bin/swhkd -d -c /root/.somefile” at kung nawawala ang file, ang error na β€œ/root/.somefile ay hindi umiiral ” ay ipapakita. Tulad ng kaso ng unang kahinaan, ang pag-aayos sa problema ay nakakalito - ang pag-aayos ng problema ay nagmumula sa katotohanan na ang panlabas na utility na β€œcat” ('Command::new(β€œ/bin/cat”)).arg(path) ay inilunsad na ngayon upang basahin ang configuration file. output()').
  • CVE-2022-27819 – Ang isyu ay nauugnay din sa paggamit ng opsyong β€œ-c”, na nagiging sanhi ng pag-load at pag-parse ng buong configuration file nang hindi sinusuri ang laki at uri ng file. Halimbawa, upang magdulot ng pagtanggi sa serbisyo sa pamamagitan ng pagkaubos ng libreng memorya at paglikha ng huwad na I/O, maaari kang tumukoy ng block device sa pagsisimula ("pkexec /usr/bin/swhkd -d -c /dev/sda") o isang character na device na gumagawa ng walang katapusang stream ng data . Nalutas ang problema sa pamamagitan ng pag-reset ng mga pribilehiyo bago buksan ang file, ngunit hindi kumpleto ang pag-aayos, dahil ang user ID (UID) lang ang ni-reset, ngunit ang group ID (GID) ay nananatiling pareho.
  • CVE-2022-27818 – Ginagawa ang Unix socket gamit ang /tmp/swhkd.sock file na ginawa sa isang masusulat na direktoryo, na humahantong sa mga katulad na isyu bilang ang unang kahinaan (ang sinumang user ay maaaring lumikha ng /tmp/swhkd.sock at bumuo o humarang mga kaganapan sa keypress).
  • CVE-2022-27817 - Tinatanggap ang mga event ng input mula sa lahat ng device at sa lahat ng session, i.e. ang isang user mula sa ibang Wayland session o mula sa console ay maaaring humarang ng mga kaganapan kapag ang mga hotkey ay pinindot ng ibang mga user.
  • CVE-2022-27816 Ang proseso ng swhks, tulad ng swhkd, ay gumagamit ng PID file /tmp/swhks.pid sa nasusulat na /tmp na direktoryo. Ang problema ay katulad ng unang kahinaan, ngunit hindi kasing delikado dahil ang mga swhks ay tumatakbo sa ilalim ng isang unprivileged user.

Pinagmulan: opennet.ru

Magdagdag ng komento