Chyby zabezpečení ve swhkd, správci zástupců pro Wayland

V swhkd (Simple Wayland HotKey Daemon) byla identifikována řada zranitelností způsobených nesprávnou prací s dočasnými soubory, parametry příkazového řádku a Unix sockety. Program je napsán v Rustu a zvládá stisknutí klávesových zkratek v prostředích založených na protokolu Wayland (analog kompatibilní s konfiguračním souborem procesu sxhkd používaný v prostředích založených na X11).

Balíček obsahuje neprivilegovaný proces swhks, který provádí akce klávesových zkratek, a proces swhkd na pozadí, který běží jako root a komunikuje se vstupními zařízeními na úrovni uinput API. Unixový socket se používá k organizaci interakce mezi swhks a swhkd. Pomocí pravidel Polkit může každý místní uživatel spustit proces /usr/bin/swhkd jako root a předat mu libovolné parametry.

Zjištěná zranitelnost:

  • CVE-2022-27815 – Uložení PID procesu do souboru s předvídatelným názvem a do adresáře, do kterého mohou zapisovat ostatní uživatelé (/tmp/swhkd.pid). Každý uživatel může vytvořit soubor /tmp/swhkd.pid a vložit do něj pid existujícího procesu, což znemožní spuštění swhkd. Pokud neexistuje žádná ochrana proti vytváření symbolických odkazů v /tmp, lze zranitelnost použít k vytvoření nebo přepsání souborů v libovolném systémovém adresáři (PID se zapíše do souboru) nebo k určení obsahu libovolného souboru v systému (swhkd vypíše celý obsah souboru PID na stdout). Je pozoruhodné, že ve vydané opravě nebyl soubor PID přesunut do adresáře /run, ale do adresáře /etc (/etc/swhkd/runtime/swhkd_{uid}.pid), kam také nepatří.
  • CVE-2022-27814 – Manipulací s volbou příkazového řádku „-c“ používanou k určení konfiguračního souboru je možné určit existenci libovolného souboru v systému. Například pro kontrolu /root/.somefile můžete spustit „pkexec /usr/bin/swhkd -d -c /root/.somefile“ a pokud soubor chybí, zobrazí se chyba „/root/.somefile neexistuje “ se zobrazí. Stejně jako v případě první zranitelnosti je řešení problému záhadou – oprava problému se scvrkává na skutečnost, že externí nástroj „cat“ ('Command::new(“/bin/cat”)).arg(cesta) je nyní spuštěn pro čtení konfiguračního souboru. output()').
  • CVE-2022-27819 – Problém také souvisí s použitím volby „-c“, která způsobí načtení a analýzu celého konfiguračního souboru bez kontroly velikosti a typu souboru. Chcete-li například způsobit odmítnutí služby vyčerpáním volné paměti a vytvořením falešných I/O, můžete zadat blokové zařízení při spuštění ("pkexec /usr/bin/swhkd -d -c /dev/sda") nebo znakové zařízení, které produkuje nekonečný proud dat. Problém byl vyřešen resetováním oprávnění před otevřením souboru, ale oprava nebyla dokončena, protože bylo resetováno pouze ID uživatele (UID), ale ID skupiny (GID) zůstalo stejné.
  • CVE-2022-27818 – Unixový soket je vytvořen pomocí souboru /tmp/swhkd.sock vytvořeného v zapisovatelném adresáři, což vede k podobným problémům jako první chyba zabezpečení (každý uživatel může vytvořit /tmp/swhkd.sock a generovat nebo zachytit události stisknutí klávesy).
  • CVE-2022-27817 - Vstupní události jsou přijímány ze všech zařízení a ve všech relacích, tzn. uživatel z jiné relace Wayland nebo z konzoly může zachytit události, když ostatní uživatelé stisknou klávesové zkratky.
  • CVE-2022-27816 Proces swhks, stejně jako swhkd, používá soubor PID /tmp/swhks.pid v adresáři /tmp s možností zápisu. Problém je podobný první zranitelnosti, ale není tak nebezpečný, protože swhks běží pod neprivilegovaným uživatelem.

Zdroj: opennet.ru

Přidat komentář