Kerentanan di swhkd, pengelola pintasan untuk Wayland

Serangkaian kerentanan telah diidentifikasi di swhkd (Simple Wayland HotKey Daemon) yang disebabkan oleh pekerjaan yang salah dengan file sementara, parameter baris perintah, dan soket Unix. Program ini ditulis dalam Rust dan menangani penekanan tombol pintas di lingkungan berdasarkan protokol Wayland (analog yang kompatibel dengan file konfigurasi dari proses sxhkd yang digunakan di lingkungan berbasis X11).

Paket ini mencakup proses swhks tanpa hak istimewa yang melakukan tindakan hotkey, dan proses swhkd latar belakang yang berjalan sebagai root dan berinteraksi dengan perangkat input di level API uinput. Soket Unix digunakan untuk mengatur interaksi antara swhks dan swhkd. Dengan menggunakan aturan Polkit, setiap pengguna lokal dapat menjalankan proses /usr/bin/swhkd sebagai root dan meneruskan parameter arbitrer ke dalamnya.

Kerentanan yang teridentifikasi:

  • CVE-2022-27815 – Menyimpan PID proses ke file dengan nama yang dapat diprediksi dan dalam direktori yang dapat ditulis oleh pengguna lain (/tmp/swhkd.pid). Setiap pengguna dapat membuat file /tmp/swhkd.pid dan memasukkan pid dari proses yang ada ke dalamnya, yang akan membuat swhkd tidak dapat dijalankan. Jika tidak ada perlindungan terhadap pembuatan tautan simbolik di /tmp, kerentanan dapat digunakan untuk membuat atau menimpa file di direktori sistem mana pun (PID ditulis ke file) atau menentukan konten file mana pun di sistem (swhkd mencetak seluruh isi file PID ke stdout). Patut dicatat bahwa dalam perbaikan yang dirilis, file PID dipindahkan bukan ke direktori /run, tetapi ke direktori /etc (/etc/swhkd/runtime/swhkd_{uid}.pid), yang juga bukan tempatnya.
  • CVE-2022-27814 – Dengan memanipulasi opsi baris perintah β€œ-c” yang digunakan untuk menentukan file konfigurasi, dimungkinkan untuk menentukan keberadaan file apa pun di sistem. Misalnya untuk memeriksa /root/.somefile Anda dapat menjalankan β€œpkexec /usr/bin/swhkd -d -c /root/.somefile” dan jika file hilang, kesalahan β€œ/root/.somefile tidak ada " akan ditampilkan. Seperti dalam kasus kerentanan pertama, memperbaiki masalah ini membingungkan - memperbaiki masalah bermuara pada fakta bahwa utilitas eksternal β€œcat” ('Command::new(β€œ/bin/cat”)).arg(path) sekarang diluncurkan untuk membaca file konfigurasi.output()').
  • CVE-2022-27819 – Masalah ini juga terkait dengan penggunaan opsi β€œ-c”, yang menyebabkan seluruh file konfigurasi dimuat dan diurai tanpa memeriksa ukuran dan jenis file. Misalnya, untuk menyebabkan penolakan layanan karena kehabisan memori bebas dan membuat I/O palsu, Anda dapat menentukan perangkat blok saat startup ("pkexec /usr/bin/swhkd -d -c /dev/sda") atau perangkat karakter yang menghasilkan aliran data tak terbatas. Masalahnya diselesaikan dengan mengatur ulang hak istimewa sebelum membuka file, tetapi perbaikan belum selesai karena hanya ID pengguna (UID) yang direset tetapi ID grup (GID) tetap sama.
  • CVE-2022-27818 – Soket Unix dibuat menggunakan file /tmp/swhkd.sock yang dibuat di direktori yang dapat ditulisi, yang menyebabkan masalah serupa dengan kerentanan pertama (setiap pengguna dapat membuat /tmp/swhkd.sock dan menghasilkan atau mencegat peristiwa penekanan tombol).
  • CVE-2022-27817 - Peristiwa masukan diterima dari semua perangkat dan di semua sesi, mis. pengguna dari sesi Wayland lain atau dari konsol dapat mencegat peristiwa ketika tombol pintas ditekan oleh pengguna lain.
  • CVE-2022-27816 Proses swhks, seperti swhkd, menggunakan file PID /tmp/swhks.pid di direktori /tmp yang dapat ditulis. Masalahnya mirip dengan kerentanan pertama, namun tidak berbahaya karena swhks berjalan di bawah pengguna yang tidak memiliki hak istimewa.

Sumber: opennet.ru

Tambah komentar