Sårbarheter i swhkd, en snarveisjef for Wayland

En rekke sårbarheter er identifisert i swhkd (Simple Wayland HotKey Daemon) forårsaket av feil arbeid med midlertidige filer, kommandolinjeparametere og Unix-sockets. Programmet er skrevet i Rust og håndterer hurtigtasttrykking i miljøer basert på Wayland-protokollen (en konfigurasjonsfil-kompatibel analog av sxhkd-prosessen som brukes i X11-baserte miljøer).

Pakken inkluderer en uprivilegert swhks-prosess som utfører hurtigtasthandlinger, og en bakgrunns-swhkd-prosess som kjører som root og samhandler med inngangsenheter på uinput API-nivå. En Unix-socket brukes til å organisere samspillet mellom swhks og swhkd. Ved å bruke Polkit-regler kan enhver lokal bruker kjøre /usr/bin/swhkd-prosessen som root og sende vilkårlige parametere til den.

Identifiserte sårbarheter:

  • CVE-2022-27815 – Lagre en prosess-PID til en fil med et forutsigbart navn og i en katalog som kan skrives av andre brukere (/tmp/swhkd.pid). Enhver bruker kan opprette en fil /tmp/swhkd.pid og legge pid-en til en eksisterende prosess i den, noe som gjør at swhkd ikke kan starte. Hvis det ikke er beskyttelse mot å lage symbolske lenker i /tmp, kan sårbarheten brukes til å opprette eller overskrive filer i hvilken som helst systemkatalog (PID-en skrives til filen) eller bestemme innholdet i en fil på systemet (swhkd skriver ut hele innholdet i PID-filen til stdout). Det er bemerkelsesverdig at i den utgitte rettelsen ble PID-filen ikke flyttet til /run-katalogen, men til /etc-katalogen (/etc/swhkd/runtime/swhkd_{uid}.pid), hvor den heller ikke hører hjemme.
  • CVE-2022-27814 - Ved å manipulere "-c" kommandolinjealternativet som brukes til å spesifisere en konfigurasjonsfil, er det mulig å bestemme eksistensen av en hvilken som helst fil på systemet. For å sjekke /root/.somefile kan du for eksempel kjøre "pkexec /usr/bin/swhkd -d -c /root/.somefile", og hvis filen mangler, eksisterer ikke feilen "/root/.somefile" " vil vises. Som i tilfellet med den første sårbarheten, er det forvirrende å fikse problemet - å fikse problemet koker ned til det faktum at det eksterne verktøyet “cat” ('Command::new(“/bin/cat”)).arg(path) er nå lansert for å lese konfigurasjonsfilen. output()').
  • CVE-2022-27819 – Problemet er også relatert til bruken av "-c"-alternativet, som fører til at hele konfigurasjonsfilen lastes og analyseres uten å sjekke størrelsen og typen på filen. For å forårsake tjenestenekt ved å gå tom for ledig minne og lage falsk I/O, kan du spesifisere en blokkeringsenhet ved oppstart ("pkexec /usr/bin/swhkd -d -c /dev/sda") eller en karakterenhet som produserer en uendelig strøm av data. Problemet ble løst ved å tilbakestille privilegiene før åpning av filen, men reparasjonen var ikke fullført, siden bare bruker-ID (UID) er tilbakestilt, men gruppe-ID (GID) forblir den samme.
  • CVE-2022-27818 – En Unix-socket opprettes ved å bruke filen /tmp/swhkd.sock opprettet i en skrivbar katalog, noe som fører til lignende problemer som den første sårbarheten (enhver bruker kan opprette /tmp/swhkd.sock og generere eller avskjære tastetrykkhendelser).
  • CVE-2022-27817 - Inndatahendelser aksepteres fra alle enheter og i alle økter, dvs. en bruker fra en annen Wayland-økt eller fra konsollen kan fange opp hendelser når hurtigtaster trykkes av andre brukere.
  • CVE-2022-27816 swhks-prosessen, som swhkd, bruker PID-filen /tmp/swhks.pid i den skrivbare /tmp-katalogen. Problemet ligner på den første sårbarheten, men er ikke like farlig fordi swhks kjører under en uprivilegert bruker.

Kilde: opennet.ru

Legg til en kommentar