Vundeblecoj en swhkd, ŝparvojmanaĝero por Wayland

Serio da vundeblecoj estis identigitaj en swhkd (Simple Wayland HotKey Daemon) kaŭzitaj de malĝusta laboro kun provizoraj dosieroj, komandliniaj parametroj kaj Uniksaj ingoj. La programo estas skribita en Rust kaj pritraktas klavoklavon premante en medioj bazitaj sur la Wayland-protokolo (agordo-dosier-kongrua analogo de la sxhkd-procezo uzita en X11-bazitaj medioj).

La pako inkluzivas senprivilegian swhks-procezon, kiu plenumas klavoklavo-agojn, kaj fonan swhkd-procezon, kiu funkcias kiel radiko kaj interagas kun enigaparatoj ĉe la uinput API-nivelo. Uniksa ingo estas uzata por organizi la interagadon inter swhks kaj swhkd. Uzante Polkit-regulojn, ĉiu loka uzanto povas ruli la procezon /usr/bin/swhkd kiel radikon kaj transdoni arbitrajn parametrojn al ĝi.

Identigitaj vundeblecoj:

  • CVE-2022-27815 - Konservado de proceza PID al dosiero kun antaŭvidebla nomo kaj en dosierujo, kiu estas skribebla de aliaj uzantoj (/tmp/swhkd.pid). Ĉiu uzanto povas krei dosieron /tmp/swhkd.pid kaj meti la pid de ekzistanta procezo en ĝi, kio igos swhkd nekapabla komenci. Se ne ekzistas protekto kontraŭ kreado de simbolaj ligiloj en /tmp, la vundebleco povas esti uzata por krei aŭ anstataŭigi dosierojn en iu ajn sistemdosierujo (la PID estas skribita al la dosiero) aŭ determini la enhavon de iu ajn dosiero en la sistemo (swhkd presas la tuta enhavo de la PID-dosiero al stdout). Estas rimarkinde, ke en la eldonita riparo la PID-dosiero estis movita ne al la dosierujo /run, sed al la dosierujo /etc (/etc/swhkd/runtime/swhkd_{uid}.pid), kie ĝi ankaŭ ne apartenas.
  • CVE-2022-27814 - Manipulante la opcion de komandlinio "-c" uzata por specifi agordan dosieron, eblas determini la ekziston de iu ajn dosiero en la sistemo. Ekzemple, por kontroli /root/.somefile vi povas ruli "pkexec /usr/bin/swhkd -d -c /root/.somefile" kaj se la dosiero mankas, la eraro "/root/.somefile ne ekzistas ” estos montrata. Kiel en la kazo de la unua vundebleco, ripari la problemon estas konfuze - ripari la problemon resumas al tio, ke la ekstera ilo “cat” ('Command::new(“/bin/cat”)).arg(pado) nun estas lanĉita por legi la agordan dosieron output()').
  • CVE-2022-27819 - La problemo ankaŭ rilatas al la uzo de la opcio "-c", kiu igas la tutan agordan dosieron ŝarĝi kaj analizi sen kontroli la grandecon kaj tipon de la dosiero. Ekzemple, por kaŭzi neon de servo per elĉerpiĝo de libera memoro kaj kreado de falsa I/O, vi povas specifi blokan aparaton ĉe ekfunkciigo ("pkexec /usr/bin/swhkd -d -c /dev/sda") aŭ karaktera aparato kiu produktas senfinan fluon de datumoj. La problemo estis solvita per restarigo de la privilegioj antaŭ malfermi la dosieron, sed la riparo ne estis kompleta, ĉar nur la uzantidentigilo (UID) estas rekomencigita, sed la grupidentigilo (GID) restas la sama.
  • CVE-2022-27818 - Unikso-soko estas kreita uzante la /tmp/swhkd.sock dosieron kreitan en skribebla dosierujo, kiu kondukas al similaj problemoj kiel la unua vundebleco (ĉiu ajn uzanto povas krei /tmp/swhkd.sock kaj generi aŭ kapti klavopremokazaĵoj).
  • CVE-2022-27817 - Enigokazaĵoj estas akceptitaj de ĉiuj aparatoj kaj en ĉiuj sesioj, t.e. uzanto de alia Wayland-sesio aŭ de la konzolo povas kapti eventojn kiam klavoj estas premataj de aliaj uzantoj.
  • CVE-2022-27816 La swhks-procezo, kiel swhkd, uzas la PID-dosieron /tmp/swhks.pid en la skribebla dosierujo /tmp. La problemo similas al la unua vundebleco, sed ne estas tiel danĝera ĉar swhks funkcias sub senprivilegia uzanto.

fonto: opennet.ru

Aldoni komenton