Sårbarheder i swhkd, hotkey-manageren til Wayland

I swhkd (Simple Wayland HotKey Daemon) er der opdaget en række sårbarheder forårsaget af forkert håndtering af midlertidige filer, kommandolinjeparametre og Unix-sockets. Programmet er skrevet i Rust og håndterer tastetryk i miljøer baseret på Wayland-protokollen (svarende til sxhkd-processen anvendt i X11-baserede miljøer).

Pakken omfatter en ukompliceret proces swhks, der udfører handlinger for tastaturgenveje, og en baggrundsproces swhkd, der kører med root-rettigheder og interagerer med inputenheder på API-niveauet for uinput. For at organisere interaktionen mellem swhks og swhkd anvendes en Unix-socket. Ved hjælp af Polkit-regler får enhver lokal bruger mulighed for at starte processen /usr/bin/swhkd med root-rettigheder og overføre vilkårlige parametre til den.

Identificerede sårbarheder:

  • CVE-2022-27815 — gemme PID for processen i en fil med et forudsigeligt navn i en mappe, der er skrivbar for andre brugere (/tmp/swhkd.pid). Enhver bruger kan oprette filen /tmp/swhkd.pid og indsætte PID'en for en eksisterende proces, hvilket vil forhindre, at swhkd kan startes. Uden beskyttelse mod oprettelse af symboliske links i /tmp kan sårbarheden bruges til at oprette eller overskrive filer i enhver systemmappe (PID'en skrives i filen) eller til at bestemme indholdet af enhver fil i systemet (swhkd udskriver alt indholdet af PID-filen til stdout). Det er bemærkelsesværdigt, at den udgivne korrektur flyttede PID-filen fra /run til /etc (/etc/swhkd/runtime/swhkd_{uid}.pid), hvor den heller ikke hører hjemme.
  • CVE-2022-27814 — ved at manipulere med kommandolinjeparameteren "-c", som bruges til at angive konfigurationsfilen, kan man bestemme eksistensen af enhver fil i systemet. For eksempel, for at kontrollere /root/.somefile, kan man køre "pkexec /usr/bin/swhkd -d -c /root/.somefile", og hvis filen ikke findes, vil der blive vist en fejl "'/root/.somefile doesn’t exist'." Ligesom i tilfælde af den første sårbarhed vækker korrekturen for problemet undren — løsningen består i, at en ekstern utility "cat" nu køres for at læse konfigurationsfilen (‘Command::new("/bin/cat").arg(path).output()’).
  • CVE-2022-27819 — problemet er også relateret til brugen af indstillingen „-c”, der angiver, at konfigurationsfilen indlæses og parses helt uden kontrol af størrelse og type. For eksempel kan man angive et blokenhed ved opstarten („pkexec /usr/bin/swhkd -d -c /dev/sda”) eller et tegnret, der genererer en uendelig datastream, for at forårsage en denial-of-service ved at udnytte mangel på ledig hukommelse og skabe parasitisk ind- /uddata. Problemet er løst ved at nulstille privilegierne før filen åbnes, men løsningen er ikke helt, da kun bruger-ID (UID) nulstilles, mens gruppe-ID (GID) forbliver den samme.
  • CVE-2022-27818 — der oprettes en Unix-socket med filen /tmp/swhkd.sock, der oprettes i en offentligt skrivbar mappe, hvilket fører til lignende problemer som den første sårbarhed (enhver bruger kan oprette /tmp/swhkd.sock og generere eller opsnappe tastetryksevents).
  • CVE-2022-27817 — inputbegivenheder modtages fra alle enheder og i alle sessioner, dvs. en bruger fra en anden Wayland-session eller fra konsollen kan opsnappe events ved tastetryk fra andre brugere.
  • CVE-2022-27816 — processen swhks anvender, ligesom swhkd, en PID-fil /tmp/swhks.pid i den offentligt skrivbare mappe /tmp. Problemet er analogt til den første sårbarhed, men mindre alvorligt, da swhks kører under en ikke-privilegeret bruger.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster