Muutama päivä sitten uutiset julkaistiin useita haavoittuvuuksia löydettiin swhkd:ssä (Simple Wayland HotKey Daemon), joka johtuu väliaikaisten tiedostojen, komentorivivalintojen ja unix-sockettien virheellisestä käsittelystä.
Ohjelma on kirjoitettu ruosteella ja käsittelee pikanäppäimiä ympäristöissä, jotka perustuvat Wayland-protokollaan (konfiguraatiotiedostojen kanssa yhteensopiva analogi sxhkd-prosessille, jota käytetään X11-pohjaisissa ympäristöissä). Paketti sisältää etuoikeutettoman swhks-prosessin, joka suorittaa toimintoja pikanäppäimille, ja swhkd-taustaprosessin, joka toimii pääkäyttäjänä ja on vuorovaikutuksessa syöttölaitteiden kanssa uinput API -tasolla. Swhk:n ja swhkd:n välisen vuorovaikutuksen järjestämiseen käytetään Unix-liitäntää.
Polkitin säännöt sallivat jokaisen paikallisen käyttäjän suorittaa /usr/bin/swhkd-prosessin pääkäyttäjänä ja välittää sille mielivaltaisia parametreja.
RPM-paketin integrointi lähetetty openSUSE:lle Tumbleweed sisälsi epätavallisia Polkit-sääntöjä määritelmätiedosto, joka vaati SUSE-tietoturvatiimin tarkastuksen.
Tarkistuksen tuloksena havaittiin useita tietoturvaongelmia. Yksittäiset ongelmat on kuvattu alla olevassa yksityiskohtaisessa raportissa.
Niistä havaitut haavoittuvuudet, mainitaan seuraavat:
CVE-2022-27815
Tämä haavoittuvuus mahdollistaa prosessin PID:n tallentamisen tiedostoon, jolla on ennustettava nimi ja kirjoitettavassa hakemistossa muille käyttäjille (/tmp/swhkd.pid), jolloin kuka tahansa käyttäjä voi luoda /tmp/swhkd.pid tiedoston ja laittaa siihen olemassa olevan prosessin pid:n, mikä tekee swhkd:n käynnistämisen mahdottomaksi.
Jos ei ole suojattua symbolisten linkkien luomista /tmp:ssä, haavoittuvuutta voidaan käyttää tiedostojen luomiseen tai korvaamiseen missä tahansa järjestelmän hakemistossa (PID kirjoitetaan tiedostoon) tai määrittää minkä tahansa järjestelmässä olevan tiedoston sisällön (swhkd tulostaa PID-tiedoston koko sisällön stdout-tiedostoon). On huomattava, että julkaistussa korjauksessa PID-tiedostoa ei siirretty /run-hakemistoon, vaan /etc-hakemistoon (/etc/swhkd/runtime/swhkd_{uid}.pid), johon se ei myöskään kuulu .
CVE-2022-27814
Tämä haavoittuvuus voit muokata "-c"-komentorivivaihtoehtoa määrittääksesi kokoonpanotiedoston voi määrittää minkä tahansa tiedoston olemassaolon järjestelmässä.
Kuten ensimmäisen haavoittuvuuden tapauksessa, ongelman korjaaminen on hämmentävää: ongelman korjaaminen tiivistyy siihen tosiasiaan, että ulkoinen "kissa"-apuohjelma ('Command::new("/bin/cat").arg(polku) on nyt käynnistetty lukemaan asetustiedosto.output()').
CVE-2022-27819
Tämä ongelma se liittyy myös "-c"-vaihtoehdon käyttöön, joka lataa ja jäsentää koko asetustiedoston tarkistamatta tiedoston kokoa ja tyyppiä.
Jos haluat esimerkiksi aiheuttaa palvelun eston vapaan muistin loppumisen ja haja-I/O:n luomisen vuoksi, voit määrittää estolaitteen käynnistyksen yhteydessä ("pkexec /usr/bin/swhkd -d -c /dev/sda ») tai merkkilaite, joka lähettää äärettömän datavirran.
Ongelma ratkaistiin nollaamalla oikeudet ennen tiedoston avaamista, mutta ratkaisu ei ollut valmis, koska vain käyttäjätunnus (UID) nollataan, mutta ryhmätunnus (GID) pysyy samana.
CVE-2022-27818
Tämä haavoittuvuus Voit käyttää /tmp/swhkd.sock-tiedostoa Unix-socketin luomiseen, joka luodaan julkiseen kirjoitettavaan hakemistoon ja aiheuttaa samanlaisia ongelmia kuin ensimmäinen haavoittuvuus (kuka tahansa käyttäjä voi luoda /tmp/swhkd.sockin ja luoda tai siepata näppäinpainalluksia).
CVE-2022-27817
Tässä haavoittuvuudessa syöttötapahtumat vastaanotetaan kaikilta laitteilta ja kaikissa istunnoissa, eli toisessa Wayland- tai konsoliistunnossa oleva käyttäjä voi siepata tapahtumia, kun muut käyttäjät painavat pikanäppäimiä.
CVE-2022-27816
Swhks-prosessi, kuten swhkd, käyttää julkisesti kirjoitettavassa /tmp-hakemistossa olevaa PID-tiedostoa /tmp/swhks.pid. Ongelma on samanlainen kuin ensimmäinen haavoittuvuus, mutta ei niin vaarallinen, koska swhks toimii ei-etuoikeutetun käyttäjän alaisuudessa.
Lopuksi, jos haluat tietää enemmän siitä, voit tutustua yksityiskohdat seuraavassa linkissä.