Luki w swhkd, menedżerze skrótów klawiszowych dla Wayland

W swhkd (Simple Wayland HotKey Daemon) wykryto szereg luk, spowodowanych nieprawidłowym przetwarzaniem plików tymczasowych, parametrów linii poleceń oraz gniazd unixowych. Program napisany jest w języku Rust i obsługuje kombinacje klawiszy w środowiskach opartych na protokole Wayland (kompatybilny na poziomie plików konfiguracyjnych z procesem sxhkd, stosowanym w środowiskach opartych na X11).

Pakiet zawiera nieuprzywilejowany proces swhks, który wykonuje działania dla gorących klawiszy, oraz proces w tle swhkd, uruchamiany z uprawnieniami roota i współdziałający z urządzeniami wejściowymi na poziomie API uinput. Do organizacji interakcji pomiędzy swhks a swhkd stosuje się gniazdo Unix. Dzięki regułom Polkit każdy lokalny użytkownik ma możliwość uruchomienia z uprawnieniami roota procesu /usr/bin/swhkd i przekazywania mu dowolnych parametrów.

Zidentyfikowane luki:

  • CVE-2022-27815 — zapis PID procesu do pliku o przewidywalnej nazwie w katalogu, który jest dostępny do zapisu przez innych użytkowników (/tmp/swhkd.pid). Każdy użytkownik może stworzyć plik /tmp/swhkd.pid i umieścić w nim PID istniejącego procesu, co uniemożliwi uruchomienie swhkd. Brak ochrony przed tworzeniem linków symbolicznych w /tmp sprawia, że ta podatność może być wykorzystana do tworzenia lub nadpisywania plików w dowolnym katalogu systemowym (do pliku zapisywany jest PID) lub do odczytu zawartości dowolnego pliku w systemie (swhkd wyświetla w stdout całą zawartość pliku PID). Należy zaznaczyć, że w wydanej poprawce plik PID przeniesiono nie do katalogu /run, lecz do katalogu /etc (/etc/swhkd/runtime/swhkd_{uid}.pid), gdzie również nie powinien się znajdować.
  • CVE-2022-27814 — manipulując parametrem wiersza poleceń „-c”, używanym do określenia pliku konfiguracyjnego, można stwierdzić istnienie dowolnego pliku w systemie. Na przykład, aby sprawdzić /root/.somefile, można uruchomić „pkexec /usr/bin/swhkd -d -c /root/.somefile”, a jeśli plik nie istnieje, zostanie wyświetlony błąd „/root/.somefile doesn’t exist”. Jak w przypadku pierwszej podatności, poprawka budzi zdziwienie — rozwiązanie problemu polega na tym, że do odczytu pliku konfiguracyjnego teraz uruchamiana jest zewnętrzna utilita „cat” (‘Command::new(‘/bin/cat’).arg(path).output()’).
  • CVE-2022-27819 — problem ten dotyczy również użycia opcji „-c”, przez co plik konfiguracyjny jest w całości ładowany i analizowany bez sprawdzenia jego rozmiaru i typu. Na przykład, aby wywołać odmowę usługi poprzez wyczerpanie dostępnej pamięci i wygenerowanie nadmiarowego wejścia/wyjścia, można podczas uruchamiania wskazać urządzenie blokowe („pkexec /usr/bin/swhkd -d -c /dev/sda”) lub urządzenie znakowe, które generuje nieskończony strumień danych. Problem został rozwiązany poprzez zrzucenie uprawnień przed otwarciem pliku, ale poprawka okazała się niepełna, ponieważ zrzucany jest tylko identyfikator użytkownika (UID), natomiast identyfikator grupy (GID) pozostaje bez zmian.
  • CVE-2022-27818 — do tworzenia gniazda Unix używany jest plik /tmp/swhkd.sock, tworzony w publicznie dostępnym katalogu do zapisu, co prowadzi do podobnych problemów jak w pierwszej podatności (dowolny użytkownik może stworzyć /tmp/swhkd.sock i generować lub przechwytywać zdarzenia naciśnięcia klawiszy).
  • CVE-2022-27817 — zdarzenia wejściowe są akceptowane ze wszystkich urządzeń i we wszystkich sesjach, tzn. użytkownik z innej sesji Wayland lub z konsoli może przechwycić zdarzenia podczas naciśnięcia klawiszy skrótu przez innych użytkowników.
  • CVE-2022-27816 — proces swhks, tak jak swhkd, wykorzystuje plik PID \/tmp\/swhks.pid w ogólnodostępnym katalogu zapisu \/tmp. Problem jest podobny do pierwszej podatności, ale mniej niebezpieczny, ponieważ swhks działa jako użytkownik bez przywilejów.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster