
خانه » Grey-box Fuzzing
آسیب پذیریهای تحلیل شده





جدیدترین آزمایشگاه





آخرین مسابقات


آخرین مقالات

چکیده – فازینگ جعبه خاکستری (Greybox Fuzzing) روشی مؤثر برای آزمون نرمافزار محسوب میشود. فازرهای جعبه خاکستری مانند AFL، از ابزارگذاری (Instrumentation) استفاده میکنند که اطلاعات مربوط به پوشش مسیر (Path Coverage) را جمعآوری کرده و از این اطلاعات برای هدایت فرایند فازینگ بهره میگیرند. این ابزارگذاری معمولاً توسط یک زنجیره ابزار کامپایلر اصلاح شده (Modified Compiler Toolchain) در برنامه قرار داده میشود؛ بنابراین، برنامه برای سازگاری با فازینگ جعبه

چکیده – فازینگ جعبهخاکستری هدایت شده مبتنی بر پوشش (Coverage-Guided Greybox Fuzzing) به یکی از رایجترین تکنیکهای کشف باگهای (Bug) نرمافزاری تبدیل شده است. معیار پوشش (Coverage Metric) که نحوه انتخاب بذرهای (Seed) جدید توسط فازر را تعیین میکند، پارامتر اساسی فازینگ است و میتواند به طور قابلتوجهی بر نتایج تأثیر بگذارد. هرچند پژوهشهای متعددی درباره اثربخشی معیارهای پوشش مختلف بر آزمون نرمافزار انجام شده، اما اطلاعات اندکی درباره تأثیر

چکیده – فازینگ جعبه خاکستری (greybox fuzzing) از طریق اثربخشی بیسابقه در شناسایی خودکار خطاها، به بهبود امنیت نرمافزار کمک میکند. موفقیت این رویکرد ناشی از بازخورد پوشش (coverage feedback) استخراج شده از سیستم تحت آزمون (Program Under Test – PUT) است که فازر را برای کاوش بخشهای مختلف برنامه هدایت میکند. رایجترین شیوه استفاده از این بازخورد، جستجوی نوآوریمحور (novelty search) است؛ در این روش، فازر تنها ورودیهایی را

چکیده – فازینگ (Fuzzing) در سالهای اخیر به یکی از مؤثرترین و پرکاربردترین روشهای کشف خودکار آسیبپذیریهای نرمافزاری تبدیل شده است. با این حال، علیرغم انتشار پژوهشهای فراوان و توسعه مستمر ابزارها و تکنیکهای جدید، به نظر میرسد پیشرفت عملی این حوزه متوقف یا کُند شده است.. بسیاری از فازرها (Fuzzers) مدعی بهبود کارایی از طریق بهکارگیری روشها و تکنیکهای پیچیده هستند، اما میزان اثربخشی واقعی این نوآوریها در سناریوهای

چکیده – فناوریهای فازینگ (Fuzzing) در سالهای اخیر با سرعت زیادی تکامل یافتهاند و توانستهاند با عمق و سرعتی روزافزون، باگهای (Bug) برنامهها را آشکار کنند. با این حال، برنامههایی که با قالبهای (Format) پیچیده کار میکنند، چالشبرانگیزتر هستند؛ زیرا ورودیها باید دارای ویژگیهای خاصِ وابسته به قالب باشند تا بتوانند از مرحلهی اولیهی تجزیه (parsing) عبور کرده و به رفتارهای عمیقتر برنامه دست یابند. برخلاف رویکردهای پیشین که بر پایهی

چکیده – پروتکلهای ارتباطی زیربنای جهانِ بههمپیوستهٔ امروز را تشکیل میدهند، اما وجود آسیبپذیری در پیادهسازی آنها تهدیدات امنیتی مهمی را به همراه دارد. تحولات اخیر نشان دهندهٔ رشد چشمگیر پژوهشهای مبتنی بر فازینگ (Fuzzing) برای کشف این آسیبپذیریها در پیادهسازی پروتکلها است. بااینحال، هنوز مرور نظاممندی از فازینگ پروتکل (Protocol Fuzzing) ارائه نشده است که بتواند به پرسشهای اساسی، مانند چالشهای منحصربهفرد این حوزه و شیوهٔ مواجههٔ پژوهشهای موجود

