الثغرات الأمنية والاستغلال
الثغرات الأمنية هي عيوب في البرمجيات تنتهك افتراضاتها الأمنية؛ والاستغلال هو فن تحويل هذا العيب إلى سلوك يتحكم فيه المهاجم، بدءًا من تسريب البيانات وصولًا إلى تنفيذ التعليمات البرمجية بالكامل.
Definition
الثغرة الأمنية هي نقطة ضعف في نظام يمكن للمهاجم استخدامها لانتهاك سياسته الأمنية؛ والاستغلال هو تقنية أو برنامج يستفيد من ثغرة أمنية محددة لتحقيق تأثيرات غير مصرح بها.
Scope
يغطي هذا الموضوع الفئات الرئيسية للثغرات الأمنية — أخطاء تلف الذاكرة (تجاوز سعة المخزن المؤقت، الاستخدام بعد التحرير)، الحقن، أخطاء الأعداد الصحيحة، وعيوب المنطق — والتقنيات اللازمة لاستغلالها، بما في ذلك اختطاف تدفق التحكم والبرمجة الموجهة بالعودة. كما يغطي التخفيفات التي تزيد من تكلفة الاستغلال (ASLR، DEP/NX، حراس المكدس، سلامة تدفق التحكم). ويستثني ممارسات التطوير الآمن والثغرات الأمنية الخاصة بالويب، والتي تُعالج في مواضيع ذات صلة.
Core questions
- ما هي فئات عيوب البرمجيات التي تخلق ثغرات أمنية قابلة للاستغلال؟
- كيف يتحول خطأ تلف الذاكرة إلى تحكم في برنامج؟
- ما هي البرمجة الموجهة بالعودة ولماذا تهزم الدفاعات البسيطة؟
- كيف ترفع التخفيفات مثل ASLR وDEP وحراس المكدس من مستوى صعوبة الاستغلال؟
- لماذا يستمر 'سباق التسلح' بين الاستغلال والتخفيف؟
Key concepts
- تجاوز سعة المخزن المؤقت
- الاستخدام بعد التحرير
- تجاوز سعة العدد الصحيح
- الحقن
- اختطاف تدفق التحكم
- البرمجة الموجهة بالعودة
- شيل كود (shellcode)
- ASLR، DEP/NX، حراس المكدس
- سلامة تدفق التحكم
Key theories
- اختطاف تدفق التحكم
- تتلف العديد من الاستغلالات مؤشر التعليمات البرمجية (مثل عنوان العودة أو مؤشر الدالة) لإعادة توجيه التنفيذ إلى تعليمات برمجية يختارها المهاجم، والمثال النموذجي هو تجاوز سعة المخزن المؤقت للمكدس الذي يكتب فوق عنوان العودة المحفوظ.
- التخفيفات وسباق التسلح في الاستغلال
- تمنع الدفاعات مثل الذاكرة غير القابلة للتنفيذ، وعشوائية تخطيط مساحة العنوان، وحراس المكدس، وسلامة تدفق التحكم كل فئة من التقنيات، مما يدفع إلى هجمات جديدة (البرمجة الموجهة بالعودة، تسريبات المعلومات) في تصعيد مستمر.
Mechanisms
يتجاوز تجاوز سعة المكدس الكلاسيكي حدود المخزن المؤقت، مما يؤدي إلى الكتابة فوق عنوان العودة المحفوظ بحيث عندما تعود الدالة، يقفز التنفيذ إلى تعليمات برمجية (shellcode) يوفرها المهاجم. وقد أدت التخفيفات إلى كسر هذا: الذاكرة غير القابلة للتنفيذ (DEP/NX) أوقفت تشغيل التعليمات البرمجية المحقونة، مما دفع إلى البرمجة الموجهة بالعودة التي تربط أجزاء التعليمات البرمجية الموجودة؛ وقد أخفت عشوائية تخطيط مساحة العنوان العناوين المستهدفة، مما دفع إلى استخدام بدائيات تسريب المعلومات لهزيمتها. وتهدف سلامة تدفق التحكم واللغات الآمنة للذاكرة إلى إغلاق هذه الفئات بالكامل.
Clinical relevance
الثغرات الأمنية القابلة للاستغلال هي المادة الخام للهجمات الحقيقية: تشكل أخطاء سلامة الذاكرة غالبية الثغرات الأمنية الحرجة في المتصفحات وأنظمة التشغيل الرئيسية، ويتم شراء وبيع واستخدام استغلالات اليوم الصفري في التجسس والجريمة، ويدفع هذا التخصص الهندسة الدفاعية، والإفصاح المسؤول، ومكافآت الأخطاء، والتوجه نحو اللغات الآمنة للذاكرة مثل Rust.
Evidence & guidelines
يتم تصنيف فئات الثغرات الأمنية في CWE التابع لـ MITRE وتتبعها بشكل فردي كـ CVEs مع درجات خطورة CVSS. وتشير الدراسات من البائعين الرئيسيين (Microsoft، Google) إلى أن حوالي 70% من الثغرات الأمنية الخطيرة تنبع من عدم أمان الذاكرة، مما يحفز التوجيه نحو اللغات الآمنة للذاكرة ونشر التخفيفات (ASLR، CFI) بشكل افتراضي في المنصات الحديثة.
History
دخل الاستغلال إلى الوعي العام مع تجاوز سعة المخزن المؤقت لدودة موريس عام 1988 وتم منهجه بواسطة 'Smashing the Stack for Fun and Profit' لـ Aleph One عام 1996. وقد أثار كل دفاع استجابة: أدى DEP إلى العودة إلى libc والبرمجة الموجهة بالعودة لـ Shacham (2007)؛ وأدى ASLR إلى تجاوزات قائمة على التسريب. وقد صاغت دراسة 'الحرب الأبدية في الذاكرة' لعام 2013 السباق المستمر للتسلح، والذي لا يزال يدفع كلًا من التخفيفات الجديدة واعتماد اللغات الآمنة للذاكرة.
Key figures
- Elias Levy (Aleph One)
- Hovav Shacham
- Dawn Song
- Ross Anderson
- Halvar Flake
Related topics
Seminal works
- aleph1996
- szekeres2013
- anderson2020
Frequently asked questions
- ما هي ثغرة اليوم الصفري (zero-day vulnerability)؟
- ثغرة اليوم الصفري هي ثغرة أمنية غير معروفة لمدافعي البرمجيات (وغير مصححة) وقت استغلالها، مما يمنحهم صفر أيام للاستعداد. هذه العيوب ذات قيمة خاصة للمهاجمين لأنه لا يوجد إصلاح أو توقيع لها بعد.
- لماذا يتم الترويج للغات الآمنة للذاكرة كحل؟
- تمنع اللغات الآمنة للذاكرة (مثل Rust) فئات كاملة من الأخطاء — تجاوز سعة المخزن المؤقت، الاستخدام بعد التحرير — في وقت الترجمة أو التشغيل، مما يقضي على المصدر الأكثر شيوعًا للثغرات الأمنية الخطيرة بدلاً من مجرد جعل كل واحدة منها أصعب في الاستغلال.