Уязвимости в swhkd, мениджър за горещи клавиши за Wayland

В swhkd (Simple Wayland HotKey Daemon) беше открита серия уязвимости, причинени от неправилното управление с временни файлове, параметри на командния ред и unix-сокети. Програмата е написана на Rust и обработва натискането на горещи клавиши в среди, базирани на протокола Wayland (аналог на sxhkd, използван в среди, базирани на X11, на ниво конфигурационни файлове).

В пакетa е включен непривилегирован процес swhks, който извършва действия за горещи клавиши, и фонова процес swhkd, който се изпълнява с правата на root и взаимодейства с устройства за въвеждане на ниво API uinput. За организирането на взаимодействие между swhks и swhkd се използва Unix-сокет. Чрез правилата на Polkit, всеки локален потребител получава възможността да стартира процеса /usr/bin/swhkd с права на root и да му предава произволни параметри.

Разпознати уязвимости:

  • CVE-2022-27815 — запазване на PID на процеса в файл с предсказуемо име и в директория, достъпна за запис от други потребители (/tmp/swhkd.pid). Всеки потребител може да създаде файл /tmp/swhkd.pid и да постави в него PID на съществуващ процес, което ще доведе до невъзможност за стартиране на swhkd. При липса на защита от създаването на символични линкове в /tmp, уязвимостта може да бъде използвана за създаване или презапис на файлове в всяка системна директория (в файл се записва PID) или за определяне на съдържанието на всеки файл в системата (swhkd извежда в stdout всичкo съдържание на PID файла). Забележително е, че в издаденото коригиране PID файлът е преместен не в директория /run, а в директория /etc (/etc/swhkd/runtime/swhkd_{uid}.pid), където също няма място.
  • CVE-2022-27814 — манипулирайки параметъра на командния ред «-c», използван за указване на конфигурационен файл, може да бъде установено съществуването на всеки файл в системата. Например, за проверка на /root/.somefile може да се стартира «pkexec /usr/bin/swhkd -d -c /root/.somefile» и ако файлът отсъства, ще бъде изведена грешка «/root/.somefile doesn’t exist». Както и при първата уязвимост, коригирането на проблема е учудващо — разрешаването на проблема се свежда до това, че за прочитане на конфигурационния файл сега се стартира външна утилита «cat» (‘Command::new(“/bin/cat”).arg(path).output()’).
  • CVE-2022-27819 — проблемата също е свързана с използването на опцията "-c", чрез която файлът с конфигурация се зарежда и анализира изцяло без проверка на размера и типа на файла. Например, за предизвикване на отказ на услугата чрез изчерпване на свободната памет и създаване на паразитен вход/изход може да бъде посочено при стартиране на блочно устройство ("pkexec /usr/bin/swhkd -d -c /dev/sda") или символната устройство, генерираща безкраен поток от данни. Проблемът е решен чрез нулиране на привилегиите преди отваряне на файла, но поправката не е пълна, тъй като само идентификаторът на потребителя (UID) се нулира, а идентификаторът на групата (GID) остава непроменен.
  • CVE-2022-27818 — за създаване на Unix сокета се използва файл /tmp/swhkd.sock, създаден в публична директория с права за запис, което води до подобни проблеми, каквито има и при първата уязвимост (всеки потребител може да създаде /tmp/swhkd.sock и да генерира или прихваща събития от натиск на клавиши).
  • CVE-2022-27817 — събитията от входа се приемат от всички устройства и във всички сесии, т.е. потребител от друга сесия на Wayland или от конзолата може да прихваща събития при натискане на бързи клавиши от други потребители.
  • CVE-2022-27816 — процесът swhks, подобно на swhkd, използва PID файл /tmp/swhks.pid в публична директория с права за запис /tmp. Проблемът е сходен с първата уязвимост, но не толкова опасен, тъй като swhks се изпълнява от неподprivilegирован потребител.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster