Sårbarheder i swhkd, en genvejsmanager for Wayland

En række sårbarheder er blevet identificeret i swhkd (Simple Wayland HotKey Daemon) forårsaget af forkert arbejde med midlertidige filer, kommandolinjeparametre og Unix-sockets. Programmet er skrevet i Rust og håndterer genvejstaster i miljøer baseret på Wayland-protokollen (en konfigurationsfil-kompatibel analog af sxhkd-processen, der bruges i X11-baserede miljøer).

Pakken inkluderer en uprivilegeret swhks-proces, der udfører genvejstasthandlinger, og en baggrunds-swhkd-proces, der kører som root og interagerer med input-enheder på uinput API-niveau. En Unix-socket bruges til at organisere samspillet mellem swhks og swhkd. Ved at bruge Polkit-regler kan enhver lokal bruger køre /usr/bin/swhkd-processen som root og sende vilkårlige parametre til den.

Identificerede sårbarheder:

  • CVE-2022-27815 – Lagring af en proces-PID til en fil med et forudsigeligt navn og i en mappe, der kan skrives af andre brugere (/tmp/swhkd.pid). Enhver bruger kan oprette en fil /tmp/swhkd.pid og indsætte pid'en for en eksisterende proces i den, hvilket vil gøre swhkd ude af stand til at starte. Hvis der ikke er nogen beskyttelse mod oprettelse af symbolske links i /tmp, kan sårbarheden bruges til at oprette eller overskrive filer i en hvilken som helst systemmappe (PID skrives til filen) eller bestemme indholdet af enhver fil på systemet (swhkd udskriver hele indholdet af PID-filen til stdout). Det er bemærkelsesværdigt, at PID-filen i den frigivne rettelse ikke blev flyttet til /run-mappen, men til /etc-mappen (/etc/swhkd/runtime/swhkd_{uid}.pid), hvor den heller ikke hører hjemme.
  • CVE-2022-27814 - Ved at manipulere "-c" kommandolinjeindstillingen, der bruges til at specificere en konfigurationsfil, er det muligt at bestemme eksistensen af ​​enhver fil på systemet. For at kontrollere /root/.somefile kan du for eksempel køre "pkexec /usr/bin/swhkd -d -c /root/.somefile", og hvis filen mangler, findes fejlen "/root/.somefile ikke" ” vil blive vist. Ligesom i tilfældet med den første sårbarhed, er løsning af problemet gådefuldt - at løse problemet bunder i, at det eksterne værktøj "cat" ('Command::new(“/bin/cat”)).arg(path) er nu startet for at læse konfigurationsfilen. output()').
  • CVE-2022-27819 – Problemet er også relateret til brugen af ​​"-c", som får hele konfigurationsfilen til at blive indlæst og parset uden at kontrollere størrelsen og typen af ​​filen. For at forårsage et lammelsesangreb ved at løbe tør for ledig hukommelse og skabe falsk I/O, kan du angive en blokenhed ved opstart ("pkexec /usr/bin/swhkd -d -c /dev/sda") eller en karakterenhed, der producerer en uendelig strøm af data. Problemet blev løst ved at nulstille rettighederne før åbning af filen, men rettelsen var ikke fuldført, da kun bruger-id'et (UID) nulstilles, men gruppe-id'et (GID) forbliver det samme.
  • CVE-2022-27818 – En Unix-socket oprettes ved hjælp af filen /tmp/swhkd.sock oprettet i en 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 tastetryk begivenheder).
  • CVE-2022-27817 - Inputhændelser accepteres fra alle enheder og i alle sessioner, dvs. en bruger fra en anden Wayland-session eller fra konsollen kan opsnappe hændelser, når genvejstaster trykkes af andre brugere.
  • CVE-2022-27816 swhks-processen, ligesom swhkd, bruger PID-filen /tmp/swhks.pid i den skrivbare /tmp-mappe. Problemet ligner den første sårbarhed, men er ikke så farligt, fordi swhks kører under en uprivilegeret bruger.

Kilde: opennet.ru

Tilføj en kommentar