حديقة الحيوان AFL Phasers

الصورة

كانت هناك مقالات عن Habré عدة مرات تثير موضوع American Fuzzy Lop (AFL) ( 1 ، 2 ). ولكن في هذه المقالة لن نتحدث عن AFL الكلاسيكية ، ولكن عن الأدوات المساعدة لها وتعديلاتها ، والتي ، في رأينا ، يمكن أن تحسن بشكل كبير من جودة الانصهار. إذا كنت مهتمًا بمعرفة كيفية ترقية AFL والبحث عن نقاط ضعف أسرع وأكثر ، فمرحباً بك في الإصدار!

ما هو AFL ولماذا هو جيد جدا


AFL - fuzzer الموجهة التغطية أو fuzzer المستندة إلى ملاحظات. يمكنك معرفة المزيد حول هذه المفاهيم من ورقة رائعة مثل Fuzzing: الفن والعلوم والهندسة . إذا قمنا بتلخيص المعلومات حول AFL ، فيمكننا أن نقول ما يلي:
  • استخدام أداة قابلة للتنفيذ لجمع معلومات التغطية
  • يحول المدخلات لزيادة التغطية
  • كرر الخطوة السابقة للعثور على أعطال البرنامج.
    • في الممارسة العملية ، ثبت أن تكون فعالة جدا
      • سهل جدا للاستخدام


بيانيا ، يمكن تمثيل هذا على النحو التالي:

الصورة

إذا كنت لا تعرف ماهية AFL ، فبدايةً ، نوصي بما يلي:

  1. صفحة المشروع الرسمية
  2. التدريب - رحلة قصيرة في AFL
  3. afl-demo - عرض بسيط لكيفية زغب برنامج C ++ باستخدام AFL
  4. afl-cve - مجموعة من الثغرات الأمنية المكتشفة باستخدام AFL (لم يتم تحديثه منذ 2017)
  5. يمكن العثور هنا على حقيقة أن AFL يضيف إلى البرنامج أثناء التجميع .
  6. بعض النصائح المفيدة لتدفق تطبيقات الشبكة هنا

في وقت كتابة هذا التقرير ، كان أحدث إصدار من AFL هو الإصدار 2.52b . تتطور Fazzer بنشاط ، وبمرور الوقت ، يتم تضمين بعض تطورات الجهات الخارجية في فرع AFL الرئيسي وتصبح غير ذات صلة بها. يوجد حاليًا العديد من الأدوات المساعدة المفيدة التي يمكن تحديدها - وهي مدرجة في القسم التالي.

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

ومع ذلك ، يلاحظ بعض مستخدمي AFL أن مؤلف كتاب phaser Michal Zalewski سجل حملة لدعم بنات أفكاره ، حيث أن آخر التغييرات مؤرخة في 5 نوفمبر 2017. يُزعم أن هذا يرتبط برحيله عن Google ومشاريع جديدة. في هذا الصدد ، بدأ الناس في جمع وتصحيح بشكل مستقل لأحدث إصدار الحالي 2.52b.

الصورة

هناك أيضًا خيارات ومشتقات مختلفة من AFL تسمح بدمج Python أو Go أو Rust أو OCaml أو GCJ Java أو syscalls kernel أو حتى VMs بأكملها.

AFL ل PLS أخرى

- بيثون - afl - لبايثون.
- afl.rs - لإدماج برنامج في Rust
- afl-fuzz-js - afl-fuzz for javascript.
- java-afl - دمج AFL لجافا
- kelinci - phaser آخر لجافا مع مقال حول هذا الموضوع
- javan-warty-pig - fuzzer يشبه AFL لـ JVM.
- afl-swift - لإدماج برنامج على سويفت
- ocamlopt-afl - لـ OCaml.
- حاد - مستندة إلى afl ل. الصافرة.

الأدوات المساعدة


في هذا القسم ، اخترنا العديد من البرامج النصية والأدوات للعمل مع AFL وقسمناها إلى عدة فئات:

تجهيز kresh


تغطية الرمز

  • afl-cov - يوفر بيانات تغطية قابلة للقراءة من قبل الإنسان.
  • count-afl-calls - Ratio score البرنامج النصي بحساب عدد الكتل المجهزة في binar.
  • afl-sancov - مثل afl-cov ، لكن يستخدم clang sanitizer.
  • covnavi هو برنامج نصي للتغطية وتحليل الشفرة من مجموعة Cisco Talos Group.
  • LAF LLVM Passes هي عبارة عن مجموعة من التصحيحات الخاصة بـ afl والتي تعدل التعليمات البرمجية لتسهيل عملية الانتقال إلى الفروع عبر الفروع

العديد من البرامج النصية لتقليل حالات الاختبار

  • afl-pytmin عبارة عن غلاف لـ afl-tmin يحاول تسريع عملية تقليل حالة الاختبار عن طريق استخدام نوى CPU متعددة.
  • afl-ddmin-mod - شكل من أشكال afl-tmin يعتمد على خوارزمية ddmin.
  • halfempty عبارة عن أداة مساعدة تعتمد على التوازي السريع لتقليل حالات الاختبار من Tavis Ormandy.

لبدء التشغيل الموزعة

  • disfuzz-afl - توزيع مدمج لـ afl.
  • AFLDFF هو إطار للتعبير الموزع مع AFL.
  • afl-launch هي أداة لإطلاق العديد من مثيلات afl.
  • afl-mothership - إدارة وإطلاق fuzzers AFL متزامنة على سحابة AWS.
  • afl-in-the-cloud هو برنامج نصي آخر لتشغيل afl في AWS.
  • VU_BSc_project - اختبار زغب المكتبات مفتوحة المصدر مع libFuzzer و AFL.

وأيضًا ، تم نشر مقال جيد جدًا بعنوان "تحجيم AFL إلى جهاز 256 مؤشر ترابط" حول هذا الموضوع ، والذي يصف إطلاق AFL على 256 مؤشر ترابط .

النشر والإدارة والمراقبة والإبلاغ

  • afl-other-arch - مجموعة من التصحيحات والبرامج النصية لإضافة دعم مختلف البنيات (غير x86) بسهولة في AFL.
  • التوافه - عدد قليل من النصوص الصغيرة لتبسيط إدارة AFL.
  • afl-monitor - برنامج نصي لمراقبة تشغيل AFL.
  • afl-manager - خادم ويب بيثون لإدارة متعدد التطبيقات.
  • afl-tools - صورة عامل ميناء مع afl-latest و afl-dyninst و Triforce-afl.
  • afl-remote - خادم الويب لإدارة مثيل afl عن بعد.

تعديلات AFL


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

فقط قل أنه إذا كانت هناك مشاكل في التثبيت أو لا ترغب في قضاء الوقت - فيمكنك العثور على أي تعديل تقريبًا على hub.docker.com

لماذا؟

  • زيادة السرعة و / أو تغطية الرمز
    • الخوارزميات
    • البيئة
      • نظام التشغيل
      • الحديد


  • العمل في ظروف دون شفرة المصدر
    • مضاهاة الكود
    • رمز الأجهزة
      • ثابت
      • ديناميكي



المدمج في أوضاع AFL

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

وضع Syzygy - هو وضع التشغيل في أداة instrument.exe
instrument.exe --mode=afl --input-image=test.exe --output-image=test.instr.exe 
من الضروري لهذا الوضع: إعادة كتابة ثنائيات PE32 بشكل ثابت مع AFL ، الرموز مطلوبة ، وتتطلب تطويرًا إضافيًا لجعل WinAFL kernel على دراية.

وضع Qemu - كيف يعمل تحت QEMU يمكن العثور عليها هنا "Internals of AFL fuzzer - QEMU Instrumentation" . ظهر دعم للعمل مع الثنائيات باستخدام QEMU في AFL المنبع من الإصدار 1.31b. يعمل وضع Afl qemu مع الوظيفة الإضافية لأدوات الكود الثنائي في محرك الترجمة الثنائي qemu tcg (مولد الكود الصغير). للقيام بذلك ، يحتوي afl على برنامج نصي لبناء qemu يقوم بتنزيل التعليمات البرمجية المصدر لإصدار معين (2.10.0) من qemu ، ويفرض عدة تصحيحات صغيرة عليها ويصنف لبنية معيّنة. بعد ذلك ، يتم إرجاع ملف التتبع afl-qemu ، والذي هو في الواقع وضع محاكاة (مضاهاة فقط للملفات القابلة للتنفيذ ELF). بفضل هذا ، يمكنك استخدام الدوي مع ردود الفعل على ثنائيات قزم ، ومجموعة من الهياكل المختلفة التي تدعمها qemu. بالإضافة إلى ذلك ، يمكنك الحصول على جميع أدوات afl الرائعة ، بدءًا من الشاشة المريحة التي تحتوي على معلومات حول الجلسة الحالية وتنتهي بأشياء متقدمة مثل تحليل afl. لكن ضع في اعتبارك أنك أيضًا تحصل على قيود qemu. أيضًا ، على سبيل المثال ، إذا تم تجميع الملف بواسطة سلسلة أدوات تستخدم ميزات أجهزة SoC ، والتي يتم تشغيل binar عليها والتي لا تدعمها qemu ، فسوف ينفجر التعزيز بمجرد مصادفة تعليمات محددة ، أو على سبيل المثال ، يتم استخدام MMIO محدد.

يوجد أيضًا شوكة مثيرة للاهتمام في وضع qemu ، حيث تم زيادة السرعة 3x-4x مرة نظرًا لأجهزة القياس TCG وذاكرة التخزين المؤقت.

الشوك

يرتبط ظهور شوكات AFL في المقام الأول بالتغييرات ، والتحسينات في خوارزميات تشغيل AFL الكلاسيكية نفسها.

  • afl-cygwin هي محاولة لنقل AFL الكلاسيكية إلى Windows باستخدام Cygwin. لسوء الحظ ، هذه المحاولة صاخبة جداً وبطيئة ، ويمكن القول إن التنمية قد تم التخلي عنها.
  • AFLFast (يمتد AFL مع جداول الطاقة) - واحدة من الشوكات الأولى من AFL ، تم إضافة جميع أنواع الاستدلال ، وذلك بفضل أنه يمكن أن يذهب أكثر الطرق في فترة قصيرة.
  • FairFuzz هو امتداد AFL هدفه هو محاولة قضاء المزيد من الوقت على الفروع النادرة.
  • AFLGo هو امتداد لـ AFL ، والذي يهدف في المقام الأول إلى تحقيق أهداف محددة من أقسام الكود ، بدلاً من التغطية العامة لرمز البرنامج. يمكن استخدام هذا لاختبار التصحيحات أو مقاطع التعليمات البرمجية المضافة حديثًا.
  • PerfFuzz هو امتداد AFL يبحث عن حالات الاختبار التي قد تبطئ البرنامج قدر الإمكان.
  • Pythia هو امتداد لـ AFL يهدف إلى إضافة عناصر تنبؤ إلى عملية التدريج فيما يتعلق بصعوبة اكتشاف مسارات جديدة.
  • Angora هي واحدة من fuzzers صدر مؤخرا ، مكتوبة في الصدأ. يستخدم استراتيجياته الجديدة للطفرة وزيادة التغطية.
  • Neuzz - محاولة للتشويش باستخدام الشبكات العصبية.
  • UnTracer-AFL - تكامل afl مع UnTracer ، لتتبع فعال.
  • Qsym - عملية تنفيذ تنفيذ Concolic مصممة خصيصًا للإعجاب المختلط. في الواقع ، إنه محرك لتنفيذ الرموز (يتم تنفيذ المكونات الرئيسية كبرنامج إضافي intel pin) ، والذي ، بالاشتراك مع afl ، ينفذ الإندماج المختلط. هذا تطور آخر في موضوع التعليقات المبني على الملاحظات ويستحق مناقشة منفصلة. وتتمثل مزاياه الرئيسية في أنه يستطيع بسرعة كبيرة (بالنسبة إلى البقية) تنفيذ الإعدام الجماعي. يحدث هذا بسبب التنفيذ الأصلي للأوامر دون تقديم وسيط للرمز ، والتخلص من آلية اللقطة وعدد من الاستدلال. يستخدم دبوس Intel القديم (بسبب عدد من مشكلات الدعم بين libz3 و DBTs الأخرى) ، ويمكنه حاليًا العمل مع البنى x86 و x86_64.

