نقاط الضعف في مرسل الشبكة التي تسمح بالوصول إلى الجذر

حدد باحثو الأمن في مايكروسوفت ثغرتين أمنيتين (CVE-2022-29799 وCVE-2022-29800) في خدمة networkd-dispatcher، والتي تحمل الاسم الرمزي Nimbuspwn، تسمحان لمستخدم غير مصرح له بتنفيذ أوامر عشوائية بصلاحيات الجذر. تم إصلاح هذه المشكلة في الإصدار 2.2 من networkd-dispatcher. ولا تتوفر معلومات حتى الآن حول ما إذا كانت توزيعات البرامج قد نشرت تحديثات.DebianRHEL، فيدورا، SUSE، Ubuntu، آرتش Linux).

يُستخدم برنامج Networkd-dispatcher في العديد من التوزيعات. Linuxبما فيه Ubuntuيستخدم هذا البرنامج عملية الخلفية systemd-networkd لضبط معلمات الشبكة، ويؤدي وظائف مشابهة لـ NetworkManager-dispatcher، أي أنه يُشغّل البرامج النصية عند تغير حالة اتصال الشبكة، على سبيل المثال، يُستخدم لتشغيل VPN بعد إنشاء اتصال الشبكة الأساسي.

تعمل عملية الخلفية المرتبطة بمرسل الشبكة كجذر وتستقبل إشارات الأحداث عبر D-Bus. يتم إرسال المعلومات حول الأحداث المتعلقة بالتغيرات في حالة اتصالات الشبكة بواسطة خدمة systemd-networkd. تكمن المشكلة في أنه يمكن للمستخدمين غير المميزين إنشاء حدث حالة غير موجود وتشغيل البرنامج النصي الخاص بهم ليتم تنفيذه كجذر.

تم تصميم Systemd-networkd لتشغيل نصوص معالج النظام الموجودة فقط في دليل /etc/networkd-dispatcher والتي لا يمكن للمستخدم استبدالها، ولكن بسبب وجود ثغرة أمنية (CVE-2022-29799) في كود معالجة مسار الملف، كان من الممكن تجاوز الدليل الأساسي وتشغيل نصوص عشوائية. على وجه الخصوص، عند تشكيل مسار الملف إلى البرنامج النصي، تم استخدام قيم OperationalState وAdministrativeState المرسلة عبر D-Bus، والتي لم يتم فيها مسح الأحرف الخاصة. يمكن للمهاجم إنشاء حالته الخاصة باستخدام الأحرف "../" في الاسم وإعادة توجيه استدعاء networkd-dispatcher إلى دليل آخر.

تتعلق الثغرة الثانية (CVE-2022-29800) بحالة سباق - كانت هناك فجوة زمنية صغيرة بين التحقق من معلمات البرنامج النصي (ملكية الجذر) وتشغيله، وهي كافية لاستبدال الملف وتجاوز التحقق من ملكية البرنامج النصي من قبل المستخدم الجذر. بالإضافة إلى ذلك، افتقر networkd-dispatcher إلى فحص الروابط الرمزية، بما في ذلك عند تشغيل البرامج النصية عبر استدعاء subprocess.Popen، مما أدى إلى تبسيط تنظيم الهجوم بشكل كبير.

تقنية التشغيل:

  • يتم إنشاء دليل "/tmp/nimbuspwn" ورابط رمزي "/tmp/nimbuspwn/poc.d" للإشارة إلى الدليل "/sbin"، والذي يستخدم للتحقق من الملفات القابلة للتنفيذ المملوكة للجذر.
  • بالنسبة للملفات القابلة للتنفيذ من "/sbin"، يتم إنشاء ملفات بنفس الاسم في الدليل "/tmp/nimbuspwn"، على سبيل المثال، بالنسبة للملف "/sbin/vgs"، يكون الملف القابل للتنفيذ "/tmp/nimbuspwn/vgs" هو تم إنشاؤها، مملوكة لمستخدم لا يتمتع بأي امتيازات، حيث يتم وضع الكود الذي يريد المهاجم تشغيله.
  • يتم إرسال إشارة عبر D-Bus إلى عملية networkd-dispatcher مع ضبط قيمة OperationalState على "../../../tmp/nimbuspwn/poc". لإرسال إشارة في مساحة الاسم "org.freedesktop.network1"، تم استخدام إمكانية إرفاق معالجات مخصصة بـ systemd-networkd، على سبيل المثال، من خلال التلاعب بـ gpgv أو epmd، أو يمكن الاستفادة من حقيقة أن systemd-networkd لا يعمل افتراضيًا (على سبيل المثال، في Linux (نعناع).
  • بعد تلقي الإشارة، يقوم Networkd-dispatcher بإنشاء قائمة بالملفات القابلة للتنفيذ المملوكة للمستخدم الجذر والمتاحة في الدليل "/etc/networkd-dispatcher/../../../tmp/nimbuspwn/poc.d"، والذي يرتبط فعليًا بـ "/sbin".
  • في اللحظة التي يتم فيها استلام قائمة الملفات، ولكن لم يتم تنفيذ البرنامج النصي بعد، يتم إعادة توجيه الارتباط الرمزي من "/tmp/nimbuspwn/poc.d" إلى "/tmp/nimbuspwn" وسيقوم networkd-dispatcher بتنفيذ البرنامج النصي الذي وضعه المهاجم بامتيازات الجذر.

نقاط الضعف في مرسل الشبكة التي تسمح بالوصول إلى الجذر


المصدر: opennet.ru
شراء استضافة موثوقة للمواقع مع حماية DDoS وخوادم VPS VDS 🔥 اشترِ استضافة مواقع ويب موثوقة مع حماية من هجمات DDoS، وخوادم VPS وVDS | ProHoster