Wayland üçün qısa yol meneceri olan swhkd-də boşluqlar

Swhkd (Simple Wayland HotKey Daemon) proqramında müvəqqəti fayllar, komanda xətti parametrləri və Unix yuvaları ilə düzgün işləmək nəticəsində yaranan bir sıra boşluqlar müəyyən edilib. Proqram Rust dilində yazılmışdır və Wayland protokoluna (X11 əsaslı mühitlərdə istifadə edilən sxhkd prosesinin konfiqurasiya faylına uyğun analoqu) əsaslanan mühitlərdə isti düymələrin basılmasını idarə edir.

Paketə hotkey hərəkətlərini yerinə yetirən imtiyazsız swhks prosesi və kök kimi işləyən və uinput API səviyyəsində giriş cihazları ilə qarşılıqlı əlaqədə olan fon swhkd prosesi daxildir. Unix yuvası swhks və swhkd arasında qarşılıqlı əlaqəni təşkil etmək üçün istifadə olunur. Polkit qaydalarından istifadə edərək istənilən yerli istifadəçi /usr/bin/swhkd prosesini kök kimi işlədə və ona ixtiyari parametrlər ötürə bilər.

Müəyyən edilmiş zəifliklər:

  • CVE-2022-27815 – Proses PID-nin proqnozlaşdırıla bilən adı olan faylda və digər istifadəçilər tərəfindən yazıla bilən kataloqda (/tmp/swhkd.pid) saxlanması. İstənilən istifadəçi /tmp/swhkd.pid faylı yarada və ora mövcud prosesin pid-ini qoya bilər ki, bu da swhkd-nin işə başlamamasına səbəb olacaq. /tmp-də simvolik keçidlərin yaradılmasına qarşı heç bir qorunma yoxdursa, zəiflik istənilən sistem kataloqunda faylları yaratmaq və ya üzərinə yazmaq (PID fayla yazılır) və ya sistemdəki hər hansı faylın məzmununu müəyyən etmək üçün istifadə edilə bilər (swhkd faylı çap edir). PID faylının bütün məzmununu stdout-a köçürün). Maraqlıdır ki, buraxılmış düzəlişdə PID faylı /run qovluğuna deyil, onun da aid olmadığı /etc qovluğuna (/etc/swhkd/runtime/swhkd_{uid}.pid) köçürülüb.
  • CVE-2022-27814 – Konfiqurasiya faylını təyin etmək üçün istifadə olunan “-c” komanda xətti seçimini manipulyasiya etməklə sistemdə hər hansı bir faylın mövcudluğunu müəyyən etmək mümkündür. Məsələn, /root/.somefile yoxlamaq üçün “pkexec /usr/bin/swhkd -d -c /root/.somefile” işlədə bilərsiniz və əgər fayl yoxdursa, “/root/.somefile mövcud deyil” xətası ” göstəriləcək. Birinci boşluq vəziyyətində olduğu kimi, problemin həlli çaşdırıcıdır - problemin həlli xarici yardım proqramının “pişik” ('Command::new(“/bin/cat”)).arg(yol) olması ilə nəticələnir. indi konfiqurasiya faylını oxumaq üçün işə salınır. output()').
  • CVE-2022-27819 – Məsələ həm də “-c” seçiminin istifadəsi ilə bağlıdır ki, bu da bütün konfiqurasiya faylının faylın ölçüsünü və növünü yoxlamadan yüklənməsinə və təhlil edilməsinə səbəb olur. Məsələn, boş yaddaşın tükənməsi və saxta I/O yaratmaqla xidmətdən imtinaya səbəb olmaq üçün siz başlanğıcda blok cihazını təyin edə bilərsiniz ("pkexec /usr/bin/swhkd -d -c /dev/sda") və ya sonsuz məlumat axını istehsal edən simvol cihazı. Problem faylı açmazdan əvvəl imtiyazları sıfırlamaqla həll edildi, lakin həll tamamlanmadı, çünki yalnız istifadəçi ID (UID) sıfırlanır, lakin qrup ID (GID) eyni qalır.
  • CVE-2022-27818 – Unix yuvası yazıla bilən qovluqda yaradılmış /tmp/swhkd.sock faylından istifadə etməklə yaradılır və bu, birinci zəiflik kimi oxşar problemlərə səbəb olur (istənilən istifadəçi /tmp/swhkd.sock yarada və yarada və ya müdaxilə edə bilər) düyməni basma hadisələri).
  • CVE-2022-27817 - Daxiletmə hadisələri bütün cihazlardan və bütün sessiyalarda qəbul edilir, yəni. başqa Wayland sessiyasından və ya konsoldan istifadəçi digər istifadəçilər tərəfindən isti düymələrə basıldığında hadisələrə müdaxilə edə bilər.
  • CVE-2022-27816 swhks prosesi, swhkd kimi, yazıla bilən /tmp qovluğunda /tmp/swhks.pid PID faylından istifadə edir. Problem birinci zəifliyə bənzəyir, lakin o qədər də təhlükəli deyil, çünki swhks imtiyazsız istifadəçi altında işləyir.

Mənbə: opennet.ru

Добавить комментарий