- يقوم اختبار التشويش بأتمتة إرسال المدخلات المشوهة لاكتشاف الثغرات الأمنية في البرامج والأنظمة.
- AFL و AFL++ عبارة عن أدوات اختبار ذكية تستخدم مترجمات مُجهزة لتوجيه نفسها من خلال التغطية وإيجاد مسارات تنفيذ جديدة.
- يتيح لك تحليل الأعطال باستخدام أدوات مثل AFLTriage و GDB تقييم إمكانية استغلال الثغرات الأمنية مثل Integer Underflow.
- إن دمج اختبار التشويش في دورة التطوير يحسن المتانة، ويساعد على تلبية معايير السلامة، ويقلل من مخاطر الحوادث الحرجة.
إذا كنت مهتما في الأمن السيبراني والاستغلال الموجه نحو النظام الثنائيعاجلاً أم آجلاً، ستصادف تقنيات اختبار البرمجيات العشوائية (fuzzing)، وخاصةً AFL و AFL++. لا نتحدث هنا عن أداة معملية نظرية، بل عن أداة تُستخدم يوميًا لاكتشاف ثغرات حقيقية في برامج معروفة، تمامًا كما حدث مع الثغرات الأمنية في... تطبيقات شائعة مثل 7-Zip.
سنرى في السطور التالية، بالتفصيل وبأسلوب ودود، كيفية استخدام AFL و AFL++ لاختبار الملفات الثنائيةسنشرح بالتفصيل ماهية اختبار التشويش، ولماذا يُعدّ بالغ الأهمية من الناحية الأمنية، وكيفية دمجه في سير عمل التطوير الحديث. كما سنستعرض حالة ثغرة أمنية واقعية (ثغرة تجاوز سعة عدد صحيح تسمح بتنفيذ التعليمات البرمجية عن بُعد) ونستعرض أدوات تكميلية مثل GDB مع ملحقات، وAFLTriage، ووحدات التشغيل.
ما هي AFL/AFL++ ولماذا تعتبر أدوات اختبار ذكية؟