تجدر الإشارة إلى أن هناك عددًا كبيرًا من الأعمال الأكاديمية المتعلقة بتنفيذ مناهج جديدة ، وتقنيات مدمجة ، حيث يتم أخذ AFL وتعديله. بالإضافة إلى الورقة البيضاء ، لا يوجد شيء آخر متاح ، لذلك لم نذكر مثل هذه التطبيقات. إذا كنت مهتمًا ، فسيكون من السهل استخدام google. على سبيل المثال ، الأخير هو CollAFL: Path Sensitive Fuzzing ، EnFuzz ، Smart Greybox Fuzzing ، ML for afl.

التعديلات على أساس Qemu

  • TriforceAFL - AFL / QEMU مدمجة مع مضاهاة النظام بالكامل. شوكة من nccgroup. يسمح بدمج نظام التشغيل بأكمله في وضع qemu. يتم تنفيذه من خلال تعليمات خاصة (aflCall (0f 24)) ، والتي تمت إضافتها إلى QEMU x64 CPU. لسوء الحظ ، لم يعد مدعومًا ، أحدث إصدار من afl فيه هو 2.06b.
  • TriforceLinuxSyscallFuzzer - نظام لينوكس يدعو.
  • afl-qai هو مشروع تجريبي صغير مع QEMU Augmented Instrumentation (qai).


التعديل على أساس KLEE

kleefl - لتوليد حالات الاختبار عن طريق التنفيذ الرمزي (بطيء جدًا في البرامج الكبيرة).

التعديلات على أساس يونيكورن

afl-unicorn - يسمح لك بإدخال أجزاء من التعليمات البرمجية ، ومحاكاتها على محرك Unicorn . استخدمنا أيضًا تنوع AFL هذا في ممارستنا ، أي في أقسام الكود الخاصة بأحد RTOS ، والذي تم تنفيذه على SOC ، وكان من المستحيل استخدام وضع QEMU. يُنصح باستخدام هذا التعديل في حالة عدم وجود مصادر (لا يمكنك تجميع الثنائيات المستقلة لتحليل المحلل اللغوي) ولا يقبل البرنامج بيانات الإدخال مباشرة (على سبيل المثال ، يتم تشفيرها أو تمثيل عينات إشارة كما هو الحال في بينار CGC واحد) ، ثم يمكنك استخدامه عكس والعثور على وظائف الأماكن المقترحة حيث تتم معالجة هذه البيانات في شكل مناسب لل fuzzer والتي يمكن أن يكون fuzzed. هذا هو التعديل الأكثر شيوعا AFL. بمعنى أنه يسمح لك بإخفاء كل شيء حرفيًا. أي أنه لا يعتمد على البنية ، وتوافر أكواد المصدر ، وتنسيق بيانات الإدخال وتنسيق binar نفسه (المثال الأكثر لفتاً هو مجرد المعدن - مجرد قطع من الكود من ذاكرة وحدة التحكم). يقوم الباحث المبدئي بفحص هذا المنبر بالذات وكتابة fuzzer الذي يحاكي الحالة عند إدخال إجراء المحلل اللغوي ، على سبيل المثال. يمكن أن نلاحظ أنه ، على عكس AFL ، تحتاج إلى إجراء نوع من البحث على binar. بالنسبة للبرامج الثابتة المعدنية ، مثل Wi-Fi أو النطاق الأساسي ، هناك ببساطة عدد من العيوب التي تحتاج إلى وضعها في الاعتبار:

  1. من الضروري توطين الشيكات الاختبارية بطريقة أو بأخرى.
  2. يجب أن يؤخذ في الاعتبار أن حالة وحدة fuzzer هي حالة الذاكرة التي تم تخزينها في ملف تفريغ الذاكرة ، وهذا يمكن أن يمنع تحقيق مسارات معينة بالنسبة إلى وحدة fuzzer.
  3. لا يوجد صرف صحي للوصول إلى الذاكرة الديناميكية ، ولكن يمكن تنفيذه يدويًا (بعد بذل الجهود أيضًا) ، وسيعتمد على RTOS (يحتاج أيضًا إلى التحقيق مسبقًا).
  4. لا يتم محاكاة التفاعل بين مهام RTOS - يمكنك أيضًا منع fuzzer من العثور على مسارات معينة.

مثال على العمل مع هذا التعديل هو "afl-unicorn: Fuzzing Arbitrary Binary Code" و
"Afl-unicorn: Part 2 - Fuzzing the" Unuzzable "" .

قبل أن ننتقل إلى التعديلات بناءً على أطر عمل الأجهزة الثنائية الديناميكية (DBI) ، نتذكر على الفور أن أسرع هذه الأطر هي DynamoRIO ، ثم DynInst ، وأخيراً PIN.

تعديلات PIN

  • aflpin - AFL مع Intel PIN Instrumentation.
  • afl_pin_mode - أجهزة AFL أخرى تنفذ من خلال Intel PIN.
  • afl-pin - AFL with PINtool.
  • NaFl - استنساخ (من النواة الأساسية) من fuzzer AFL.
  • حاول PinAFL - مؤلف الأداة نقل AFL إلى Windows لإخفاء الثنائيات المترجمة بالفعل. على ما يبدو ، تم إنجاز الكثير على المروحة في إحدى الليالي ، ثم لم يتم تطوير المشروع. لا يحتوي المستودع على مصادر ، بل يحتوي فقط على ثنائيات تم تجميعها وتعليمات للبدء. لم يتم تحديد إصدار AFL الذي تستند إليه هذه الأداة ، وهو يدعم فقط تطبيقات 32 بت.

كما ترى ، هناك العديد من التعديلات المختلفة ، لكن في الممارسة العملية لا يوجد الكثير من الاستخدامات في الحياة الواقعية.

التعديلات على أساس Dyninst

afl-dyninst - American Fuzzy Lop + Dyninst == AFL blackbox fuzzing. الميزة في هذا الإصدار هي أن البرنامج الذي تمت دراسته مبدئيًا (بدون شفرة المصدر) مُصمم بشكل ثابت (أدوات ثنائية ثابتة ، إعادة كتابة ثنائية ثابتة) باستخدام DynInst ، ومن ثم مُحير بواسطة AFL الكلاسيكية ، التي تعتقد أن البرنامج تم إنشاؤه باستخدام afl-gcc / afl -g ++ / afl-as؛) في النهاية ، يتيح لنا الفرصة للعمل دون شفرة المصدر وبأداء جيد للغاية - كان في السرعة 0.25x مقارنة مع الترجمة الأصلية. هناك ميزة كبيرة على QEMU ، وهي القدرة على التحكم في المكتبات المرتبطة ديناميكيًا. بينما تكون QEMU قادرة فقط على ربط الملف القابل للتنفيذ الرئيسي بشكل ثابت بالمكتبات. لسوء الحظ ، أصبح هذا مناسبًا الآن لنظام تشغيل Linux فقط. لدعم Windows ، هناك حاجة إلى تغييرات في DynInst نفسها والعمل جار هناك .

يمكنك أيضًا الانتباه إلى مثل هذه الشوكة حيث تم ضخها جيدًا عبر العديد من القدرات (دعم هياكل AARCH64 و PPC) والسرعة ؛)

