Ievainojamības swhkd, Wayland īsceļu pārvaldniekā

Swhkd (Simple Wayland HotKey Daemon) ir konstatēta virkne ievainojamību, ko izraisa nepareizs darbs ar pagaidu failiem, komandrindas parametriem un Unix ligzdām. Programma ir rakstīta valodā Rust un apstrādā karsto taustiņu nospiešanu vidēs, kuru pamatā ir Wayland protokols (ar konfigurācijas failu saderīgs sxhkd procesa analogs, ko izmanto X11 vidēs).

Pakotnē ir iekļauts nepievilcīgs swhk process, kas veic karsto taustiņu darbības, un fona swhkd process, kas darbojas kā root un mijiedarbojas ar ievades ierīcēm uinput API līmenī. Unix ligzda tiek izmantota, lai organizētu mijiedarbību starp swhks un swhkd. Izmantojot Polkit noteikumus, jebkurš vietējais lietotājs var palaist /usr/bin/swhkd procesu kā root un nodot tam patvaļīgus parametrus.

Identificētās ievainojamības:

  • CVE-2022-27815 — procesa PID saglabāšana failā ar paredzamu nosaukumu un direktorijā, kurā var rakstīt citi lietotāji (/tmp/swhkd.pid). Jebkurš lietotājs var izveidot failu /tmp/swhkd.pid un ievietot tajā esošā procesa pid, kā rezultātā swhkd nevarēs startēt. Ja nav aizsardzības pret simbolisku saišu izveidi mapē /tmp, ievainojamību var izmantot, lai izveidotu vai pārrakstītu failus jebkurā sistēmas direktorijā (failā tiek ierakstīts PID) vai noteiktu jebkura sistēmas faila saturu (swhkd izdrukā visu PID faila saturu uz stdout). Jāatzīmē, ka izlaistajā labojumā PID fails tika pārvietots nevis uz /run direktoriju, bet gan uz /etc direktoriju (/etc/swhkd/runtime/swhkd_{uid}.pid), kur tas arī neietilpst.
  • CVE-2022-27814 — manipulējot ar komandrindas opciju “-c”, ko izmanto, lai norādītu konfigurācijas failu, ir iespējams noteikt jebkura faila esamību sistēmā. Piemēram, lai pārbaudītu /root/.somefile, varat palaist "pkexec /usr/bin/swhkd -d -c /root/.somefile" un, ja faila trūkst, kļūdas "/root/.somefile" nav. " tiks parādīts. Tāpat kā pirmās ievainojamības gadījumā, problēmas novēršana ir mulsinoša — problēmas novēršana ir saistīta ar to, ka ārējā utilīta “cat” ('Command::new(“/bin/cat”)).arg(path) tagad tiek palaists, lai lasītu konfigurācijas failu. output()').
  • CVE-2022-27819 — problēma ir saistīta arī ar opcijas “-c” izmantošanu, kas izraisa visa konfigurācijas faila ielādi un parsēšanu, nepārbaudot faila lielumu un veidu. Piemēram, lai izraisītu pakalpojuma atteikumu, jo trūkst brīvas atmiņas un izveidojot viltus I/O, startēšanas laikā varat norādīt blokierīci ("pkexec /usr/bin/swhkd -d -c /dev/sda") vai rakstzīmju ierīce, kas rada bezgalīgu datu plūsmu. Problēma tika atrisināta, atiestatot privilēģijas pirms faila atvēršanas, taču labojums nebija pabeigts, jo tiek atiestatīts tikai lietotāja ID (UID), bet grupas ID (GID) paliek nemainīgs.
  • CVE-2022-27818 — Unix ligzda tiek izveidota, izmantojot rakstāmā direktorijā izveidoto failu /tmp/swhkd.sock, kas rada līdzīgas problēmas kā pirmā ievainojamība (jebkurš lietotājs var izveidot /tmp/swhkd.sock un ģenerēt vai pārtvert taustiņu nospiešanas pasākumi).
  • CVE-2022-27817 — ievades notikumi tiek pieņemti no visām ierīcēm un visās sesijās, t.i. lietotājs no citas Wayland sesijas vai no konsoles var pārtvert notikumus, kad citi lietotāji nospiež karstos taustiņus.
  • CVE-2022-27816 Swhks process, tāpat kā swhkd, izmanto PID failu /tmp/swhks.pid rakstāmajā /tmp direktorijā. Problēma ir līdzīga pirmajai ievainojamībai, taču tā nav tik bīstama, jo swhks darbojas bezpriviliģēta lietotāja vadībā.

Avots: opennet.ru

Pievieno komentāru