For et par dage siden blev nyheden frigivet en række sårbarheder blev fundet i swhkd (Simple Wayland HotKey Daemon) forårsaget af forkert håndtering af midlertidige filer, kommandolinjeindstillinger 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 swhkd-baggrundsproces, der kører som root og interagerer med input-enheder på uinput API-niveau. For at organisere samspillet mellem swhks og swhkd, bruges en Unix socket.
Polkits regler tillader enhver lokal bruger at køre /usr/bin/swhkd processen som root og videregive den vilkårlige parametre.
RPM-pakkeintegration udgivet til openSUSE Tumbleweed indeholdt usædvanlige Polkit-regler i definitionsfil, der krævede en gennemgang af SUSE-sikkerhedsteamet.
Som et resultat af gennemgangen blev der identificeret flere sikkerhedsproblemer. De enkelte problemer er beskrevet i den følgende detaljerede rapport.
Af sårbarheder, der blev identificeret, er følgende nævnt:
CVE-2022-27815
Denne sårbarhed gør det muligt at gemme en proces-PID i en fil med et forudsigeligt navn og i en mappe, som andre brugere kan skrive til (/tmp/swhkd.pid), så enhver bruger kan oprette en fil /tmp/swhkd.pid og indsætte pid'en for en eksisterende proces i den, hvilket gør det umuligt at starte swhkd.
I mangel af beskyttelse mod at skabe symbolske links i /tmp, sårbarheden kan bruges til at oprette eller overskrive filer i en hvilken som helst mappe på systemet (PID'et skrives til filen) eller bestemme indholdet af enhver fil på systemet (swhkd udsender hele indholdet af PID-filen til stdout). Det skal bemærkes, at i den frigivne rettelse blev PID-filen ikke flyttet til /run-mappen, men til /etc-mappen (/etc/swhkd/runtime/swhkd_{uid}.pid), hvor den heller ikke hører hjemme.
CVE-2022-27814
Denne sårbarhed giver dig mulighed for at manipulere "-c" kommandolinjeindstillingen for at angive en konfigurationsfil kan bestemme eksistensen af enhver fil på systemet.
Ligesom i tilfældet med den første sårbarhed er det forvirrende at løse problemet: at løse problemet bunder i, at det eksterne værktøj "cat" ('Command::new("/bin/cat").arg(path) nu startes for at læse konfigurationsfilen.output()').
CVE-2022-27819
Dette problem det er også relateret til brugen af "-c"-indstillingen, som indlæser og analyserer hele konfigurationsfilen uden at kontrollere størrelsen og typen af filen.
For at forårsage et lammelsesangreb på grund af at løbe tør for ledig hukommelse og skabe parasitisk I/O, kan du angive en blokenhed ved opstart ("pkexec /usr/bin/swhkd -d -c /dev/sda") eller en karakterenhed, der udsender en uendelig strøm af data.
Problemet blev løst ved at nulstille rettighederne før åbning af filen, men løsningen var ikke komplet, da kun bruger-id'et (UID) nulstilles, men gruppe-id'et (GID) forbliver det samme.
CVE-2022-27818
Denne sårbarhed giver dig mulighed for at bruge en /tmp/swhkd.sock-fil til at oprette en Unix-socket, som er oprettet i en offentlig skrivbar mappe, hvilket forårsager lignende problemer som den første sårbarhed (enhver bruger kan oprette /tmp/swhkd. sock og generere eller fange tastetryk).
CVE-2022-27817
I denne sårbarhed, inputhændelser modtages fra alle enheder og på tværs af alle sessioner, det vil sige, at en bruger i en anden Wayland- eller konsolsession kan opsnappe begivenheder, når andre brugere trykker på genvejstaster.
CVE-2022-27816
swhks-processen, ligesom swhkd, bruger PID-filen /tmp/swhks.pid i den offentligt skrivbare /tmp-mappe. Problemet ligner den første sårbarhed, men ikke så farligt, da swhks kører under en uprivilegeret bruger.
Endelig, hvis du er interesseret i at vide mere om det, kan du konsultere detaljer i følgende link.