Vulnerabilități în swhkd, managerul de taste rapide pentru Wayland

În swhkd (Simple Wayland HotKey Daemon) a fost descoperită o serie de vulnerabilități cauzate de gestionarea incorectă a fișierelor temporare, parametrilor din linia de comandă și a Unix socket-urilor. Programul este scris în Rust și procesează apăsarea tastelor rapide în medii bazate pe protocolul Wayland (compatibil la nivel de fișiere de configurare, similar procesului sxhkd, utilizat în medii bazate pe X11).

Pachetul conține un proces neprivilegiat swhks, care îndeplinește acțiuni pentru tastele rapide, și un proces de fundal swhkd, care rulează cu privilegii root și interacționează cu dispozitivele de intrare la nivelul API-ului uinput. Pentru a organiza interacțiunea dintre swhks și swhkd se utilizează un Unix socket. Prin intermediul regulilor Polkit, oricărui utilizator local îi este permis să pornească procesul /usr/bin/swhkd cu privilegii root și să-i transmită parametrii arbitrari.

Vulnerabilitățile identificate:

  • CVE-2022-27815 — salvarea PID-ului procesului într-un fișier cu un nume predictibil și într-un director accesibil pentru scriere de către alți utilizatori (/tmp/swhkd.pid). Orice utilizator poate crea un fișier /tmp/swhkd.pid și să plaseze în el PID-ul unui proces existent, ceea ce va face imposibilă pornirea swhkd. În absența unei protecții împotriva creării de linkuri simbolice în /tmp, vulnerabilitatea poate fi folosită pentru a crea sau suprascrie fișiere în orice director al sistemului (în fișier se salvează PID-ul) sau pentru a determina conținutul oricărui fișier din sistem (swhkd afișează în stdout tot conținutul fișierului PID). Este demn de remarcat că, în corecția publicată, fișierul PID a fost mutat nu în directorul /run, ci în directorul /etc (/etc/swhkd/runtime/swhkd_{uid}.pid), unde de asemenea nu își are locul.
  • CVE-2022-27814 — manipulând parametrul din linia de comandă „-c”, utilizat pentru a specifica fișierul de configurare, se poate determina existența în sistem a oricărui fișier. De exemplu, pentru a verifica /root/.somefile se poate rula „pkexec /usr/bin/swhkd -d -c /root/.somefile” și dacă fișierul nu există, va fi afișată o eroare „/root/.somefile doesn’t exist”. Ca și în cazul primei vulnerabilități, corectarea problemei ridică semne de întrebare — rezolvarea problemei se reduce la faptul că pentru citirea fișierului de configurare acum se lansează o utilitar externă „cat” (‘Command::new(‘/bin/cat’).arg(path).output()’).
  • CVE-2022-27819 — problema este, de asemenea, legată de utilizarea opțiunii „-c”, prin care fișierul de configurație este încărcat și analizat complet fără a verifica dimensiunea și tipul fișierului. De exemplu, pentru a provoca o întrerupere a serviciului prin epuizarea memoriei libere și crearea unei intrări/ieșiri parazite, se poate specifica la pornire un dispozitiv bloc („pkexec /usr/bin/swhkd -d -c /dev/sda”) sau un dispozitiv simbolic care furnizează un flux infinit de date. Problema a fost rezolvată prin resetarea privilegiilor înainte de deschiderea fișierului, dar soluția a fost incompletă, deoarece doar identificatorul utilizatorului (UID) este resetat, în timp ce identificatorul grupului (GID) rămâne același.
  • CVE-2022-27818 — pentru a crea un socket Unix se utilizează fișierul /tmp/swhkd.sock, creat într-un director public în scriere, 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 a tastelor).
  • CVE-2022-27817 — evenimentele de intrare sunt primite de la toate dispozitivele și în toate sesiunile, adică un utilizator dintr-o altă sesiune Wayland sau din consolă poate intercepta evenimentele de apăsare a tastelor de către alți utilizatori.
  • CVE-2022-27816 — procesul swhks, la fel ca swhkd, folosește fișierul PID /tmp/swhks.pid în directorul public în scriere /tmp. Problema este similară cu prima vulnerabilitate, dar nu este la fel de periculoasă, deoarece swhks rulează sub un utilizator lipsit de privilegii.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster