مجموعهای از آسیبپذیریها در swhkd (Simple Wayland HotKey Daemon) شناسایی شدهاند که ناشی از کار نادرست با فایلهای موقت، پارامترهای خط فرمان و سوکتهای یونیکس است. این برنامه به زبان Rust نوشته شده است و فشردن کلید میانبر در محیطهای مبتنی بر پروتکل Wayland (یک آنالوگ سازگار با فایل پیکربندی فرآیند sxhkd که در محیطهای مبتنی بر X11 استفاده میشود) را کنترل میکند.
این بسته شامل یک فرآیند swhks غیرمجاز است که اقدامات کلید میانبر را انجام میدهد و یک فرآیند swhkd پسزمینه که بهصورت روت اجرا میشود و با دستگاههای ورودی در سطح API uinput تعامل دارد. یک سوکت یونیکس برای سازماندهی تعامل بین swhks و swhkd استفاده می شود. با استفاده از قوانین Polkit، هر کاربر محلی می تواند فرآیند /usr/bin/swhkd را به عنوان ریشه اجرا کند و پارامترهای دلخواه را به آن ارسال کند.
آسیب پذیری های شناسایی شده:
- 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 وجود ندارد". " نمایش داده خواهد شد. همانطور که در مورد آسیبپذیری اول، رفع مشکل گیجکننده است - رفع مشکل به این واقعیت خلاصه میشود که ابزار خارجی "cat" ('Command::new("/bin/cat")).arg(مسیر) اکنون برای خواندن فایل پیکربندی راه اندازی می شود. output()').
- CVE-2022-27819 - این مشکل همچنین مربوط به استفاده از گزینه "-c" است که باعث می شود کل فایل پیکربندی بدون بررسی اندازه و نوع فایل بارگیری و تجزیه شود. به عنوان مثال، برای ایجاد انکار سرویس با اتمام حافظه آزاد و ایجاد I/O جعلی، می توانید یک دستگاه بلوک را در هنگام راه اندازی مشخص کنید ("pkexec /usr/bin/swhkd -d -c /dev/sda") یا دستگاه کاراکتری که یک جریان بی نهایت داده تولید می کند. مشکل با تنظیم مجدد امتیازات قبل از باز کردن فایل حل شد، اما رفع کامل نشد، زیرا فقط شناسه کاربری (UID) تنظیم مجدد شده است، اما شناسه گروه (GID) ثابت می ماند.
- CVE-2022-27818 - یک سوکت یونیکس با استفاده از فایل /tmp/swhkd.sock ایجاد شده در یک پوشه قابل نوشتن ایجاد می شود، که منجر به مشکلاتی مشابه با اولین آسیب پذیری می شود (هر کاربری می تواند /tmp/swhkd.sock را ایجاد کند و تولید یا رهگیری کند. رویدادهای فشار کلید).
- CVE-2022-27817 - رویدادهای ورودی از همه دستگاهها و در تمام جلسات پذیرفته میشوند، یعنی. یک کاربر از یک جلسه Wayland دیگر یا از کنسول می تواند رویدادها را هنگامی که کلیدهای میانبر توسط کاربران دیگر فشار داده می شود، رهگیری کند.
- CVE-2022-27816 فرآیند swhks، مانند swhkd، از فایل PID /tmp/swhks.pid در دایرکتوری قابل نوشتن /tmp استفاده می کند. مشکل مشابه آسیبپذیری اول است، اما به این اندازه خطرناک نیست زیرا swhks تحت یک کاربر غیرمجاز اجرا میشود.
منبع: opennet.ru