Dobësitë në swhkd, një menaxher i shkurtoreve për Wayland

Një seri dobësish janë identifikuar në swhkd (Simple Wayland HotKey Daemon) të shkaktuara nga puna e gabuar me skedarët e përkohshëm, parametrat e linjës së komandës dhe prizat Unix. Programi është i shkruar në Rust dhe trajton shtypjen e tastit të nxehtë në mjedise të bazuara në protokollin Wayland (një analog i pajtueshëm me skedarin konfigurues i procesit sxhkd i përdorur në mjediset e bazuara në X11).

Paketa përfshin një proces swhks të paprivilegjuar që kryen veprime me çelësin kryesor dhe një proces swhkd në sfond që funksionon si rrënjë dhe ndërvepron me pajisjet hyrëse në nivelin e API-së uinput. Një fole Unix përdoret për të organizuar ndërveprimin midis swhks dhe swhkd. Duke përdorur rregullat e Polkit, çdo përdorues lokal mund të ekzekutojë procesin /usr/bin/swhkd si rrënjë dhe t'i kalojë atij parametra arbitrare.

Dobësitë e identifikuara:

  • CVE-2022-27815 - Ruajtja e një PID të procesit në një skedar me një emër të parashikueshëm dhe në një drejtori që mund të shkruhet nga përdoruesit e tjerë (/tmp/swhkd.pid). Çdo përdorues mund të krijojë një skedar /tmp/swhkd.pid dhe të vendosë pid-in e një procesi ekzistues në të, gjë që do ta bëjë swhkd të paaftë të fillojë. Nëse nuk ka mbrojtje kundër krijimit të lidhjeve simbolike në /tmp, dobësia mund të përdoret për të krijuar ose mbishkruar skedarë në çdo drejtori të sistemit (PID është shkruar në skedar) ose për të përcaktuar përmbajtjen e çdo skedari në sistem (swhkd printon e gjithë përmbajtja e skedarit PID në stdout). Vlen të përmendet se në rregullimin e lëshuar skedari PID u zhvendos jo në drejtorinë /run, por në drejtorinë /etc (/etc/swhkd/runtime/swhkd_{uid}.pid), ku gjithashtu nuk i përket.
  • CVE-2022-27814 – Duke manipuluar opsionin e linjës së komandës “-c” që përdoret për të specifikuar një skedar konfigurimi, është e mundur të përcaktohet ekzistenca e çdo skedari në sistem. Për shembull, për të kontrolluar /root/.somefile mund të ekzekutoni "pkexec /usr/bin/swhkd -d -c /root/.somefile" dhe nëse skedari mungon, gabimi "/root/.somefile nuk ekziston ” do të shfaqet. Ashtu si në rastin e cenueshmërisë së parë, rregullimi i problemit është i çuditshëm - ndreqja e problemit zbret në faktin se mjeti i jashtëm "cat" ('Command::new("/bin/cat")).arg(rruga) tani është nisur për të lexuar skedarin e konfigurimit. output()').
  • CVE-2022-27819 – Problemi lidhet gjithashtu me përdorimin e opsionit “-c”, i cili bën që i gjithë skedari i konfigurimit të ngarkohet dhe analizohet pa kontrolluar madhësinë dhe llojin e skedarit. Për shembull, për të shkaktuar një refuzim të shërbimit duke mbaruar memorien e lirë dhe duke krijuar hyrje/dalje të rreme, mund të specifikoni një pajisje bllokimi në fillim ("pkexec /usr/bin/swhkd -d -c /dev/sda") ose një pajisje me karakter që prodhon një rrjedhë të pafundme të dhënash. Problemi u zgjidh duke rivendosur privilegjet përpara hapjes së skedarit, por rregullimi nuk ishte i plotë, pasi vetëm ID-ja e përdoruesit (UID) rivendoset, por ID-ja e grupit (GID) mbetet e njëjtë.
  • CVE-2022-27818 – Një fole Unix krijohet duke përdorur skedarin /tmp/swhkd.sock të krijuar në një direktori të shkruajtshme, e cila çon në probleme të ngjashme si cenueshmëria e parë (çdo përdorues mund të krijojë /tmp/swhkd.sock dhe të gjenerojë ose ndërpresë ngjarjet e shtypjes së tastierës).
  • CVE-2022-27817 - Ngjarjet hyrëse pranohen nga të gjitha pajisjet dhe në të gjitha seancat, d.m.th. një përdorues nga një sesion tjetër Wayland ose nga tastiera mund të përgjojë ngjarjet kur shtypen tastet kryesore nga përdoruesit e tjerë.
  • CVE-2022-27816 Procesi swhks, si swhkd, përdor skedarin PID /tmp/swhks.pid në direktorinë e shkrueshme /tmp. Problemi është i ngjashëm me cenueshmërinë e parë, por nuk është aq i rrezikshëm sepse swhks po funksionon nën një përdorues të paprivilegjuar.

Burimi: opennet.ru

Shto një koment