ثغرات أمنية في swhkd، مدير الاختصارات لـ Wayland

تم التعرف على سلسلة من الثغرات الأمنية في swhkd (Simple Wayland HotKey Daemon) بسبب العمل غير الصحيح مع الملفات المؤقتة ومعلمات سطر الأوامر ومآخذ Unix. البرنامج مكتوب بلغة Rust ويتعامل مع الضغط على مفتاح التشغيل السريع في البيئات المستندة إلى بروتوكول Wayland (نظير متوافق مع ملف التكوين لعملية sxhkd المستخدمة في البيئات المستندة إلى X11).

تتضمن الحزمة عملية swhks غير مميزة تنفذ إجراءات مفتاح التشغيل السريع، وعملية swhkd الخلفية التي تعمل كجذر وتتفاعل مع أجهزة الإدخال على مستوى واجهة برمجة التطبيقات uinput. يتم استخدام مقبس Unix لتنظيم التفاعل بين swhks وswhkd. باستخدام قواعد Polkit، يمكن لأي مستخدم محلي تشغيل عملية /usr/bin/swhkd كجذر وتمرير معلمات عشوائية إليها.

نقاط الضعف التي تم تحديدها:

  • CVE-2022-27815 – حفظ معرف PID للعملية في ملف باسم يمكن التنبؤ به وفي دليل قابل للكتابة بواسطة مستخدمين آخرين (/tmp/swhkd.pid). يمكن لأي مستخدم إنشاء ملف /tmp/swhkd.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(path) تم إطلاقه الآن لقراءة ملف التكوين.output()').
  • CVE-2022-27819 - تتعلق المشكلة أيضًا باستخدام الخيار "-c"، الذي يتسبب في تحميل ملف التكوين بالكامل وتحليله دون التحقق من حجم الملف ونوعه. على سبيل المثال، للتسبب في رفض الخدمة عن طريق نفاد الذاكرة الحرة وإنشاء إدخال/إخراج زائف، يمكنك تحديد جهاز حظر عند بدء التشغيل ("pkexec /usr/bin/swhkd -d -c /dev/sda") أو جهاز حرفي ينتج دفقًا لا نهائيًا من البيانات. تم حل المشكلة عن طريق إعادة تعيين الامتيازات قبل فتح الملف، ولكن الإصلاح لم يكتمل، حيث تتم إعادة تعيين معرف المستخدم (UID) فقط، ولكن يظل معرف المجموعة (GID) كما هو.
  • CVE-2022-27818 - يتم إنشاء مقبس Unix باستخدام الملف /tmp/swhkd.sock الذي تم إنشاؤه في دليل قابل للكتابة، مما يؤدي إلى مشكلات مشابهة مثل الثغرة الأمنية الأولى (يمكن لأي مستخدم إنشاء /tmp/swhkd.sock وإنشاءه أو اعتراضه أحداث الضغط على المفاتيح).
  • CVE-2022-27817 - يتم قبول أحداث الإدخال من جميع الأجهزة وفي جميع الجلسات، أي. يمكن لمستخدم من جلسة Wayland أخرى أو من وحدة التحكم اعتراض الأحداث عندما يضغط مستخدمون آخرون على مفاتيح التشغيل السريع.
  • CVE-2022-27816 تستخدم عملية swhks، مثل swhkd، ملف PID /tmp/swhks.pid في الدليل القابل للكتابة /tmp. تشبه المشكلة الثغرة الأمنية الأولى، ولكنها ليست خطيرة نظرًا لأن swhks يعمل تحت مستخدم لا يتمتع بأي امتيازات.

المصدر: opennet.ru

إضافة تعليق