Wayland-ийн товчлолын менежер болох swhkd дахь эмзэг байдал

Түр зуурын файлууд, командын мөрийн параметрүүд болон Unix залгууруудтай буруу ажилласнаас үүдэн swhkd (Simple Wayland HotKey Daemon)-д хэд хэдэн эмзэг байдал илэрсэн. Програм нь Rust хэл дээр бичигдсэн бөгөөд Wayland протокол (X11-д суурилсан орчинд хэрэглэгддэг sxhkd процессын тохиргооны файлд нийцэх аналог) дээр суурилсан орчинд халуун товчлуур дарахыг зохицуулдаг.

Багц нь hotkey үйлдлийг гүйцэтгэдэг онцгой эрхгүй swhks процесс болон root хэлбэрээр ажилладаг, uinput API түвшинд оролтын төхөөрөмжүүдтэй харьцдаг дэвсгэрийн swhkd процессыг агуулдаг. Unix залгуур нь swhks болон swhkd хоорондын харилцан үйлчлэлийг зохион байгуулахад ашиглагддаг. Polkit дүрмийг ашиглан ямар ч дотоод хэрэглэгч /usr/bin/swhkd процессыг root хэлбэрээр ажиллуулж, түүнд дурын параметрүүдийг дамжуулж болно.

Тодорхойлогдсон сул талууд:

  • CVE-2022-27815 – Процессын PID-г урьдчилан таамаглах боломжтой нэр бүхий файл болон бусад хэрэглэгчдийн бичиж болох директорт хадгалах (/tmp/swhkd.pid). Ямар ч хэрэглэгч /tmp/swhkd.pid файл үүсгэж, дотор нь байгаа процессын pid-г оруулах боломжтой бөгөөд энэ нь swhkd-г эхлүүлэх боломжгүй болгоно. Хэрэв /tmp дотор симбол холбоос үүсгэхээс хамгаалах хамгаалалт байхгүй бол уг эмзэг байдлыг системийн дурын лавлах доторх файл үүсгэх, дарж бичих (PID нь файлд бичигдсэн) эсвэл систем дээрх дурын файлын агуулгыг тодорхойлоход ашиглаж болно (swhkd нь PID файлын бүх агуулгыг stdout руу). Гаргасан засварт PID файлыг /run директорт биш, харин харьяалагдахгүй /etc сан (/etc/swhkd/runtime/swhkd_{uid}.pid) руу шилжүүлсэн нь анхаарал татаж байна.
  • CVE-2022-27814 – Тохируулгын файлыг тодорхойлоход хэрэглэгддэг “-c” командын мөрийн сонголтыг хийснээр системд ямар ч файл байгаа эсэхийг тодорхойлох боломжтой. Жишээлбэл, /root/.somefile-г шалгахын тулд та "pkexec /usr/bin/swhkd -d -c /root/.somefile"-г ажиллуулж болох бөгөөд хэрэв файл байхгүй бол "/root/.somefile байхгүй" гэсэн алдаа гарч ирнэ. ” гарч ирнэ. Эхний эмзэг байдлын нэгэн адил асуудлыг засах нь ойлгомжгүй юм - асуудлыг засах нь гадаад хэрэгсэл "муур" ('Command::new("/bin/cat"))).arg(зам) одоо тохиргооны файлыг уншихаар эхлүүлсэн. output()').
  • CVE-2022-27819 – Асуудал нь мөн “-c” сонголтыг ашиглахтай холбоотой бөгөөд энэ нь файлын хэмжээ, төрлийг шалгахгүйгээр тохиргооны файлыг бүхэлд нь ачаалж, задлан шинжлэхэд хүргэдэг. Жишээлбэл, сул санах ой дуусч, хуурамч I/O үүсгэснээр үйлчилгээ үзүүлэхээс татгалзахын тулд та эхлүүлэх үед блок төхөөрөмжийг зааж өгч болно ("pkexec /usr/bin/swhkd -d -c /dev/sda") эсвэл хязгааргүй мэдээллийн урсгал үүсгэдэг тэмдэгт төхөөрөмж . Файлыг нээхээс өмнө эрхийг дахин тохируулах замаар асуудлыг шийдсэн боловч зөвхөн хэрэглэгчийн ID (UID) шинэчлэгдсэн боловч бүлгийн ID (GID) хэвээр байгаа тул засвар дуусаагүй байна.
  • CVE-2022-27818 – Unix залгуур нь бичих боломжтой лавлахад үүсгэсэн /tmp/swhkd.sock файлыг ашиглан үүсгэгддэг бөгөөд энэ нь эхний эмзэг байдалтай ижил төстэй асуудлуудад хүргэдэг (ямар ч хэрэглэгч /tmp/swhkd.sock үүсгэж, үүсгэх эсвэл таслан зогсоох боломжтой) товчлуур дарах үйл явдлууд).
  • CVE-2022-27817 - Оролтын үйл явдлуудыг бүх төхөөрөмжөөс болон бүх сессээс хүлээн авдаг. өөр Wayland сессийн хэрэглэгч эсвэл консолоос бусад хэрэглэгчид халуун товчлуурыг дарах үед үйл явдлыг таслан зогсоох боломжтой.
  • CVE-2022-27816 swhk процесс нь swhkd шиг бичих боломжтой /tmp директорт /tmp/swhks.pid PID файлыг ашигладаг. Асуудал нь эхний эмзэг байдалтай төстэй боловч swhks нь эрхгүй хэрэглэгчийн дор ажиллаж байгаа тул тийм ч аюултай биш юм.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх