فازینگ یک تکنیک تست نرمافزار است که شامل ارسال دادههای غیرمنتظره، نامعتبر یا تصادفی به یک برنامه کامپیوتری به منظور یافتن آسیبپذیریها و باگهای امنیتی میشود. این روش به ویژه برای یافتن آسیبپذیریهایی مانند سرریز بافر (buffer overflow)، تزریق کد (code injection) و سایر مشکلات امنیتی مفید است. ما در این گزارش سعی کرده ایم که ابزارهای محبوب فازینگ را براساس پارمترهای مختلف مقایسه کنیم.
نام ابزار | نوع فازینگ | زبان/چارچوب پشتیبانی شده | نقاط قوت | نقاط ضعف | موارد استفاده اصلی |
AFL (American Fuzzy Lop) | Grey-box | C/C++, سایر زبانها با ابزارسازی | – کارایی بالا | – یادگیری اولیه پیچیده | فازینگ برنامههای کاربردی بومی، کتابخانهها |
LibFuzzer | Grey-box | C/C++ (مبتنی بر LLVM) | – ادغام با تست واحد | – نیاز به کد منبع | فازینگ واحدهای کد، تست مداوم |
honggfuzz | Grey-box | چندزبانه (C/C++, Java, Python و …) | – پشتیبانی از سیستمعاملهای مختلف | – مستندات کمتر نسبت به AFL | فازینگ برنامههای چندپلتفرمی |
Peach Fuzzer | Black/Grey-box | چندپروتکلی | – پشتیبانی از پروتکلهای شبکه پیچیده | – پیچیدگی تنظیمات | فازینگ پروتکلهای شبکه، فرمتهای فایل |
Boofuzz | Network | پروتکلهای شبکه | – مبتنی بر Python | – نیاز به دانش پروتکل هدف | فازینگ سرورها و سرویسهای شبکه |
TensorFuzz | AI/ML | TensorFlow | – تخصصی برای مدلهای ML | – محدود به TensorFlow | تست مدلهای یادگیری ماشین |
OWASP ZAP | Web | برنامههای وب | – جامعیت برای تست امنیت وب | – تمرکز کمتر بر فازینگ پیشرفته | فازینگ برنامههای وب و APIها |
Radamsa | Mutation-based | عمومی | – سادگی استفاده |
مقایسه کلی:
- برای برنامههای بومی: AFL و LibFuzzer بهترین گزینهها هستند.
- برای پروتکلهای شبکه: Peach و Boofuzz تخصصیتر عمل میکنند.
- برای سیستمهای هوش مصنوعی: TensorFuzz گزینه تخصصی است.
- برای استفاده عمومی: honggfuzz انعطاف بیشتری دارد.
- برای تستهای سریع: Radamsa ساده و مؤثر است.
ملاحظات انتخاب ابزار:
- برای پروژههای تحقیقاتی: AFL یا LibFuzzer
- برای محیطهای تولیدی: Peach (نسخه تجاری) یا honggfuzz
- برای تست مدلهای ML: TensorFuzz یا DeepHunter
- برای تستهای اولیه: Radamsa یا ZAP
توجه: بسیاری از این ابزارها را میتوان به صورت ترکیبی استفاده کرد تا پوشش بهتری از تستها حاصل شود.