Chyby zabezpečenia v swhkd, správcovi skratiek pre Wayland

V swhkd (Simple Wayland HotKey Daemon) bola identifikovaná séria zraniteľností spôsobených nesprávnou prácou s dočasnými súbormi, parametrami príkazového riadku a Unix socketmi. Program je napísaný v jazyku Rust a zvláda stláčanie klávesových skratiek v prostrediach založených na protokole Wayland (analóg kompatibilný s konfiguračným súborom procesu sxhkd používaný v prostrediach založených na X11).

Balík obsahuje neprivilegovaný proces swhks, ktorý vykonáva akcie klávesových skratiek, a proces swhkd na pozadí, ktorý beží ako root a interaguje so vstupnými zariadeniami na úrovni uinput API. Unixový socket sa používa na organizáciu interakcie medzi swhk a swhkd. Pomocou pravidiel Polkitu môže každý lokálny používateľ spustiť proces /usr/bin/swhkd ako root a odovzdať mu ľubovoľné parametre.

Identifikované slabé miesta:

  • CVE-2022-27815 – Uloženie PID procesu do súboru s predvídateľným názvom a do adresára, do ktorého môžu zapisovať iní používatelia (/tmp/swhkd.pid). Každý používateľ môže vytvoriť súbor /tmp/swhkd.pid a vložiť doň pid existujúceho procesu, čo spôsobí, že swhkd nebude možné spustiť. Ak neexistuje žiadna ochrana proti vytváraniu symbolických odkazov v /tmp, chybu možno použiť na vytváranie alebo prepisovanie súborov v akomkoľvek systémovom adresári (PID sa zapisuje do súboru) alebo na určenie obsahu ľubovoľného súboru v systéme (swhkd vypíše súbor celý obsah súboru PID na stdout). Je pozoruhodné, že vo vydanej oprave bol súbor PID presunutý nie do adresára /run, ale do adresára /etc (/etc/swhkd/runtime/swhkd_{uid}.pid), kam tiež nepatrí.
  • CVE-2022-27814 – Manipuláciou s voľbou príkazového riadka „-c“, ktorá sa používa na zadanie konfiguračného súboru, je možné určiť existenciu akéhokoľvek súboru v systéme. Napríklad na kontrolu /root/.somefile môžete spustiť „pkexec /usr/bin/swhkd -d -c /root/.somefile“ a ak súbor chýba, zobrazí sa chyba „/root/.somefile neexistuje “ sa zobrazí. Rovnako ako v prípade prvej zraniteľnosti je oprava problému záhadou – oprava problému spočíva v tom, že externý nástroj „cat“ („Command::new(“/bin/cat“)).arg(cesta) sa teraz spustí na čítanie konfiguračného súboru. output()').
  • CVE-2022-27819 – Problém súvisí aj s použitím voľby „-c“, ktorá spôsobí načítanie a analýzu celého konfiguračného súboru bez kontroly veľkosti a typu súboru. Ak chcete napríklad spôsobiť odmietnutie služby vyčerpaním voľnej pamäte a vytvorením falošných I/O, môžete zadať blokové zariadenie pri spustení ("pkexec /usr/bin/swhkd -d -c /dev/sda") alebo znakové zariadenie, ktoré produkuje nekonečný prúd údajov. Problém bol vyriešený resetovaním privilégií pred otvorením súboru, ale oprava nebola dokončená, pretože sa resetuje iba ID používateľa (UID), ale ID skupiny (GID) zostáva rovnaké.
  • CVE-2022-27818 – Unixový soket je vytvorený pomocou súboru /tmp/swhkd.sock vytvoreného v zapisovateľnom adresári, čo vedie k podobným problémom ako pri prvej zraniteľnosti (každý používateľ môže vytvoriť /tmp/swhkd.sock a vygenerovať alebo zachytiť udalosti stlačenia klávesov).
  • CVE-2022-27817 - Vstupné udalosti sú akceptované zo všetkých zariadení a vo všetkých reláciách, t.j. používateľ z inej relácie Wayland alebo z konzoly môže zachytiť udalosti, keď ostatní používatelia stlačia klávesové skratky.
  • CVE-2022-27816 Proces swhks, podobne ako swhkd, používa súbor PID /tmp/swhks.pid v zapisovateľnom adresári /tmp. Problém je podobný prvej zraniteľnosti, ale nie je taký nebezpečný, pretože swhks beží pod neprivilegovaným používateľom.

Zdroj: opennet.ru

Pridať komentár