Kwetsberheden yn swhkd, in fluchtoetsbehearder foar Wayland

In searje kwetsberens binne identifisearre yn swhkd (Simple Wayland HotKey Daemon) feroarsake troch ferkeard wurk mei tydlike bestannen, kommandorigelparameters en Unix-sockets. It programma is skreaun yn Rust en behannelet fluchtoetsen yn omjouwings basearre op it Wayland-protokol (in konfiguraasje-bestân-kompatibele analoog fan it sxhkd-proses brûkt yn X11-basearre omjouwings).

It pakket omfettet in unprivileged swhks-proses dat fluchtoetsaksjes útfiert, en in eftergrûn swhkd-proses dat rint as root en ynteraksje mei ynfierapparaten op it uinput API-nivo. In Unix-socket wurdt brûkt om de ynteraksje tusken swhks en swhkd te organisearjen. Mei help fan Polkit-regels kin elke lokale brûker it /usr/bin/swhkd-proses as root útfiere en willekeurige parameters deroan trochjaan.

Identifisearre kwetsberens:

  • CVE-2022-27815 - It bewarjen fan in proses PID nei in bestân mei in foarsisbere namme en yn in map dy't skriuwber is troch oare brûkers (/tmp/swhkd.pid). Elke brûker kin in triem /tmp/swhkd.pid oanmeitsje en de pid fan in besteande proses dêryn pleatse, wêrtroch swhkd net kin begjinne. As d'r gjin beskerming is tsjin it meitsjen fan symboalyske keppelings yn /tmp, kin de kwetsberens brûkt wurde om bestannen yn elke systeemmap te meitsjen of te oerskriuwen (de PID wurdt skreaun nei it bestân) of de ynhâld fan in bestân op it systeem te bepalen (swhkd drukt de folsleine ynhâld fan it PID-bestân nei stdout). It is opmerklik dat yn 'e frijlitten fix de PID-bestân net nei de map /run ferpleatst is, mar nei de map /etc (/etc/swhkd/runtime/swhkd_{uid}.pid), wêr't it ek net heart.
  • CVE-2022-27814 - Troch it manipulearjen fan de "-c" kommandorigelopsje dy't brûkt wurdt om in konfiguraasjetriem op te jaan, is it mooglik om it bestean fan elke triem op it systeem te bepalen. Om bygelyks /root/.somefile te kontrolearjen kinne jo "pkexec /usr/bin/swhkd -d -c /root/.somefile" útfiere en as it bestân ûntbrekt, bestiet de flater "/root/.somefile net ” sil werjûn wurde. Lykas yn it gefal fan 'e earste kwetsberens, is it reparearjen fan it probleem puzel - it reparearjen fan it probleem komt del op it feit dat it eksterne nut "kat" ('Command::new(“/bin/cat”)).arg(path) wurdt no lansearre om it konfiguraasjetriem te lêzen. output()').
  • CVE-2022-27819 - It probleem is ek besibbe oan it gebrûk fan 'e "-c" opsje, wêrtroch't it hiele konfiguraasjetriem wurdt laden en parseard sûnder de grutte en it type fan it bestân te kontrolearjen. Bygelyks, om in ûntkenning fan tsjinst te feroarsaakjen troch sûnder fergees ûnthâld te rinnen en falske I/O te meitsjen, kinne jo in blokapparaat opjaan by it opstarten ("pkexec /usr/bin/swhkd -d -c /dev/sda") of in karakterapparaat dat in ûneinige stream fan gegevens produsearret. It probleem waard oplost troch de privileezjes werom te setten foar it iepenjen fan it bestân, mar de reparaasje wie net kompleet, om't allinich de brûkers-ID (UID) wurdt weromset, mar de groep-ID (GID) bliuwt itselde.
  • CVE-2022-27818 - In Unix-socket wurdt makke mei it /tmp/swhkd.sock-bestân makke yn in skriuwbere map, wat liedt ta ferlykbere problemen as de earste kwetsberens (elke brûker kin /tmp/swhkd.sock oanmeitsje en generearje of ûnderskeppe toetsoanslaggen).
  • CVE-2022-27817 - Ynput-eveneminten wurde akseptearre fan alle apparaten en yn alle sesjes, d.w.s. in brûker fan in oare Wayland-sesje of fan 'e konsole kin eveneminten ûnderskeppe as fluchtoetsen wurde yndrukt troch oare brûkers.
  • CVE-2022-27816 It swhks-proses, lykas swhkd, brûkt it PID-bestân /tmp/swhks.pid yn 'e skriuwbere /tmp-map. It probleem is fergelykber mei de earste kwetsberens, mar is net sa gefaarlik, om't swhks ûnder in unprivileged brûker rint.

Boarne: opennet.ru

Add a comment