ثغرات الجذر المحلية في مجموعة أدوات إدارة حزم Snap

حددت Qualys ثغرتين أمنيتين (CVE-2021-44731، CVE-2021-44730) في الأداة المساعدة snap-confine، المزودة بعلامة جذر SUID والتي يتم استدعاؤها بواسطة عملية snapd لإنشاء بيئة قابلة للتنفيذ للتطبيقات المقدمة في حزم قائمة بذاتها في شكل المفاجئة. تسمح نقاط الضعف لمستخدم محلي لا يتمتع بامتيازات بتنفيذ تعليمات برمجية بامتيازات الجذر على النظام. تم حل المشكلات في تحديث حزمة snapd اليوم لأنظمة Ubuntu 21.10 و20.04 و18.04.

تسمح الثغرة الأمنية الأولى (CVE-2021-44730) بالهجوم من خلال معالجة الارتباط الثابت، ولكنها تتطلب تعطيل حماية الارتباط الثابت للنظام (ضبط sysctl fs.protected_hardlinks على 0). سبب المشكلة هو التحقق غير الصحيح من موقع الملفات القابلة للتنفيذ الخاصة بالبرامج المساعدة snap-update-ns وsnap-discard-ns التي تعمل كجذر. تم حساب المسار إلى هذه الملفات في الدالة sc_open_snapd_tool() بناءً على المسار الخاص بها من /proc/self/exe، والذي يسمح لك بإنشاء رابط ثابت لحصره في الدليل الخاص بك ووضع إصداراتك الخاصة من الأداة الإضافية. التحديث والأدوات المساعدة الإضافية في هذا الدليل تجاهل ns. بعد التشغيل عبر رابط ثابت، سيقوم snap-confine بحقوق الجذر بتشغيل ملفات snap-update-ns وsnap-discard-ns من الدليل الحالي، ويستبدلها المهاجم.

سبب الثغرة الأمنية الثانية هو حالة سباق ويمكن استغلالها في تكوين Ubuntu Desktop الافتراضي. لكي تعمل الثغرة بنجاح في Ubuntu Server، يجب عليك تحديد إحدى الحزم من قسم "Featured Server Snaps" عند التثبيت. تكون حالة السباق واضحة في الدالة setup_private_mount() التي يتم استدعاؤها أثناء إعداد مساحة اسم نقطة التثبيت للحزمة الإضافية. تقوم هذه الوظيفة بإنشاء دليل مؤقت "/tmp/snap.$SNAP_NAME/tmp" أو تستخدم دليلًا موجودًا لربط الدلائل الخاصة بحزمة مبكرة به.

نظرًا لأن اسم الدليل المؤقت يمكن التنبؤ به، يمكن للمهاجم استبدال محتوياته برابط رمزي بعد التحقق من المالك، ولكن قبل استدعاء استدعاء نظام التثبيت. على سبيل المثال، يمكنك إنشاء رابط رمزي "/tmp/snap.lxd/tmp" في الدليل /tmp/snap.lxd يشير إلى دليل عشوائي، وسيتبع استدعاء mount() الرابط الرمزي ويقوم بتحميل الدليل في مساحة الاسم المفاجئة. بطريقة مماثلة، يمكنك تحميل محتوياتك في /var/lib، ومن خلال استبدال /var/lib/snapd/mount/snap.snap-store.user-fstab، يمكنك تنظيم تثبيت دليل /etc الخاص بك في مساحة الاسم الحزمة المفاجئة لتنظيم تحميل مكتبتك من خلال حقوق الجذر عن طريق استبدال /etc/ld.so.preload.

تجدر الإشارة إلى أن إنشاء استغلال تبين أنه مهمة غير تافهة، نظرًا لأن الأداة المساعدة snap-confine مكتوبة بلغة Go باستخدام تقنيات برمجة آمنة، ولها حماية تعتمد على ملفات تعريف AppArmor، وتقوم بتصفية مكالمات النظام بناءً على آلية seccomp، وتستخدم مساحة الاسم جبل للعزل. ومع ذلك، تمكن الباحثون من إعداد استغلال فعال للحصول على حقوق الجذر على النظام. سيتم نشر كود الاستغلال في غضون أسابيع قليلة بعد قيام المستخدمين بتثبيت التحديثات المقدمة.

المصدر: opennet.ru

إضافة تعليق