فازینگ شامل تعداد زیادی تصمیمگیری است که برای به حداکثر رساندن کارایی، به پارامترهای دقیق و از پیشتنظیم شده نیاز دارند. این موضوع به ویژه در فازینگ هستهٔ سیستمعامل اهمیت بیشتری دارد، زیرا (۱) هستههای سیستم عامل بسیار بزرگ و پیچیدهاند، (۲) رابط فراخوانی سیستمی (syscall) خاصی دارند که نیازمند مدیریت ویژه است (مثلاً کدگذاری وابستگیهای صریح بین syscallها)، و (۳) رفتار ورودیها (یعنی تستکیسها) به دلیل ماهیت حالتمند هستهها

فازینگ جعبه خاکستری هدایت شده (Directed Greybox Fuzzing یا DGF) رویکردی مؤثر است که با استفاده از نقاط هدف از پیش تعریف شده، برای تقویت آزمون نواحی آسیبپذیر کد طراحی شده است. روشهای پیشرفته DGF با بازتعریف و بهینهسازی معیار برازندگی (fitness metric) تلاش میکنند بهصورت دقیق و سریع به نقاط هدف برسند. با این حال، بهینه سازیهای معیار برازندگی عمدتاً بر الگوریتمهای ابتکاری متکی هستند که معمولاً به اطلاعات

آسیب پذیریهای امنیتی در دستگاههای اینترنت اشیاء (IoT یا Internet-of-Things)، پلتفرمهای موبایل و سیستمهای خودران (autonomous systems) همچنان بحرانی باقی ماندهاند. فازرهای سنتی مبتنی بر جهش (mutation-based fuzzers) با وجود اینکه مسیرهای کد را بهطور مؤثر کاوش میکنند عموماً تغییرات را در سطح بایت یا بیت انجام میدهند و از منطق معنایی غافلاند. ابزارهای مبتنی بر پوشش کد (Coverage-guided tools) مانند ++AFL برای اعمال محدودیتهای ساختاری سطحی، به فرهنگ لغتها (dictionaries)،

۱. مقدمهای بر فازینگ (An Introduction to Fuzzing) فازینگ (Fuzzing) یکی از مؤثرترین روشهای خودکار برای شناسایی باگها (Bug) و آسیبپذیریهای نرمافزاری است که با تولید و ارسال ورودیهای تصادفی، نیمهتصادفی یا ساختیافته، رفتار برنامه را در شرایط غیرعادی مورد بررسی قرار میدهد. هدف اصلی این تکنیک، وادار کردن نرمافزار به پردازش دادههای غیرمنتظره و تحلیل واکنش آن در برابر این ورودیها است تا خطاهایی مانند کرش (Crash)، نشت حافظه

چکیده – فازینگ جعبه خاکستری (Greybox Fuzzing) روشی مؤثر برای آزمون نرمافزار محسوب میشود. فازرهای جعبه خاکستری مانند AFL، از ابزارگذاری (Instrumentation) استفاده میکنند که اطلاعات مربوط به پوشش مسیر (Path Coverage) را جمعآوری کرده و از این اطلاعات برای هدایت فرایند فازینگ بهره میگیرند. این ابزارگذاری معمولاً توسط یک زنجیره ابزار کامپایلر اصلاح شده (Modified Compiler Toolchain) در برنامه قرار داده میشود؛ بنابراین، برنامه برای سازگاری با فازینگ جعبه

چکیده – فازینگ جعبهخاکستری هدایت شده مبتنی بر پوشش (Coverage-Guided Greybox Fuzzing) به یکی از رایجترین تکنیکهای کشف باگهای (Bug) نرمافزاری تبدیل شده است. معیار پوشش (Coverage Metric) که نحوه انتخاب بذرهای (Seed) جدید توسط فازر را تعیین میکند، پارامتر اساسی فازینگ است و میتواند به طور قابلتوجهی بر نتایج تأثیر بگذارد. هرچند پژوهشهای متعددی درباره اثربخشی معیارهای پوشش مختلف بر آزمون نرمافزار انجام شده، اما اطلاعات اندکی درباره تأثیر

چکیده – فازینگ جعبه خاکستری (greybox fuzzing) از طریق اثربخشی بیسابقه در شناسایی خودکار خطاها، به بهبود امنیت نرمافزار کمک میکند. موفقیت این رویکرد ناشی از بازخورد پوشش (coverage feedback) استخراج شده از سیستم تحت آزمون (Program Under Test – PUT) است که فازر را برای کاوش بخشهای مختلف برنامه هدایت میکند. رایجترین شیوه استفاده از این بازخورد، جستجوی نوآوریمحور (novelty search) است؛ در این روش، فازر تنها ورودیهایی را

