ثغرة أمنية في ld.so OpenBSD

محمل ديناميكي ld.so، المضمنة في OpenBSD، قد، في ظل ظروف معينة، SUID/SGID- تترك التطبيقات متغير البيئة LD_LIBRARY_PATH وبالتالي تسمح بتحميل تعليمات برمجية خارجية في سياق عملية تعمل بامتيازات مرتفعة. تتوفر التصحيحات التي تعمل على إصلاح الثغرة الأمنية للإصدارات 6.5 и 6.6. بقع ثنائية (syspatch) للأنظمة الأساسية AMD64 وi386 وarm64 قيد الإنتاج بالفعل ويجب أن تكون متاحة للتنزيل بحلول وقت نشر هذا الخبر.

جوهر المشكلة: أثناء التشغيل، يقوم ld.so أولاً باستخراج قيمة متغير LD_LIBRARY_PATH من البيئة، وباستخدام وظيفة _dl_split_path()، يحولها إلى مجموعة من السلاسل - مسارات إلى الدلائل. إذا اتضح لاحقًا أن العملية الحالية قد بدأت بواسطة تطبيق SUID/SGID، فسيتم مسح المصفوفة التي تم إنشاؤها، وفي الواقع، متغير LD_LIBRARY_PATH. في الوقت نفسه، إذا نفدت الذاكرة _dl_split_path() (وهو أمر صعب نظرًا للحد الصريح البالغ 256 كيلو بايت لحجم متغيرات البيئة، ولكنه ممكن من الناحية النظرية)، فسيتلقى المتغير _dl_libpath القيمة NULL، وعمليات التحقق اللاحقة من ستفرض قيمة هذا المتغير تخطي الاستدعاء إلى _dl_unsetenv("LD_LIBRARY_PATH").

الضعف الذي وجده الخبراء Qualys، إلى جانب تم الكشف عن العديد منها سابقًا مشاكل. لاحظ الباحثون الأمنيون الذين حددوا الثغرة الأمنية مدى سرعة حل المشكلة: تم إعداد التصحيح وإصدار التحديثات في غضون ثلاث ساعات بعد تلقي مشروع OpenBSD الإشعار.

إضافة: تم تخصيص رقم للمشكلة CVE-2019-19726. تم وضعه على القائمة البريدية لـ oss-security اعلان رسمي، بما في ذلك استغلال النموذج الأولي الذي يعمل على بنيات OpenBSD 6.6 و6.5 و6.2 و6.1
AMD64 وi386 (يمكن تكييف الثغرة مع بنيات أخرى).
يمكن استغلال المشكلة في التثبيت الافتراضي وتسمح لمستخدم محلي لا يتمتع بأي امتيازات بتنفيذ التعليمات البرمجية كجذر عبر استبدال المكتبة عند تشغيل الأدوات المساعدة chpass أو passwd suid. لإنشاء ظروف الذاكرة المنخفضة اللازمة للتشغيل، قم بتعيين حد RLIMIT_DATA عبر setrlimit.

المصدر: opennet.ru

إضافة تعليق