التعديلات على أساس DynamoRIO

  • drAFL - AFL + DynamoRIO = الإغراق بدون مصدر على Linux.
  • afl-dr - تطبيق واحد آخر على أساس DynamoRIO الذي تم بالفعل بتفصيل كبير رسمت على المساحات المفتوحة من Habr.
  • afl-dynamorio - تعديل من vanhauser-thc (مروحة لضخ وتثبيت AFL). يقول عن هذا الإصدار: "قم بتشغيل AFL مع DynamoRIO عندما يتعطل afl-dyninst العادي الوضع الثنائي ووضع qemu -Q ليس خيارًا." من اللطيف ، تتم إضافة دعم ARM و AARCH64 هنا. بخصوص الأداء: DynamoRIO حوالي 10 أبطأ من Qemu ، ~ 25 أبطأ من dyninst - ومع ذلك ، ~ 10 أسرع من Pintool.
  • WinAFL هو الشوكة الأكثر شهرة في نظام التشغيل Windows. (DynamoRIO ، وأيضا وضع syzygy). كان مظهر هذا التعديل مسألة وقت فقط ، لأن الرغبة في تجربة AFL تحت Windows على التطبيقات التي لا توجد بها أكواد مصدر ظهرت للكثيرين. في الوقت الحالي ، يتم تطوير الأداة بفعالية ، وعلى الرغم من استخدام قاعدة كود AFL المتأخرة قليلاً (2.43b وقت كتابة هذا التقرير) ، تم بالفعل العثور على العديد من نقاط الضعف معها (CVE-2016-7212 ، CVE-2017-0073 ، CVE-2017- 0190 ، CVE-2017-11816). تجدر الإشارة إلى أن المطورين الرئيسيين هم متخصصون من فريق Google Zero Project وفريق الضعف والتحديات التابع لـ MSRC ، مما يعطي سبباً للأمل في مزيد من التطوير النشط للمشروع. لتنفيذ برنامج fuzzer ، انتقل المطورون من أدوات تجميع الوقت إلى استخدام أجهزة ديناميكية (استنادًا إلى DynamoRIO) ، والتي من المتوقع أن تؤدي إلى إبطاء تنفيذ البرنامج قيد الدراسة ، لكن الحمل الناتج (مرتين) قابل للمقارنة مع AFL الكلاسيكي في الوضع الثنائي. قام المطورون أيضًا بحل مشكلة بداية طويلة للعملية ، واصفين إياها بوضع الخفق المستمر ، فهم يختارون الوظيفة التي يجب أن تكون مندمجة (عن طريق الإزاحة داخل الملف أو بالاسم إذا كانت الوظيفة معروضة في جدول التصدير) وصكها بطريقة يمكن استدعاؤها في حلقة ، وبالتالي إطلاق عدة عينات من بيانات الإدخال دون إعادة تشغيل العملية. ظهر مقال مثير للاهتمام مؤخرًا أظهر فيه الباحثون كيف وجدوا ~ 50 نقطة ضعف مع حوالي 50 يومًا باستخدام winafl. علاوة على ذلك ، قبل نشر المقالة تقريبًا في WinAFL ، تمت إضافة وضع Intel PT (المزيد حول هذا لاحقًا) - التفاصيل هنا .

قد يلاحظ القارئ المتقدم / المتطور أن هناك تعديلات مع جميع أطر الأجهزة الشعبية ، باستثناء فريدا - إنها كذلك بالفعل. تم العثور على الإشارة الوحيدة لاستخدام Frida مع AFL فقط في Chizpurfle: A Gray-Box Android Fuzzer for تخصيصات خدمة البائعين . كانت نسخة AFL مع Frida مفيدة حقًا لأن Frida يدعم عددًا من هياكل RISC.

يتطلع العديد من الباحثين أيضًا إلى إصدار إطار Scorpio DBI من مُبدع Capstone و Unicorne و Keystone. استنادًا إلى هذا الإطار ، قام المؤلفون أنفسهم بالفعل بصنع (Darko) ، ووفقًا لهم ، استخدموه بنجاح في دمج الأجهزة المدمجة. لمزيد من المعلومات ، راجع الحفر العميق: العثور على 0 يومًا في الأنظمة المضمّنة المزدحمة بتغطية التعليمات البرمجية .

تعديلات على أساس قدرات أجهزة المعالج

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

وبالطبع ، قبل كل شيء ، نتحدث عن إمكانات الأجهزة للمعالج مثل Intel PT (Processor Tracing). والذي يتوفر ابتداءً من الجيل السادس من المعالجات (هذا بدءًا من عام 2015 تقريبًا). بطبيعة الحال ، من أجل استخدام fuzzers التالية ، ستحتاج إلى الأجهزة مع دعم Intel PT المناسب.


الخاتمة


كما لاحظت ، هذا الموضوع يتطور بفعالية. في الوقت نفسه ، هناك مساحة كبيرة للإبداع لإنشاء تعديل جديد ومثير للاهتمام ومفيد لـ AFL.

شكرا لكم على اهتمامكم والاندماج الناجح!

مؤلف مشارك: نيكيتا كنيزهوف

ملحوظة: شكرًا لفريق كامل من مركز البحوث لمساعدتهم في إعداد هذه المواد ، دون خبراتهم ومساعدتهم سيكون من المستحيل تحضير مثل هذا الشيء.

Source: https://habr.com/ru/post/ar435644/


All Articles