Fuzzing تکنیکی است که هم توسط کارشناسان امنیتی و هم هکرها برای یافتن آسیب پذیری های نرم افزار استفاده می شود. در اینجا چیزی است که شما باید بدانید.
آسیب پذیری های نرم افزاری یک مشکل مهم در امنیت سایبری است. آنها اجازه می دهند محصولات نرم افزاری مورد حمله قرار گیرند و زمانی که آن محصولات به شبکه های امن دیگری متصل می شوند، می توانند یک نقطه ورود برای هکرها فراهم کنند.
تمامی محصولات نرم افزاری حرفه ای قبل از انتشار به طور کامل تست می شوند. متأسفانه، آسیب پذیری ها هنوز یک اتفاق رایج هستند. یکی از راههای یافتن آسیبپذیریهای اضافی، استفاده از تکنیک تست نرمافزاری است که به نام fuzzing شناخته میشود.
بنابراین fuzzing چیست و چگونه کار می کند؟
Fuzzing چیست؟
Fuzzing یک تکنیک تست نرم افزار خودکار است که تلاش می کند آسیب پذیری ها را با استفاده از ورودی های تصادفی پیدا کند.
هنگامی که کاربر ورودی غیر از آنچه درخواست شده است، نرم افزار اغلب غیرقابل پیش بینی رفتار می کند. Fuzzing عمل وارد کردن مقادیر زیادی از ورودی های غیرمنتظره و ثبت آنچه اتفاق می افتد است. ایده این است که کاربر میتواند نرمافزار را کنترل کند و تشخیص دهد که آیا آسیبپذیری وجود دارد یا خیر.
Fuzzing برای آزمایش محصولات نرم افزاری و توسط متخصصان امنیتی برای تعیین ایمن بودن شبکه استفاده می شود. همچنین توسط هکرهایی که برای یافتن آسیبپذیریهایی که خودشان میتوانند از آن استفاده کنند، fuzzing را تمرین میکنند، استفاده میشود.
آسیب پذیری های کشف شده توسط fuzzing بسیار متفاوت است. یک ورودی غیرمنتظره ممکن است باعث شود نرم افزار به سادگی از کار بیفتد. اما همچنین ممکن است اطلاعات خصوصی را برگرداند یا به کاربر اجازه دهد به بخشهایی از نرمافزار دسترسی داشته باشد که در غیر این صورت از محدودیت خارج میشوند.
مزایای Fuzzing چیست؟
Fuzzing تنها یکی از راه هایی است که محصولات نرم افزاری را می توان از نظر آسیب پذیری آزمایش کرد. این محبوب است زیرا:
- Fuzzing کاملاً خودکار است. هنگامی که یک برنامه فازی راه اندازی شد، می تواند بدون دخالت انسان به جستجوی آسیب پذیری ها ادامه دهد.
- Fuzzing ممکن است آسیب پذیری هایی را پیدا کند که سایر تکنیک های تست نرم افزار آن را ندارند. به همین دلیل، اغلب علاوه بر تکنیک های دستی استفاده می شود.
- Fuzzing اغلب توسط هکرها برای یافتن آسیبپذیریهای روز صفر استفاده میشود. استفاده از تکنیکهای مشابه هکرها به توسعهدهندگان اجازه میدهد تا آسیبپذیریهای روز صفر را قبل از آن پیدا کنند.
Fuzzing چگونه کار می کند؟
ابزار مورد استفاده برای فازبندی معمولاً دارای سه جزء است. آنها اغلب به عنوان یک شاعر، یک پیک و یک سخنگو نامیده می شوند.
شعر
شاعر این فرآیند را آغاز می کند و مسئول ایجاد یک مورد آزمایشی است. یک مورد آزمایشی فهرستی طولانی از ورودیهای بالقوه است.
پیک
پیک تمام ورودی های تصادفی را در نرم افزار مورد نظر وارد می کند. Fuzzers به گونه ای طراحی شده اند که این کار را به صورت خودکار انجام دهند و اجازه می دهند مقادیر زیادی از ورودی ها به صورت انبوه آزمایش شوند.
اوراکل
اوراکل بررسی میکند که آیا هر یک از ورودیها باعث میشود نرمافزار کاری غیر از آن را انجام دهد که برای آن طراحی شده است. اگر فازسازی برای مقاصد قانونی انجام شود، این رفتار میتواند تکرار و اصلاح شود. یا اگر fuzzing توسط یک هکر انجام شود و رفتار غیر منتظره مفید باشد، ممکن است برای اهداف مخرب استفاده شود.
چگونه مهاجمان از Fuzzing استفاده می کنند؟
Fuzzing یک تکنیک محبوب در بین هکرها است زیرا به آنها اجازه می دهد تا بدون دسترسی به کد منبع، آسیب پذیری های نرم افزار را پیدا کنند. از آنجایی که fuzzing خودکار است، انجام آن نیز آسان است. اگر یک هکر آسیب پذیری را کشف کند، ممکن است بتواند حملات زیر را انجام دهد.
حملات DDoS
اگر fuzzing کشف کند که ورودیهای خاصی برای پردازش نیاز به زمان طولانی دارند، میتوان از این اطلاعات برای راهاندازی یک حمله DDoS استفاده کرد. حمله DDoS شامل ارسال درخواست های زیادی به یک سیستم است که عملکرد آن متوقف می شود. Fuzzing اجازه می دهد تا درخواست ها به گونه ای تنظیم شوند که به بیشترین منابع سیستم برای پاسخ نیاز داشته باشند.
تزریق SQL
حمله تزریق SQL زمانی است که دستورات SQL مخرب به یک برنامه ارسال می شود. اگر این عبارات به درستی پاکسازی نشده باشند، می توانند به مهاجم اجازه دهند تا با پایگاه داده تعامل داشته باشد. این ممکن است به آنها اجازه دهد داده ها را بدزدند یا آن را تغییر دهند. Fuzzing یک ابزار موثر برای تلاش برای مقادیر زیادی از دستورات SQL و تعیین اینکه آیا پاسخ مطلوبی ایجاد می کند یا خیر است.
سرریز بافر
حمله سرریز بافر زمانی است که دادههای بیشتری به بافر یک برنامه اضافه میشود که بتواند آن را مدیریت کند. در این سناریو، این امکان وجود دارد که یک هکر باعث شود آن برنامه کدهای مخرب را اجرا کند. این می تواند برای سرقت داده ها یا دسترسی غیرمجاز استفاده شود. Fuzzing برای یافتن ورودی هایی استفاده می شود که می تواند باعث ایجاد سرریز بافر شود.
انواع Fuzzing
ابزارهای فازی را می توان بر اساس نحوه تولید موارد تست و میزان اطلاعات موجود در مورد سیستم طبقه بندی کرد.
گنگ در مقابل باهوش
fuzzing گنگ به سادگی مقادیر زیادی از ورودی های تصادفی را اضافه می کند. ورودی هایی را انتخاب نمی کند که به احتمال زیاد توسط برنامه پذیرفته شوند. این امر اجرای آن را بدون دانستن چیزی در مورد نرم افزار آسان تر می کند. با این حال، همچنین بسیار ناکارآمد است زیرا اکثر ورودی ها رد می شوند.
fuzzing هوشمند ورودی هایی را ایجاد می کند که برنامه احتمالاً آنها را می پذیرد. این مستلزم آن است که کاربر درک کند که چه قالب ورودی قابل قبول است و سپس مقادیر زیادی ورودی در آن قالب تولید کند. فاز هوشمند نیاز به تلاش بیشتر و دانش محصول برای پیاده سازی دارد، اما به طور قابل توجهی کارآمدتر است.
جهشی در مقابل نسلی
fuzzer های جهشی ورودی هایی را که قبلاً پذیرفته شده بود می گیرند و تغییرات جزئی در آن ایجاد می کنند. این اجازه می دهد تا ورودی هایی تولید شوند که احتمالاً بدون اطلاع از قالب پذیرفته شده پذیرفته می شوند.
فازرهای نسلی بر اساس آنچه در مورد قالب پذیرفته شده شناخته شده است، ورودی های کاملاً جدیدی ایجاد می کنند.
جعبه سفید در مقابل جعبه سیاه
بدون هیچ گونه اطلاعاتی در مورد برنامه در حال آزمایش از جعبه سیاه fuzzing استفاده می شود. این روش نسبت به fuzzing باکس سفید کارایی کمتری دارد، اما می تواند برای هر برنامه ای بدون دسترسی به کد منبع اعمال شود. این باعث محبوبیت آن در بین هکرها می شود.
Fuzzing جعبه سفید از اطلاعات مربوط به برنامه در حال آزمایش برای ایجاد ورودی هایی استفاده می کند که به احتمال زیاد پذیرفته می شوند و آسیب پذیری ایجاد می کنند. این در درجه اول توسط توسعه دهندگان نرم افزار استفاده می شود زیرا موثرتر از fuzzing جعبه سیاه است.
Fuzzing یک ابزار مهم برای جلوگیری از سوء استفاده های روز صفر است
Fuzzing یک روش تست نرم افزار قدرتمند است که توسط توسعه دهندگان نرم افزار، متخصصان امنیتی و هکرها استفاده می شود. اجرای آن به حداقل تلاش نیاز دارد و میتواند آسیبپذیریهایی را بیابد که سایر تکنیکهای تست نرمافزار آن را ندارند.
از نظر امنیتی بسیار مهم است زیرا اغلب برای کشف آسیبپذیریهای روز صفر استفاده میشود. این آسیبپذیریها میتوانند توسط متخصصان امنیتی کشف و برطرف شوند یا توسط هکرها کشف و مورد سوء استفاده قرار گیرند.