Netcrook Logo
👤 SECPULSE
🗓️ 21 Dec 2025  

Rust في النواة: أسطورة الأمان المطلق تتعرض لأول تصدع

العنوان الفرعي: تجربة Rust الجريئة في نواة لينكس تواجه أول ثغرة أمنية لها، كاشفةً عن تحديات مزج الشيفرة الجديدة مع الافتراضات القديمة.

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

تدور الحادثة حول برنامج تشغيل Android Binder - وهو مكون أساسي للاتصال بين العمليات على أجهزة أندرويد - الذي أُعيدت كتابته مؤخرًا بلغة Rust كجزء من جهود أوسع لتحديث النواة. الثغرة، المسجلة تحت CVE-2025-68260، أبلغ عنها المشرف على النواة Greg Kroah-Hartman. في جوهرها، تنشأ المشكلة من معالجة غير آمنة للمؤشرات أثناء إزالة العناصر من قائمة مترابطة، وتحديدًا داخل دالة Node::release.

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

ما هو الحل؟ أعاد المطورون تصميم Node::release لتعمل مباشرة على القائمة الأصلية، مما أزال المخاطرة الناتجة عن النقل المؤقت إلى المكدس. تتبع فريق CVE لنواة لينكس الخطأ إلى الالتزام eafedbc7c050c44744fbdf80bdf3315e860b7513 في الإصدار 6.18، وتم تصحيحه في 6.18.1 ونسخة 6.19 المرشحة. الشيفرة المعرضة للخطر توجد في drivers/android/binder/node.rs.

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

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

ويكيكروك

  • Rust: Rust هي لغة برمجة حديثة تركز على الأمان والسرعة، وتساعد المطورين على تجنب الأخطاء الشائعة وكتابة شيفرة آمنة وموثوقة.
  • النواة: النواة هي جوهر نظام التشغيل، تدير موارد الأجهزة والبرمجيات لضمان تشغيل النظام بكفاءة وأمان.
  • CVE: CVE، أو الثغرات والتعرضات الشائعة، هو نظام لتعريف وتتبع العيوب الأمنية المعروفة علنًا في البرمجيات والأجهزة.
  • حالة السباق: حالة السباق هي خطأ يحدث عندما تؤدي الإجراءات المتزامنة لعدة عمليات إلى أخطاء أو ثغرات غير متوقعة في الأنظمة البرمجية.
  • قائمة مترابطة: القائمة المترابطة هي هيكل بيانات يحتوي كل عنصر فيه على بيانات ومرجع للعنصر التالي، مما يتيح إدارة فعالة للبيانات.
Rust Linux kernel security vulnerability

SECPULSE SECPULSE
SOC Detection Lead
← Back to news