Vulnerabilități în swhkd, un manager de comenzi rapide pentru Wayland

O serie de vulnerabilități au fost identificate în swhkd (Simple Wayland HotKey Daemon) cauzate de lucrul incorect cu fișierele temporare, parametrii liniei de comandă și socket-urile Unix. Programul este scris în Rust și gestionează apăsarea tastelor rapide în medii bazate pe protocolul Wayland (un analog compatibil cu fișierele de configurare al procesului sxhkd utilizat în mediile bazate pe X11).

Pachetul include un proces swhks neprivilegiat care efectuează acțiuni de taste rapide și un proces swhkd de fundal care rulează ca root și interacționează cu dispozitivele de intrare la nivelul API-ului uinput. Un socket Unix este folosit pentru a organiza interacțiunea dintre swhks și swhkd. Folosind regulile Polkit, orice utilizator local poate rula procesul /usr/bin/swhkd ca root și îi poate transmite parametri arbitrari.

Vulnerabilitati identificate:

  • CVE-2022-27815 – Salvarea unui PID de proces într-un fișier cu un nume previzibil și într-un director care poate fi scris de alți utilizatori (/tmp/swhkd.pid). Orice utilizator poate crea un fișier /tmp/swhkd.pid și poate pune pid-ul unui proces existent în el, ceea ce va face ca swhkd să nu poată porni. Dacă nu există protecție împotriva creării de legături simbolice în /tmp, vulnerabilitatea poate fi utilizată pentru a crea sau suprascrie fișiere în orice director de sistem (PID-ul este scris în fișier) sau pentru a determina conținutul oricărui fișier din sistem (swhkd tipărește fișierul întregul conținut al fișierului PID la stdout). Este de remarcat faptul că, în corecția lansată, fișierul PID a fost mutat nu în directorul /run, ci în directorul /etc (/etc/swhkd/runtime/swhkd_{uid}.pid), unde nici nu aparține.
  • CVE-2022-27814 – Prin manipularea opțiunii de linie de comandă „-c” utilizată pentru a specifica un fișier de configurare, este posibil să se determine existența oricărui fișier pe sistem. De exemplu, pentru a verifica /root/.somefile puteți rula „pkexec /usr/bin/swhkd -d -c /root/.somefile” și dacă fișierul lipsește, eroarea „/root/.somefile nu există ” va fi afișat. Ca și în cazul primei vulnerabilități, remedierea problemei este derutantă - rezolvarea problemei se rezumă la faptul că utilitarul extern „cat” („Command::new(“/bin/cat”)).arg(path) este lansat acum pentru a citi fișierul de configurare output()').
  • CVE-2022-27819 – Problema este, de asemenea, legată de utilizarea opțiunii „-c”, care face ca întregul fișier de configurare să fie încărcat și analizat fără a verifica dimensiunea și tipul fișierului. De exemplu, pentru a provoca o refuz de serviciu prin epuizarea memoriei libere și crearea de I/O false, puteți specifica un dispozitiv bloc la pornire ("pkexec /usr/bin/swhkd -d -c /dev/sda") sau un dispozitiv de caractere care produce un flux infinit de date . Problema a fost rezolvată prin resetarea privilegiilor înainte de a deschide fișierul, dar remedierea nu a fost completă, deoarece numai ID-ul utilizatorului (UID) este resetat, dar ID-ul grupului (GID) rămâne același.
  • CVE-2022-27818 – Un socket Unix este creat folosind fișierul /tmp/swhkd.sock creat într-un director care poate fi scris, ceea ce duce la probleme similare cu prima vulnerabilitate (orice utilizator poate crea /tmp/swhkd.sock și poate genera sau intercepta evenimente de apăsare de taste).
  • CVE-2022-27817 - Evenimentele de intrare sunt acceptate de pe toate dispozitivele și în toate sesiunile, de ex. un utilizator dintr-o altă sesiune Wayland sau din consolă poate intercepta evenimente atunci când tastele rapide sunt apăsate de alți utilizatori.
  • CVE-2022-27816 Procesul swhks, ca și swhkd, utilizează fișierul PID /tmp/swhks.pid din directorul /tmp care poate fi scris. Problema este similară cu prima vulnerabilitate, dar nu este la fel de periculoasă, deoarece swhks rulează sub un utilizator neprivilegiat.

Sursa: opennet.ru

Adauga un comentariu