Wayland için kısayol yöneticisi olan swhkd'deki güvenlik açıkları

Swhkd'de (Simple Wayland HotKey Daemon) geçici dosyalar, komut satırı parametreleri ve Unix soketleriyle yapılan yanlış çalışmalardan kaynaklanan bir dizi güvenlik açığı belirlendi. Program Rust'ta yazılmıştır ve Wayland protokolünü (X11 tabanlı ortamlarda kullanılan sxhkd işleminin yapılandırma dosyasıyla uyumlu bir analogu) temel alan ortamlarda kısayol tuşuna basmayı yönetir.

Paket, kısayol tuşu eylemlerini gerçekleştiren ayrıcalıksız bir swhk işlemi ve root olarak çalışan ve uinput API düzeyinde giriş aygıtlarıyla etkileşime giren bir arka plan swhkd işlemi içerir. Unix soketi, swhks ve swhkd arasındaki etkileşimi düzenlemek için kullanılır. Herhangi bir yerel kullanıcı Polkit kurallarını kullanarak /usr/bin/swhkd işlemini root olarak çalıştırabilir ve ona isteğe bağlı parametreler aktarabilir.

Tanımlanan güvenlik açıkları:

  • CVE-2022-27815 – İşlem PID'sini tahmin edilebilir ada sahip bir dosyaya ve diğer kullanıcılar tarafından yazılabilen bir dizine kaydetme (/tmp/swhkd.pid). Herhangi bir kullanıcı bir /tmp/swhkd.pid dosyası oluşturabilir ve mevcut bir işlemin pid'ini bu dosyaya koyabilir; bu da swhkd'nin başlatılamamasına neden olur. /tmp dosyasında sembolik bağlantı oluşturmaya karşı bir koruma yoksa, bu güvenlik açığı herhangi bir sistem dizininde dosya oluşturmak veya üzerine yazmak (PID dosyaya yazılır) veya sistemdeki herhangi bir dosyanın içeriğini belirlemek (swhkd dosyayı yazdırır) için kullanılabilir. PID dosyasının tüm içeriğini stdout'a aktarın). Yayımlanan düzeltmede PID dosyasının /run dizinine değil, aynı zamanda ait olmadığı /etc dizinine (/etc/swhkd/runtime/swhkd_{uid}.pid) taşınması dikkat çekicidir.
  • CVE-2022-27814 – Bir yapılandırma dosyasını belirtmek için kullanılan “-c” komut satırı seçeneğini değiştirerek sistemdeki herhangi bir dosyanın varlığını belirlemek mümkündür. Örneğin, /root/.somefile dosyasını kontrol etmek için “pkexec /usr/bin/swhkd -d -c /root/.somefile” komutunu çalıştırabilirsiniz ve dosya eksikse “/root/.somefile yok” hatası oluşur. ” görüntülenecektir. İlk güvenlik açığında olduğu gibi, sorunu düzeltmek kafa karıştırıcıdır - sorunun çözümü, harici yardımcı program olan “cat” ('Command::new(“/bin/cat”)).arg(path) gerçeğine indirgenir. şimdi yapılandırma dosyasını okumak için başlatıldı()').
  • CVE-2022-27819 – Sorun aynı zamanda "-c" seçeneğinin kullanılmasıyla da ilgilidir; bu durum, dosyanın boyutu ve türü kontrol edilmeden tüm yapılandırma dosyasının yüklenmesine ve ayrıştırılmasına neden olur. Örneğin, boş belleğin tükenmesi ve sahte G/Ç oluşturulması yoluyla hizmet reddine neden olmak için başlangıçta bir blok aygıtı belirtebilirsiniz ("pkexec /usr/bin/swhkd -d -c /dev/sda") veya Sonsuz bir veri akışı üreten bir karakter cihazı. Sorun, dosyayı açmadan önce ayrıcalıkların sıfırlanmasıyla çözüldü, ancak yalnızca kullanıcı kimliği (UID) sıfırlandığı, ancak grup kimliği (GID) aynı kaldığı için düzeltme tamamlanmadı.
  • CVE-2022-27818 – Yazılabilir bir dizinde oluşturulan /tmp/swhkd.sock dosyası kullanılarak bir Unix soketi oluşturulur ve bu, ilk güvenlik açığıyla benzer sorunlara yol açar (herhangi bir kullanıcı /tmp/swhkd.sock oluşturabilir ve oluşturabilir veya engelleyebilir) tuşa basma olayları).
  • CVE-2022-27817 - Giriş etkinlikleri tüm cihazlardan ve tüm oturumlarda kabul edilir; Başka bir Wayland oturumundan veya konsoldan bir kullanıcı, diğer kullanıcılar tarafından kısayol tuşlarına basıldığında olayları engelleyebilir.
  • CVE-2022-27816 swhks işlemi, swhkd gibi, yazılabilir /tmp dizinindeki /tmp/swhks.pid PID dosyasını kullanır. Sorun ilk güvenlik açığına benzer ancak swhks ayrıcalıksız bir kullanıcı altında çalıştığı için o kadar tehlikeli değildir.

Kaynak: opennet.ru

Yorum ekle