چکیده – فازینگ (Fuzzing) در سالهای اخیر به یکی از مؤثرترین و پرکاربردترین روشهای کشف خودکار آسیبپذیریهای نرمافزاری تبدیل شده است. با این حال، علیرغم انتشار پژوهشهای فراوان و توسعه مستمر ابزارها و تکنیکهای جدید، به نظر میرسد پیشرفت عملی این حوزه متوقف یا کُند شده است.. بسیاری از فازرها (Fuzzers) مدعی بهبود کارایی از طریق بهکارگیری روشها و تکنیکهای پیچیده هستند، اما میزان اثربخشی واقعی این نوآوریها در سناریوهای

چکیده – فناوریهای فازینگ (Fuzzing) در سالهای اخیر با سرعت زیادی تکامل یافتهاند و توانستهاند با عمق و سرعتی روزافزون، باگهای (Bug) برنامهها را آشکار کنند. با این حال، برنامههایی که با قالبهای (Format) پیچیده کار میکنند، چالشبرانگیزتر هستند؛ زیرا ورودیها باید دارای ویژگیهای خاصِ وابسته به قالب باشند تا بتوانند از مرحلهی اولیهی تجزیه (parsing) عبور کرده و به رفتارهای عمیقتر برنامه دست یابند. برخلاف رویکردهای پیشین که بر پایهی

چکیده – پروتکلهای ارتباطی زیربنای جهانِ بههمپیوستهٔ امروز را تشکیل میدهند، اما وجود آسیبپذیری در پیادهسازی آنها تهدیدات امنیتی مهمی را به همراه دارد. تحولات اخیر نشان دهندهٔ رشد چشمگیر پژوهشهای مبتنی بر فازینگ (Fuzzing) برای کشف این آسیبپذیریها در پیادهسازی پروتکلها است. بااینحال، هنوز مرور نظاممندی از فازینگ پروتکل (Protocol Fuzzing) ارائه نشده است که بتواند به پرسشهای اساسی، مانند چالشهای منحصربهفرد این حوزه و شیوهٔ مواجههٔ پژوهشهای موجود

فازینگ شامل تعداد زیادی تصمیمگیری است که برای به حداکثر رساندن کارایی، به پارامترهای دقیق و از پیشتنظیم شده نیاز دارند. این موضوع به ویژه در فازینگ هستهٔ سیستمعامل اهمیت بیشتری دارد، زیرا (۱) هستههای سیستم عامل بسیار بزرگ و پیچیدهاند، (۲) رابط فراخوانی سیستمی (syscall) خاصی دارند که نیازمند مدیریت ویژه است (مثلاً کدگذاری وابستگیهای صریح بین syscallها)، و (۳) رفتار ورودیها (یعنی تستکیسها) به دلیل ماهیت حالتمند هستهها

فازینگ جعبه خاکستری هدایت شده (Directed Greybox Fuzzing یا DGF) رویکردی مؤثر است که با استفاده از نقاط هدف از پیش تعریف شده، برای تقویت آزمون نواحی آسیبپذیر کد طراحی شده است. روشهای پیشرفته DGF با بازتعریف و بهینهسازی معیار برازندگی (fitness metric) تلاش میکنند بهصورت دقیق و سریع به نقاط هدف برسند. با این حال، بهینه سازیهای معیار برازندگی عمدتاً بر الگوریتمهای ابتکاری متکی هستند که معمولاً به اطلاعات

آسیب پذیریهای امنیتی در دستگاههای اینترنت اشیاء (IoT یا Internet-of-Things)، پلتفرمهای موبایل و سیستمهای خودران (autonomous systems) همچنان بحرانی باقی ماندهاند. فازرهای سنتی مبتنی بر جهش (mutation-based fuzzers) با وجود اینکه مسیرهای کد را بهطور مؤثر کاوش میکنند عموماً تغییرات را در سطح بایت یا بیت انجام میدهند و از منطق معنایی غافلاند. ابزارهای مبتنی بر پوشش کد (Coverage-guided tools) مانند ++AFL برای اعمال محدودیتهای ساختاری سطحی، به فرهنگ لغتها (dictionaries)،

۱. مقدمهای بر فازینگ (An Introduction to Fuzzing) فازینگ (Fuzzing) یکی از مؤثرترین روشهای خودکار برای شناسایی باگها (Bug) و آسیبپذیریهای نرمافزاری است که با تولید و ارسال ورودیهای تصادفی، نیمهتصادفی یا ساختیافته، رفتار برنامه را در شرایط غیرعادی مورد بررسی قرار میدهد. هدف اصلی این تکنیک، وادار کردن نرمافزار به پردازش دادههای غیرمنتظره و تحلیل واکنش آن در برابر این ورودیها است تا خطاهایی مانند کرش (Crash)، نشت حافظه