ثغرة أمنية في استدعاء النظام execve الذي يمنح صلاحيات الجذر في نظام FreeBSD

تم اكتشاف ثغرة أمنية (CVE-2026-7270) في نظام FreeBSD تسمح لمستخدم غير مصرح له بتنفيذ تعليمات برمجية على نواة النظام والحصول على صلاحيات الجذر. تؤثر هذه الثغرة على جميع إصدارات FreeBSD الصادرة منذ عام 2013. وقد تم نشر برنامج استغلال لهذه الثغرة، وتم اختباره على أنظمة تعمل بنظام FreeBSD من الإصدار 11.0 إلى 14.4. تم إصلاح هذه الثغرة في الإصدارات 15.0-RELEASE-p7 و14.4-RELEASE-p3 و14.3-RELEASE-p12 و13.5-RELEASE-p13. يتوفر تحديث أمني للإصدارات الأقدم.

تحدث هذه المشكلة نتيجةً لتجاوز سعة المخزن المؤقت في استدعاء النظام execve. يحدث هذا عند معالجة البادئة المحددة في السطر الأول من البرامج النصية لتحديد مسار المفسر (على سبيل المثال، "#!/bin/sh"). ويحدث التجاوز أثناء استدعاء الدالة memmove بسبب خطأ في التعبير الرياضي المستخدم لحساب حجم الوسائط المنسوخة إلى المخزن المؤقت. فبدلاً من طرح قيمتي "args->begin_argv" و"consume" من "args->endp"، تم طرح قيمة "args->begin_argv" فقط من "args->endp"، وأُضيفت قيمة المتغير "consume" إلى النتيجة بدلاً من طرحها، أي أنه نتيجةً لذلك، تم نسخ بيانات إضافية بمقدار قيمتين لـ "consume". memmove(args->begin_argv + extend, args->begin_argv + consume, - args->endp - args->begin_argv + consume); + args->endp — (args->begin_argv + consume));

تسمح الثغرة الأمنية بالكتابة فوق عناصر بنية "exec_map" المُخصصة في الذاكرة المجاورة من عملية أخرى. يستغل هذا الاختراق الثغرة للكتابة فوق محتويات "exec_map" للعمليات ذات الامتيازات التي تُشغّل دوريًا على النظام. العملية المستهدفة هي sshd، التي تقوم، في كل مرة يتم فيها إنشاء اتصال شبكي، بإنشاء عملية فرعية وتنفيذ عملية "/usr/libexec/sshd-session" بامتيازات الجذر.

يستغل هذا البرنامج الخبيث ثغرة أمنية باستبدال متغير البيئة "LD_PRELOAD=/tmp/evil.so" بهذه العملية، مما يؤدي إلى تحميل مكتبته في سياق جلسة sshd. وتقوم المكتبة المُدخلة بإنشاء ملف تنفيذي باسم /tmp/rootsh في نظام الملفات مع منح صلاحيات المستخدم الجذر (suid). يُقدّر معدل نجاح هذا البرنامج الخبيث بنسبة 0.6%، ولكن بفضل إعادة المحاولة الدورية، يُمكن استغلاله بنجاح في غضون 6 ثوانٍ تقريبًا على نظام بمعالج رباعي النواة.

 ثغرة أمنية في استدعاء النظام execve الذي يمنح صلاحيات الجذر في نظام FreeBSD

بالإضافة إلى ذلك، تم إصلاح العديد من الثغرات الأمنية الأخرى في نظام FreeBSD:

  • CVE-2026-35547 وCVE-2026-39457 هما ثغرتان أمنيتان في مكتبة libnv، المستخدمة في نواة النظام وتطبيقات النظام الأساسية لمعالجة قوائم المفاتيح/القيم والتعامل مع الاتصال بين العمليات. تنتج الثغرة الأولى عن حساب غير صحيح لحجم الرسالة عند معالجة رؤوس رسائل IPC المصممة خصيصًا. أما الثغرة الثانية فتؤدي إلى تجاوز سعة المكدس أثناء اتصال المقبس بسبب عدم وجود فحوصات للتأكد من تطابق حجم واصف المقبس مع حجم المخزن المؤقت المستخدم في دالة select(). يمكن استغلال هاتين الثغرتين لرفع مستوى الصلاحيات.
  • CVE-2026-42512 هو ثغرة أمنية قابلة للاستغلال عن بُعد تتمثل في تجاوز سعة المخزن المؤقت في مكتبة dhclient، نتيجةً لحساب غير صحيح لحجم مصفوفة المؤشرات المستخدمة لتمرير متغيرات البيئة إلى dhclient-script. ويمكن استغلال هذه الثغرة لتنفيذ تعليمات برمجية عن بُعد عن طريق إرسال حزمة DHCP مُصممة خصيصًا.
  • CVE-2026-7164 – ثغرة أمنية في مرشح حزم pf تحدث عند معالجة حزم SCTP مصممة خصيصًا. وتنتج هذه المشكلة عن تحليل متكرر غير محدود لمعاملات SCTP.
  • CVE-2026-42511 – يُمكن إدخال توجيهات عشوائية في ملف dhclient.conf نتيجةً لعدم كفاية معالجة الأقواس المزدوجة في حقول BOOTP المُستلمة من خادم DHCP خارجي. عند قيام عملية dhclient بتحليل هذا الملف لاحقًا، يتم تمرير الحقل المُحدد من قِبل المُهاجم إلى dhclient-script، والذي يُمكن استخدامه لتنفيذ أوامر عشوائية بصلاحيات الجذر على الأنظمة التي تُشغل dhclient عند الوصول إلى خادم DHCP يتحكم به المُهاجم.
  • CVE-2026-6386 — معالجة غير كافية لصفحات الذاكرة الكبيرة في دالة النواة pmap_pkru_update_range(). يمكن لمستخدم غير مصرح له أن يتسبب في تعامل دالة pmap_pkru_update_range() مع ذاكرة مساحة المستخدم كصفحة في جدول صفحات الذاكرة، مما يؤدي إلى الكتابة فوق منطقة ذاكرة غير مصرح بها.
  • CVE-2026-5398 - يسمح مرجع إلى منطقة ذاكرة تم تحريرها مسبقًا في معالج TIOCNOTTY لعملية غير مميزة بالحصول على امتيازات الجذر.

المصدر: opennet.ru