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