AFL (الأمريكي ذو الشعر الأشعث) وتطوره AFL++ هذه أدوات اختبار مفتوحة المصدر مصممة لاختبار الملفات الثنائية تلقائيًا، والبحث عن أخطاء مثل تجاوزات السعة، أو أخطاء الذاكرة، أو السلوكيات غير المتوقعة التي تؤدي إلى الأعطال أو حتى الثغرات الأمنية القابلة للاستغلال.
لا تكمن روعة لعبة كرة القدم الأسترالية في مجرد إرسال بيانات عشوائية، بل في... أداة اختبار ذكية أو أداة اختبار موجهة بالتغطيةانطلاقاً من مثال واحد أو أكثر من الأمثلة الصحيحة (ما يسمى حالات الاختبار), يقوم برنامج AFL باستمرار بتوليد اختلافات، وبفضل أدوات البرنامج، يكتشف متى تتسبب طفرة جديدة في اتخاذ الملف الثنائي مسار تنفيذ مختلف.
لتحقيق هذه الأدوات، تمتلك AFL برامج تجميع خاصة بها، مثل: afl-gcc و afl-g++تُدخل هذه التعليمات البرمجية "خطافات" صغيرة في الكود أثناء عملية الترجمة. تُعلم هذه الخطافات لغة AFL بأنه قد تم اكتشاف مُدخل معين. مسارات جديدة في تدفق البرنامجيتيح لك هذا التركيز على الطفرات التي توفر تغطية إضافية بالفعل وعدم إضاعة الوقت مع البيانات التي لا تغير أي شيء.
هذا النهج يجعل AFL أشبه بـ "دليل البرامج الثنائية": أداة معروفة، سهلة الاستخدام بمجرد فهم التدفق الأساسي، وقوية بما يكفي لاكتشاف عيوب خطيرة في برامج الإنتاجعلى الرغم من وجود أدوات فحص أكثر تطوراً أو تخصصاً.
مقدمة عن اختبار التشويش ودوره في الأمن السيبراني
اختبار التشويش، أو ببساطة اختبار التشويش، هو أسلوب من أساليب اختبار الأمان والمتانة الآليالفكرة هي إرسال كمية كبيرة من البيانات المشوهة أو العشوائية أو غير العادية إلى التطبيق، بهدف معرفة ما إذا كان البرنامج سيتعطل أو يفشل أو يتصرف بشكل غير متوقع.
عندما تخضع البرامج لاختبارات الفحص العشوائي، يكون الهدف هو تحديد الأخطاء مثل تجاوزات سعة المخزن المؤقت، أو فشل التحقق من صحة المدخلات، أو مشاكل إدارة الذاكرة، أو حالات التزامنيمكن أن تؤدي العديد من هذه العيوب إلى تنفيذ التعليمات البرمجية بشكل عشوائي، أو تسريب المعلومات، أو حرمان المستخدمين من الخدمة.
في سير العمل النموذجي، يتبع اختبار التشويش ثلاث مراحل واضحة: أولاً، يتم إنشاء مجموعة بيانات الاختبار (سواء كانت عشوائية تمامًا، أو تم إنشاؤها وفقًا لتنسيق محدد، أو عن طريق تغيير المدخلات الصحيحة)؛ ثم... قم بتنفيذ الملف الثنائي قيد الاختبار أثناء مراقبته. تتم مراقبة سلوكها؛ وأخيراً، يتم تسجيل الأعطال أو السلوكيات غير العادية وتحليلها حتى يتمكن المطورون من التحقيق في مصدر المشكلة.
توجد استراتيجيات مختلفة لاختبار البرمجيات. تركز بعض الأدوات على تشويش الأجيالإنشاء إدخالات تحترم تنسيقًا محددًا جيدًا (على سبيل المثال، بنية ملف أو بروتوكول شبكة)؛ بينما تعتمد إدخالات أخرى على تغيير المدخلات الصحيحةهذا هو تحديدًا النهج الذي تتفوق فيه خوارزميات AFL و AFL++. وهناك أيضًا مناهج أخرى أكثر عشوائية، وأخرى تعتمد على معرفة دقيقة بالنظام قيد الاختبار لتحديد نقاط ضعفه.
في مجال الأمن السيبراني الحديث، يُعد اختبار التشويش حليفًا أساسيًا: فهو يساعد في العثور على نقاط الضعف في استباقياً، قبل أن يبدأ البرنامج في الإنتاجويساهم ذلك في الامتثال للوائح والمعايير مثل معيار ISO 27001 أو متطلبات حماية البيانات. علاوة على ذلك، فإنه يقلل من المخاطر التي قد تلحق بالسمعة نتيجة وقوع ثغرة أمنية خطيرة قابلة للاستغلال في أيدي المهاجمين.
حالة واقعية: ثغرة أمنية تتعلق بتدفق عدد صحيح وثغرة تنفيذ التعليمات البرمجية عن بُعد في برنامج فك الضغط
لفهم القيمة الحقيقية لتقنية AFL واختبار الثغرات الأمنية، من المفيد جدًا النظر إلى ثغرة أمنية محددة بناءً على خطأ في تجاوز سعة عدد صحيح داخل برنامج فك ضغط ملفات شائع جدًاهذا خطأ تنفيذ التعليمات البرمجية عن بعد (RCE) الذي يتم تشغيله عند معالجة الملفات المضغوطة باستخدام خوارزمية Zstandard، مع درجة CVSS عالية، وإن لم تكن قصوى، وذلك تحديدًا لأنه يتطلب سياقًا أكثر تحديدًا إلى حد ما (على سبيل المثال، أن ملفات معينة تتم معالجتها).
يحدث تجاوز الحد الأدنى لعدد صحيح عندما يكون لمتغير عدد صحيح حدود دنيا محددة جيدًا يتم استخدامه في عمليات الطرح حتى يتم الوصول إلى قيمته الدنيا.بما أن العديد من أنواع الأعداد الصحيحة لا تسمح بالقيم السالبة، فعند "النزول إلى ما دون الصفر"، بدلاً من الحصول على رقم أقل من الصفر، يحدث قفزة إلى أقصى قيمة ممكنة للنطاق، وذلك بسبب كيفية تمثيل هذه الأرقام داخليًا.
تخيل متغيرًا صحيحًا، نظريًا، لا ينبغي أن يكون سالبًا أبدًا. إذا استمريت في طرح قيمة ثابتة حتى تصل إلى الصفر، ثم واصلت الطرح، لن تحصل على -1، -2، إلخ.بدلاً من ذلك، ستنعكس القيمة وتصبح رقماً ضخماً في الحد الأعلى للنطاق المسموح به. هذا الرقم غير المنطقي، إذا استُخدم كمؤشر أو حجم في عمليات الذاكرة، قد يتسبب في عمليات قراءة أو كتابة خارج الحدود المقصودة.
تصبح المشكلة حرجة عندما يتم استخدام متغير العدد الصحيح الذي يمكن أن يتسبب في حدوث تجاوز في النطاق لـ لإدارة المخزن المؤقت أو لحساب الإزاحاتومن الأمثلة الزائفة النموذجية استخدام متغير يتحكم فيه المستخدم بشكل غير مباشر كإزاحة في دالة من نوع memcpy، في حلقة تنقص قيمة ثابتة في كل تكرار حتى تصل إلى الصفر أو إلى رقم غير موجب.
في مثل هذا السيناريو، إذا لم تتمكن القيمة الأولية من تلبية شرط الخروج "بشكل سليم"، فإن التجاوز السفلي سيجعل العدد هائلاً في النهاية، وستستمر الحلقة في العمل، و فساد هائل للذاكرةويترجم هذا إلى أعطال، ومع ما يكفي من العمل على استغلال الثغرات، يصبح من الممكن تنفيذ تعليمات برمجية عشوائية.
كيف تساعد AFL في تحديد هذه الأنواع من الثغرات الأمنية
بمجرد فهم مفهوم التجاوز السفلي للأعداد الصحيحة، يتضح سبب فائدة لغتي AFL و AFL++: بدءًا من ملف إدخال واحد أو بضعة ملفات إدخال صالحة تمامًايمكن لبرنامج الفحص العشوائي أن يولد عشرات الآلاف من الاختلافات، حتى يعثر على الاختلاف الذي يؤدي إلى ظهور الخلل المحدد في مسار فك الضغط المتأثر.
أثناء عملية اختبار البرمجيات، يراقب برنامج AFL الملف الثنائي المُجهز لتحديد متى يتسبب إدخال ما في تنفيذ مسار تحكم مختلف في التدفق. في كل مرة يكتشف فيها مسارًا جديدًا، ضع علامة على هذا الإدخال باعتباره مثيرًا للاهتمام ويحفظها كأساس للتغييرات المستقبلية. وبهذه الطريقة، لا يتم استكشاف مسارات التنفيذ المعتادة فحسب، بل يتم أيضًا استكشاف مجموعات البيانات التي تُفعّل مسارات برمجية غير عادية، مثل عملية فك الضغط ذات المعاملات الغريبة.
في حالة حدوث خطأ في تدفق عدد صحيح، يستطيع برنامج AFL العثور على عينة تتسبب في عدم وصول المتغير المعني إلى قيمة الإخراج المتوقعة في الحلقة. والنتيجة هي عطل قابل للكشف، يُخزَّن في مجلد نتائج AFL المخصص، جاهزًا لمزيد من التحليل.
بعد بضع دقائق أو ساعات من التنفيذ، من الشائع أن يشير نظام AFL إلى أول حادث تحطم ذي صلةلن تكون جميع الأخطاء التي تجدها قابلة للاستغلال، لكنها مؤشر واضح على أن شيئًا ما في إدارة الذاكرة أو التحقق من صحة الإدخال أو المنطق الداخلي للبرنامج الثنائي لا يعمل كما ينبغي.
عندها تدخل أدوات الدعم مثل AFLTriage أو مصحح الأخطاء مثل GDB حيز التنفيذ، مما يسمح لك بالتعمق أكثر في العطل، ومراقبة حالة السجلات والذاكرة، وتقييم ما إذا كان من الممكن استغلال الفشل بشكل موثوق أو ما إذا كان مجرد عطل غير ذي فائدة من وجهة نظر المهاجم.
التثبيت الأساسي لـ AFL / AFL++ وبيئة التحليل
يُعدّ إعداد بيئة اختبار البرمجيات باستخدام AFL على نظام لينكس قياسي أمرًا بسيطًا للغاية. في العديد من التوزيعات، يكفي تثبيت الحزمة الخاصة بالمترجمات المُجهزة، على سبيل المثال، باستخدام أمر مثل قم بتثبيت afl-g++ أو حزمة AFL++ المكافئة أحضر الجناح بأكمله.
يؤدي ذلك إلى تثبيت أدوات اختبار التشويش (مثل زغبمثل المترجمات المتخصصة (مثل afl-gcc و afl-g++، بالإضافة إلى إصداراتها الحديثة في AFL++). هذه هي المترجمات التي ستستخدمها عند الرغبة في إعادة ترجمة البرنامج المستهدف مع أدوات القياس، وهو أمر ضروري لتحقيق أقصى استفادة من اختبار التغطية الموجهة.
إلى جانب أداة اختبار التشويش نفسها، تُعد بيئة تصحيح الأخطاء الجيدة ضرورية عمليًا. ويمكن استخدام قاعدة بيانات GDB موسعة مع إضافات مثل PEDA أو GEF يجعل الحياة أسهل بكثير بفضل الأوامر الإضافية، وتنسيق الذاكرة المريح، وتصورات المكدس، والاختصارات للتحقق من السجلات وخرائط الذاكرة.
إذا لم يكن لديك GDB بالفعل، يمكنك تثبيته باستخدام مدير الحزم الخاص بتوزيعتك. بعد ذلك، ما عليك سوى دمج الملحق الذي اخترته (على سبيل المثال، عن طريق تنزيل GEF أو PEDA من مستودعاتهما وإضافتهما إلى ملف تكوين GDB الخاص بك، أو باستخدام الأمر `source` داخل المصحح نفسه).
سيُمكّنك امتلاك هذه النسخة المُحسّنة من GDB من تحليل الملفات الثنائية المُجهزة التي تنهار عند اختبارها باستخدام تقنية الفحص العشوائي (fuzzing)، قم بتنزيلها. المدخلات التي تسببت في الانهيار وتابع خطوة بخطوة ما يحدث في التنفيذ بالضبط عند نقطة الفشل.
قم بتجميع ملف تنفيذي مستهدف باستخدام AFL لاختباره بالخطأ
بمجرد تجهيز AFL أو AFL++، فإن الخطوة التالية لإجراء اختبارات التشويش الجادة هي قم بتجميع الهدف باستخدام مترجمات AFLوالقيام بذلك باستخدام الخيارات المناسبة لتسهيل كل من التحليل والاستغلال المحتمل، في حالة كان الهدف من التمرين هو البحث الهجومي.
في المشاريع الكبيرة، مثل برامج فك الضغط أو مجموعات أدوات الأرشفة، يُنصح بتفعيل رموز تصحيح الأخطاء (الخيار). وضع التصحيح أو علامات مثل -gوتقليل عمليات التحسين (على سبيل المثال، استخدام -O0 بدلاً من -O2). يساعد هذا بشكل كبير في فهم ما يحدث في شفرة المصدر فيما يتعلق بالعطل الملحوظ.
ستحتاج عادةً إلى تحديد موقع ملف makefile أو ملف البناء المناسب و قم بتعديل الأسطر التي يتم فيها تعريف علامات التجميعويمكن أن يشمل ذلك تفعيل متغير DEBUG، وفرض مستوى تحسين محدد، والأهم من ذلك، استبدال CC و CXX بـ afl-gcc و afl-g++ (أو أدوات AFL++ المكافئة).
على سبيل المثال، يمكنك تشغيل عملية البناء باستخدام أمر مثل CC=afl-gcc و CXX=afl-g++ مع ملف makefile المناسب. ستكون النتيجة ملفًا تنفيذيًا مُجهزًا يتضمن الخطافات اللازمة لتمكين AFL من قياس التغطية طوال فترة التنفيذ.
عند اكتمال عملية التجميع، يُنصح بالتحقق من أن الملف الثنائي الناتج يحتوي بالفعل على رموز تصحيح الأخطاء والبنية الصحيحة، باستخدام أمر مثل الملف فوق الملف التنفيذيهذا يضمن أنك لا تقوم بالاختبار العشوائي وأنك تستطيع بسهولة تصحيح أي أعطال تحدث.
إعداد حالات الاختبار وتنفيذ AFL
قبل تشغيل AFL على ملفك الثنائي، عليك إعداد مجموعة من الحد الأدنى من الإدخالات الصحيحةإذا كنت تختبر برنامج فك ضغط يفشل مع الملفات المضغوطة باستخدام خوارزمية معينة، فستحتاج إلى إنشاء ملف واحد على الأقل سليم البنية يستخدم طريقة الضغط تلك.
تتمثل الممارسة المعتادة في إنشاء مجلد، على سبيل المثال يُسمى "حالات الاختبار"، وتخزين عينة أو أكثر من العينات العاملة فيه. ستكون هذه العينات بمثابة نقطة انطلاق لـ AFL. يُنتج طفرات متزايدة العدوانيةمحاولة اكتشاف مسارات تنفيذ جديدة، وفي النهاية، حدوث أعطال.
يبدو الأمر النموذجي لبدء AFL كالتالي: تحديد اسم الجلسة أو المزامنة، ومجلد الإدخال مع حالات الاختبار، ومسار الإخراج حيث سيتم تخزين النتائج، وبعض المعلمات الإضافية مثل المهلة لتجنب الوقوع في حلقات لا نهائية.
يحدد سطر الأوامر أيضًا كيفية تنفيذ البرنامج المستهدف باستخدام لوحة النتائج @@سيقوم AFL تلقائيًا باستبدال المسار بمسار كل حالة اختبار يقوم بإنشائها. لذا يمكنك تحديد شيء مثل ./binary arguments @@ وستكون شركة AFL مسؤولة عن تشغيل الملف التنفيذي آلاف المرات باستخدام ملفات مختلفة.
من المهم معرفة أن برنامج AFL قد يُصدر تحذيرات مبدئية بشأن إعدادات النظام (بسبب قيود الموارد، أو ملفات تفريغ الذاكرة، وما إلى ذلك). في هذه الحالة، عادةً ما يوجد برنامج نصي أو أداة مساعدة تُعدّل معلمات النواة والجلسة لتحسين بيئة الاختبار، ويجب تشغيلها بصلاحيات مناسبة قبل إعادة الاختبار.
تحليل الحوادث باستخدام AFLTriage و GDB
بعد فترة من الاختبار التجريبي، ستقوم AFL تدريجياً بملء مجلد الإخراج بإدخالات جديدة مثيرة للاهتمام، وقبل كل شيء، بـ الملفات التي تسببت في الأعطالعادة ما يتم تخزين هذه الملفات في دليل فرعي محدد (على سبيل المثال، الأعطال داخل مجلد الجلسة).
لتجنب الإرهاق الناتج عن مراجعة كل مدخل على حدة، توجد أدوات مثل AFLTriage التي تتيح لك تشغيل الملف التنفيذي تلقائيًا على كل ملف عطل وإنشاء تقارير منظمة تتضمن تفاصيل حول مكان وكيفية حدوث العطل.
عند تشغيل برنامج AFLTriage، عليك تحديد مجلد الإدخال (مجلد الأعطال)، ومجلد الإخراج لحفظ التقارير، والأمر لتشغيل الملف التنفيذي باستخدام @@. ستقوم الأداة بتحليل كل حالة و سيقوم البرنامج بإنشاء ملفات نصية تحتوي على معلومات ذات أهمية. للمحلل.
يتضمن المحتوى النموذجي لهذه التقارير نوع الإشارة التي تسببت في العطل، والاتجاه الذي فشلت فيه، وتتبع المكدس الأساسي، وفي كثير من الحالات، الوظيفة أو الماكرو الذي تعطل فيه الكود (على سبيل المثال، عملية نسخ محددة، أو حلقة ضغط، أو ماكرو COPY_CHUNKS الذي يطرح الأحجام في كل تكرار).
بمجرد تحديد سبب العطل المثير للاهتمام، تتمثل الخطوة التالية في إعادة إنتاجه باستخدام GDB. وللقيام بذلك، يتم تشغيل مصحح الأخطاء مع الملف التنفيذي وملف الإدخال المُسبب للعطل كوسيطات، ويتم تنفيذ البرنامج من داخل GDB. عند إعادة إنتاج العطل، يتم تسجيل حالة السجلات الرئيسية مثل RAX و RDX وما إلى ذلك.تحقق من التعليمات الدقيقة التي يتم تنفيذها واستشر خرائط الذاكرة (vmmap) لمعرفة المنطقة التي تتم قراءتها أو الكتابة إليها.
من الانهيار إلى الاستغلال المحتمل: وحدات التحليل في GDB
لا يعني تعطل ملف تنفيذي بالضرورة إمكانية استغلال الثغرة الأمنية. وهنا تبرز أهمية ملحقات GDB مثل الوحدة النمطية. عملي، مصممة لتحليل سياق الحادث وتقديم تصنيف تقريبي لما إذا كان من الممكن استغلال الفشل أم لا.
تدرس هذه الأنواع من الامتدادات جوانب مثل صلاحية مؤشر التعليمات، وحالة مؤشر المكدس، وأذونات الذاكرة للعنوان الذي تتم فيه محاولة القراءة أو الكتابة، وطبيعة الإشارة التي تسببت في العطل. وباستخدام كل هذه المعلومات، فإنها توفر حكم مبدئي بشأن إمكانية الاستغلال (على سبيل المثال، من خلال تصنيف الخلل على أنه قابل للاستغلال على الأرجح، أو قابل للاستغلال بشكل محتمل، أو ذو أهمية قليلة).
في حالة حدوث خطأ في تدفق الأعداد الصحيحة يؤدي إلى الكتابة إلى ذاكرة للقراءة فقط، قد يقترح المكون الإضافي أن هذه حالة قابلة للاستغلال لأن عملية الكتابة تتم خارج الحدود المتوقعة في منطقة لا ينبغي فيها لمس أي شيء.
لن تكون جميع السيناريوهات بهذه البساطة، ولكن هذا المزيج من AFL لاكتشاف العطل، وAFLTriage لتصنيف الحالات ووصفها، وGDB مع ملحقات لتقييم إمكانية الاستغلال، يشكل خط أنابيب تدقيق ثنائي قوي للغايةومن ثم، فإن العمل المتبقي هو البحث والتطوير البحت للاستغلال، وهو أمر يمكن أن يختلف اختلافًا كبيرًا في التعقيد اعتمادًا على الحماية الثنائية والفعالة.
يُعدّ جزءٌ أساسيٌ آخر من التحليل، لا سيما عند نشر رقم CVE والتصحيح المرتبط به، مراجعة كيفية إصلاح الثغرة الأمنية في شفرة المصدر. وهذا يتضمن عادةً تغييرات في نوع البيانات المستخدمة (على سبيل المثال، الانتقال من بايت موقع إلى بايت غير موقع، وتوسيع النطاق) وإدراج عمليات فحص إضافية (إذا كانت تُرجع رموز خطأ في حالة تجاوز حدود معينة) لمنع حدوث تدفق ناقص أو تلف الذاكرة.
أدوات وأدوات اختبار أخرى ذات صلة في النظام البيئي
على الرغم من أن AFL و AFL++ من بين الخيارات الأكثر شهرة لاختبار البرامج الثنائية الأصلية، إلا أن نظام اختبار التشويش أوسع بكثير ويستحق المتابعة إذا كنت تعمل بانتظام مع أمن البرمجيات.
من بين الخيارات الأكثر استخدامًا مكتبة LibFuzzer، وهي مكتبة طورتها جوجل في الأصل وتتكامل مباشرة مع كود C/C++ وتؤدي وظائفها. اختبار عشوائي على مستوى وظائف محددةمثالية لاختبار المكونات الفردية ذات المدخلات الخاضعة للتحكم العالي.
يوجد أيضًا Peach Fuzzer، وهي منصة أكثر عمومية وقابلة للتخصيص تسمح لك بتحديد نماذج دقيقة للبروتوكولات وتنسيقات الملفات والهياكل المعقدةيحظى بشعبية كبيرة في القطاعات التي تعتبر فيها الموثوقية أمراً بالغ الأهمية، مثل الأنظمة الصناعية أو بيئات إنترنت الأشياء.
في مجال الويب، تتضمن أدوات مثل OWASP ZAP وحدات اختبار عشوائي موجهة نحو تطبيقات الويب، قادرة على إرسال الطلبات المُتلاعب بها، والتحميلات المشوهة، واختبارات الحقن نقاط نهاية HTTP لاكتشاف الثغرات الأمنية مثل حقن SQL، أو مشاكل التحقق من صحة المدخلات، أو أخطاء معالجة النماذج.
يُكمّل كل هذا تقنية اختبار الثغرات الثنائية AFL/AFL++، إذ يُتيح تغطية شاملة بدءًا من التعليمات البرمجية الأصلية منخفضة المستوى وصولًا إلى طبقات التطبيق الأكثر عرضةً للمستخدم النهائي. والهدف المشترك في جميع الحالات واحد: أتمتة البحث عن الثغرات الأمنية قبل أن يستغلها المهاجمون.
كيفية دمج اختبار التشويش في دورة التطوير
لكي يُحقق اختبار البرمجيات قيمة حقيقية باستمرار، لا يكفي مجرد تشغيل AFL أو AFL++ من حين لآخر ونسيان الأمر. بل هناك طرق أكثر فعالية. دمج اختبار التشويش في دورة حياة تطوير البرمجيات، بطريقة مشابهة لكيفية القيام بذلك مع اختبارات الوحدة أو التكامل.
الخطوة الأولى هي التعريف ما هي أجزاء النظام الأكثر أهمية؟يمكن تصميم حملات اختبار عشوائية محددة تستهدف هذه العناصر، مثل محللات الملفات، ووحدات الشبكة، والمكونات التي تعالج بيانات المستخدم، أو الخدمات الخارجية. ويمكن تصميم هذه الحملات خصيصًا باستخدام حالات اختبار مختارة بعناية.
بعد ذلك، عليك اختيار الأداة المناسبة لكل حالة. بالنسبة للملفات الثنائية الأصلية المعقدة، يُعدّ كل من AFL++ أو LibFuzzer خيارين طبيعيين، بينما بالنسبة لواجهات برمجة تطبيقات الويب أو تطبيقات HTTP، ستكون الأداة الموجهة للويب أكثر ملاءمة. الأهم هو تنفيذ عملية الفحص العشوائي بشكل صحيح. قابلة للتكرار والتشغيل الآلي.
يُعد التكامل مع أنظمة CI/CD مفيدًا للغاية: يمكن تهيئة خط الأنابيب بحيث يتم تشغيل مجموعة اختبار عشوائية في فروع معينة أو قبل عمليات نشر معينة لفترة زمنية محدودة، مما يؤدي إلى حفظ أي أعطال جديدة يتم العثور عليها وفشل عملية البناء إذا ظهرت ثغرات أمنية خطيرة محتملة.
وأخيرًا، من المهم فهم أن اختبار البرمجيات العشوائي عملية تكرارية. ففي كل مرة يتم فيها إصلاح خطأ برمجي، يجب إعادة اختبار المكون المتأثر للتحقق من فعالية التصحيح وعدم ظهور أخطاء جديدة. لا توجد أي تراجعات أو ثغرات أمنية جديدةوبهذه الطريقة، يصبح اختبار التشويش طبقة إضافية من الحماية المستمرة وليس عملية تدقيق معزولة.
بجمع كل ما سبق، يتضح كيف أن AFL و AFL++ واختبار التشويش بشكل عام تسمح لنا بالانتقال من نهج أمني يعتمد فقط على المراجعات اليدوية إلى نهج أكثر شمولية. أكثر آلية وشموليةيُمكنه كشف الأخطاء التي قد تبقى خفية لولا ذلك. كما أن العمل على حالات واقعية، مثل ثغرات تجاوز سعة الذاكرة في برامج فك الضغط الشائعة، يُساعد على فهم أن هذه ليست مجرد نظرية، بل مشاكل يتم استغلالها بالفعل. لذا، فإن تحديث البرامج باستمرار وإخضاعها لاختبارات عشوائية دورية يُمكن أن يُحدث فرقًا جوهريًا بين نظام مُخترق ونظام مُحصّن.
كاتب شغوف بعالم البايت والتكنولوجيا بشكل عام. أحب مشاركة معرفتي من خلال الكتابة، وهذا ما سأفعله في هذه المدونة، لأعرض لك كل الأشياء الأكثر إثارة للاهتمام حول الأدوات الذكية والبرامج والأجهزة والاتجاهات التكنولوجية والمزيد. هدفي هو مساعدتك على التنقل في العالم الرقمي بطريقة بسيطة ومسلية.