
لماذا تهتم وتنفق الأموال والموارد على الأمن؟ لماذا تهتم بتنظيم دورة حياة تطوير الأمان (SDL)؟ لماذا دمج الزغب في عملية التطوير؟ لماذا تهتم بمعرفة مختلف fuzzers مثل AFL و libfuzz وما إلى ذلك؟ بعد كل شيء ، يمكنك "ببساطة" تحويل البحث عن نقاط الضعف في منتجاتك إلى تعذيب مستمر وجعل حياة "حلوة" للباحثين والمهاجمين. تريد أن تعرف كيف تفعل ذلك؟ ثم مرحبا بكم في كات!
تنويه: يجب أن تؤخذ هذه المقالة مع قدر معين من الفكاهة والمفارقة!في الآونة الأخيرة ، تم تكريس المزيد والمزيد من الأعمال لموضوع AntiFuzzing. AntiFuzzing هو إجراء يقلل من فعالية واستخدام التزييف للبحث عن نقاط الضعف في حل (حلول) المطور.
ستركز هذه المقالة على التطبيقات الثنائية المبهمة المكتوبة بلغة C \ C ++ والتي يمكن نشرها محليًا ومحاولة العثور على نقاط الضعف المتعلقة بفساد الذاكرة فيها.
اليوم ، هناك عدد كبير من الإجراءات الموجهة ضد AFL fuzzer ، باعتباره الممثل الأكثر لفتًا للانتباه والمعروف والسمعة للنهج الزائد القائم على التعليقات.
بعد دراسة المشكلة ، حددنا تقنيات مكافحة التشويش المحتملة:
- فوضى نتائج عمل fuzzer هي التقنية الأكثر غرابة التي يتبناها بعض المطورين دون إدراكها) وتتكون من حقيقة أنه من أجل جعل البرنامج أكثر أمانًا ، تحتاج إلى إضافة المزيد من الأخطاء هناك ... نعم ، للأسف ، لا يمكننا الإجابة السؤال هو كم عدد أخطاءنا الموجودة بالفعل في البرنامج ومدى خطورتها ، ولكن يمكننا تخفيفها بمجموعة من الأخطاء التي لا فائدة منها للمهاجم!
- اكتشاف عملية التزييف كلها من نطاق jailbreak_detect ، root_detect. يحدد التطبيق بشكل مستقل (ويكتب المطور سلسلة من الشيكات) أنه لا يعمل فقط ، ولكنه يتم تنفيذه على مراحل ونتيجة لذلك يرفض العمل. كانت صناعة أمن المعلومات من خلال هذا مليون مرة. يتم البحث عن هذا الرمز واستبعاده من التطبيق بسهولة تامة ، وتقود التقنية في عنوان "الأكثر فائدة وغير المعقدة".
- تباطؤ عملية الزغب - داخل شركتنا نسمي هذه الأشياء "إخفاء الخلل في النفقات العامة". حتى الآن ، تعمل بعض البرامج بشكل سيئ ليس فقط تحت تأثير الزغب ، لذا يصبح البحث عن الثغرات فيها مهمة صعبة من الناحية النفسية للباحثين)
- إنشاء مناطق العمياء هو الاتجاه الأكثر إثارة للاهتمام ، والذي ، في رأينا ، سيقود تطور fuzzers. لذلك ، في العمل المقدم في BlackHat 2018 ، تثير AFL مشكلة التصادمات في Shared_mem ، والتي تستخدمها لتحديد الأقسام المغطاة من التعليمات البرمجية. أي أنه يتم إنشاء مناطق لا يسقط فيها الجرار أثناء تشغيله.
وبالتالي ، فإن AntiFuzzing له مزايا وعيوب واضحة:
- "-" ربما يكون غموض عقل مطوري البرمجيات ضليعي المعرفة في بعض جوانب أمن المعلومات وعملية التعتيم.
- "+" تطور fuzzers ، الذي سيبدأ في المستقبل للتغلب على آليات AntiFuzzing المنفذة وسيوفر تغطية أكبر أولاً ، إذا كانت هناك آليات AntiFuzzing مطبقة ؛ ثانيًا ، عندما تكون هناك عناصر في البرنامج تحاكي وظائف AntiFuzzing.
لماذا يتم استخدام هذا النهج لضمان الأمن غبي وضار؟ إن تطوير مقاربة AntiFuzzing عالية الجودة وتطبيقها على البرامج الحقيقية يمكن مقارنته بالتعقيد مع تطوير الخوارزمية نفسها لزيادة تغطية الشفرة مع التعليقات المستندة إلى التعليقات. تكمن الصعوبة في أنه بالإضافة إلى إدخال الهياكل المثبطة للطور في الأماكن الصحيحة ، فمن الضروري التأكد من عدم وجود نمط واضح يمكن تمييزه ، ثم استبعاده ببساطة. لا يزيد AntiFuzzing أمان التطبيق نفسه ... من الجيد أنه بينما يتم إجراء بحث AntiFuzzing فقط في بيئة أكاديمية. في الوقت نفسه ، هناك شركات تركز ، على العكس من ذلك ، على تبسيط البحث عن الأخطاء. على سبيل المثال ، توفر Mozilla بنية خاصة لمتصفحها لهذا
blog.mozilla.org/security/2018/07/19/introduction-the-asan-nightly-project !

كان سبب زيادة الاهتمام بمكافحة التزييف في المقام الأول هو التحدي الكبير لـ DARPA Cyber Grand Challenge 2016. وهي مسابقة حيث قامت أجهزة الكمبيوتر التي لا تحتوي على مساعدة بشرية بالبحث عن نقاط الضعف واستغلالها وتصحيحها. ربما كنت قد خمنت أن معظم أنظمة البحث كانت تعتمد على fuzzer AFL ، وكانت جميع الأهداف في المسابقة تطبيقات ثنائية. كل هذا يمكن أن يهدف إلى مواجهة الأنظمة الآلية ، وليس الناس.
تعتمد هذه المقالة على الأعمال التي يمكنك دراستها بنفسك:
- "الهروب من الزغب تقييم تقنيات الزغب وخداعهم بمكافحة الزغب" ، أطروحة الماجستير في أنظمة وشبكات الكمبيوتر
2016 - شاف باغز: ردع المهاجمين بجعل البرمجيات بوغير ، 2018
- "Blindspot AFL وكيفية مقاومة زغب AFL لثنائيات ELF التعسفية" ، BlackHat USA 2018
- ننصحك أيضًا بقراءة مقال الرجال من مجموعة NCC "مقدمة في مكافحة التلاعب: الدفاع في العمق" من عام 2014 (ظهر أول إصدار AFL للتو ولم يفز بعد بالحب الكبير للمجتمع ، وسنتين إضافيتين قبل نهائي DARPA CGC).
ملاحظة: غالبًا ما نعمل مع AFL (+ libfuzz) وتعديلاته عند البحث عن البرامج وتنفيذ SDL لعملائنا. لذلك ، في إحدى المقالات التالية ، سنتحدث أكثر عن التشويش باستخدام AFL ولماذا يستخدمه المزيد والمزيد من الأشخاص في اختبار البرامج وكيف يزيد من مستوى أمان التطوير.