Sebezhetőségek az swhkd-ben, a Wayland parancsikonkezelőjében

Az swhkd-ben (Simple Wayland HotKey Daemon) egy sor sérülékenységet azonosítottak, amelyet az ideiglenes fájlokkal, parancssori paraméterekkel és Unix socketekkel való helytelen munka okoz. A program Rust nyelven íródott, és a Wayland protokollon (az X11-alapú környezetekben használt sxhkd folyamat konfigurációs fájlokkal kompatibilis analógja) alapuló környezetekben kezeli a gyorsbillentyűk lenyomását.

A csomag tartalmaz egy privilegizált swhk-folyamatot, amely gyorsbillentyű-műveleteket hajt végre, és egy háttérben futó swhkd-folyamatot, amely rootként fut, és az uinput API-szinten kommunikál a beviteli eszközökkel. A Unix socket az swhks és swhkd közötti interakció szervezésére szolgál. A Polkit szabályok használatával bármely helyi felhasználó rootként futtathatja az /usr/bin/swhkd folyamatot, és tetszőleges paramétereket adhat át neki.

Azonosított sebezhetőségek:

  • CVE-2022-27815 – Folyamat-PID mentése egy kiszámítható nevű fájlba, olyan könyvtárba, amelyet más felhasználók írhatnak (/tmp/swhkd.pid). Bármely felhasználó létrehozhat egy /tmp/swhkd.pid fájlt, és beleteheti egy meglévő folyamat pid-jét, ami miatt az swhkd nem tud elindulni. Ha nincs védelem a szimbolikus hivatkozások létrehozása ellen a /tmp fájlban, a sérülékenység felhasználható fájlok létrehozására vagy felülírására bármely rendszerkönyvtárban (a PID a fájlba van írva), vagy meghatározhatja a rendszer bármely fájljának tartalmát (az swhkd kiírja a a PID-fájl teljes tartalmát az stdout-ba). Figyelemre méltó, hogy a kiadott javításban a PID fájl nem a /run könyvtárba került, hanem az /etc könyvtárba (/etc/swhkd/runtime/swhkd_{uid}.pid), ahová szintén nem tartozik.
  • CVE-2022-27814 – A konfigurációs fájl megadásához használt „-c” parancssori opció manipulálásával meg lehet határozni bármely fájl létezését a rendszeren. Például a /root/.somefile ellenőrzéséhez futtassa a „pkexec /usr/bin/swhkd -d -c /root/.somefile” parancsot, és ha a fájl hiányzik, a „/root/.somefile” hibaüzenet nem létezik. ” jelenik meg. Az első sérülékenységhez hasonlóan a probléma kijavítása is rejtélyes – a probléma megoldása abból fakad, hogy a külső segédprogram „cat” ('Command::new(“/bin/cat”)).arg(path) most elindul a konfigurációs fájl olvasásához. output()').
  • CVE-2022-27819 – A probléma a „-c” opció használatával is összefügg, amely a teljes konfigurációs fájl betöltését és elemzését okozza a fájl méretének és típusának ellenőrzése nélkül. Ha például szolgáltatásmegtagadást szeretne előidézni a szabad memória kimerülése és hamis I/O létrehozása miatt, megadhat egy blokkeszközt indításkor ("pkexec /usr/bin/swhkd -d -c /dev/sda") vagy végtelen adatfolyamot előállító karaktereszköz. A probléma a fájl megnyitása előtti jogosultságok visszaállításával megoldódott, de a javítás nem volt teljes, mivel csak a felhasználói azonosító (UID) van visszaállítva, de a csoportazonosító (GID) változatlan marad.
  • CVE-2022-27818 – Az írható könyvtárban létrehozott /tmp/swhkd.sock fájl használatával Unix socket jön létre, ami hasonló problémákhoz vezet, mint az első sebezhetőség (bármely felhasználó létrehozhatja a /tmp/swhkd.sock fájlt, és létrehozhatja vagy elfoghatja gombnyomás események).
  • CVE-2022-27817 - A bemeneti eseményeket minden eszközről és minden munkamenetben elfogadja, azaz egy másik Wayland munkamenetből vagy a konzolból származó felhasználó elfoghatja az eseményeket, amikor más felhasználók megnyomják a gyorsbillentyűket.
  • CVE-2022-27816 Az swhks folyamat az swhkd-hez hasonlóan a /tmp/swhks.pid PID fájlt használja az írható /tmp könyvtárban. A probléma hasonló az első sérülékenységhez, de nem annyira veszélyes, mert az swhks nem jogosult felhasználó alatt fut.

Forrás: opennet.ru

Hozzászólás