ثغرة عمرها 37 عامًا تمنح صلاحيات الجذر في OpenBSD

أظهر باحثون أمنيون إمكانية الحصول على صلاحيات الجذر (Root) على نظام OpenBSD 7.9 عبر سلسلة استغلال معقدة تجمع بين ثغرة قديمة يعود أصلها إلى نحو 37 عامًا وخلل آخر في نواة النظام، ما يسمح بتجاوز عدد من أبرز الآليات الدفاعية التي طالما اشتهر بها نظام التشغيل باعتباره أحد أكثر الأنظمة تركيزًا على الأمن.

وأعلنت شركة الأمن السيبراني Calif، التي اكتشفت الثغرات وأبلغت عنها، نشر تحليل تقني مفصل إلى جانب نموذج إثبات مفهوم (PoC) كامل بعد أن أصدرت OpenBSD التصحيحات اللازمة لمعالجة المشكلتين خلال سبتمبر 2026.

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

ثغرة موروثة من حقبة BSD الأولى

يبدأ مسار الهجوم من مشكلة تجاوز عددي (Integer Overflow) داخل وظيفة ربط الذاكرة المشتركة shmat(4)، وهي ثغرة ترتبط بمتغير يدعى shm_nattch مسؤول عن تتبع عدد العمليات المتصلة بقطعة الذاكرة المشتركة.

والمثير للاهتمام أن هذا المتغير عُرّف منذ عام 1988 في الشيفرات الأصلية لنظام BSD كمتغير من النوع short ذي 16 بتًا، وهو ما يعني أن الحد الأقصى لقيمته يبلغ 32767 فقط.

وبمرور السنوات، ورث نظام OpenBSD هذا التعريف التاريخي دون توسيع حجم المتغير أو تحديثه بما يتلاءم مع متطلبات الأنظمة الحديثة.

ويستغل الباحثون هذه النقطة عبر إنشاء 127 مقطعًا من الذاكرة المشتركة ثم تشغيل 259 عملية متفرعة، ما يؤدي إلى تجاوز الحد الأقصى للعداد والتسبب في التفافه إلى قيمة سالبة تبلغ -32643.

في الظروف الطبيعية يجب ألا يصل العداد إلى هذه الحالة، إلا أن تجاوز السعة يؤدي إلى فساد حالة التتبع داخل النواة، وهو ما يفتح الباب أمام خلل أكثر خطورة يتمثل في استخدام الذاكرة بعد تحريرها (Use-After-Free).

سلسلة استغلال تتجاوز دفاعات OpenBSD

لم يكن تجاوز العداد وحده كافيًا للحصول على صلاحيات الجذر، لذلك اعتمد الباحثون على ثغرة ثانية مرتبطة بآلية العد المرجعي داخل النواة.

وبمجرد تفعيل حالة Use-After-Free، أصبح بالإمكان استغلال عملية كتابة خارج الحدود المسموح بها داخل الذاكرة (Out-of-Bounds Write)، ما يؤدي إلى تعديل عدادات عضويات البث المتعدد Multicast في النواة.

وعندما يُغلق المقبس الشبكي المتأثر، تنفذ النواة عمليات إنقاص لقيم العدادات المعدلة، الأمر الذي يؤدي بشكل غير مباشر إلى تغيير إدخالات جداول الصفحات (Page Table Entries).

وبهذه الطريقة يتحول جزء من الذاكرة المخصصة للمستخدم إلى مساحة يمكن للنواة الوصول إليها، مما يسمح فعليًا بتجاوز آليتي الحماية العتاديتين الشهيرتين:

  • SMAP الخاصة بمنع النواة من الوصول غير المصرح به إلى ذاكرة المستخدم.
  • SMEP المصممة لمنع تنفيذ تعليمات المستخدم ضمن سياق النواة.

وبعد تخطي هاتين الطبقتين الدفاعيتين، يتمكن المهاجم من الكتابة فوق مؤشر دالة داخل النواة واستبداله بعنوان شيفرته الخاصة، ما يؤدي في نهاية المطاف إلى تنفيذ التعليمات البرمجية بصلاحيات الجذر الكاملة.

لماذا فشلت عشوائية KARL في إيقاف الهجوم؟

لطالما افتخر مشروع OpenBSD بميزة KARL أو Kernel Address Randomized Link، وهي تقنية تعيد ربط النواة في كل عملية بناء بهدف تغيير مواقع الوظائف والبيانات بصورة عشوائية.

ومع ذلك، أوضح الباحث  أن المشكلة لا تكمن في عناوين الوظائف فقط، بل في بنى الذاكرة التي تنشئها مخصصات الذاكرة داخل النواة.

فبحسب الدراسة، ما تزال بعض المخصصات تستخدم أساليب حتمية يمكن التنبؤ بها، وهو ما يجعل مواقع بعض البنى الحساسة مستقرة نسبيًا بين عمليات إعادة التشغيل على نفس العتاد.

ونتيجة لذلك، لم يحتج الاستغلال إلى أي ثغرة لتسريب المعلومات أو كشف عناوين الذاكرة قبل التنفيذ، وهي خطوة تمثل عادة أحد أكثر أجزاء استغلال النواة تعقيدًا.

ويشير الباحثون إلى أن مؤشرات بعض وظائف واجهات الشبكة مثل lo0 وenc0 ظلت تظهر في مواقع يمكن التنبؤ بها، الأمر الذي وفر نقطة ارتكاز مناسبة لإكمال الاستغلال.

التصحيحات الأمنية والتوصيات المستقبلية

عالج مشروع OpenBSD الثغرتين عبر تحديثين منفصلين خلال سبتمبر 2026.

التحديث الأول، الذي صدر ضمن Errata 018 في 14 سبتمبر، أصلح مشكلة تجاوز السعة العددية وجرى تصنيفه كتحديث موثوقية وليس كتحديث أمني مباشر.

أما التحديث الثاني فقد صدر ضمن Errata 026 بتاريخ 30 سبتمبر لمعالجة مشكلة Use-After-Free التي تكمل سلسلة الاستغلال.

وتتوفر التصحيحات لجميع البنى المدعومة عبر أداة syspatch الرسمية، كما تلقى الإصدار OpenBSD 7.8 إصلاحًا لمشكلة التجاوز العددي أيضًا.

ورغم عدم تخصيص معرف CVE لأي من الثغرتين حتى وقت نشر التقرير، فإن الباحثين اقترحوا مجموعة من التحسينات الدفاعية طويلة المدى لزيادة صلابة النظام في مواجهة هذا النوع من الهجمات، من بينها:

  • تطبيق تقنيات Safe Unlinking المستخدمة في بعض أنظمة BSD الأخرى لحماية القوائم المترابطة داخل النواة.
  • إضافة عشوائية أكبر لآليات إدارة جداول الصفحات.
  • تطوير أدوات تخصيص الذاكرة داخل النواة بحيث تصبح أقل قابلية للتنبؤ.
  • الاعتماد بصورة أوسع على تقنيات الفحص الحدودية التي يوفرها المترجم البرمجي للكشف المبكر عن عمليات الكتابة غير المشروعة.

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

محمد وهبى
محمد وهبى
المقالات: 1519

اترك ردّاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *


The reCAPTCHA verification period has expired. Please reload the page.