
خانه » AFL
آسیب پذیریهای تحلیل شده





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





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


آخرین مقالات

فازینگ (Fuzzing) به عنوان یکی از پرکاربردترین تکنیکهای آزمون نرمافزار، با تولید تعداد زیادی ورودی آزمون (Test Input) میتواند طیف متنوعی از نقاط ضعف موجود در یک برنامه، از جمله باگهای نرمافزاری (Software Bugs) و آسیبپذیریها (Vulnerabilities) را شناسایی کند. به دلیل اثربخشی این روش، فازینگ به عنوان روشی ارزشمند برای کشف و شکار باگ (Bug Hunting) شناخته میشود. در این مقاله، ضمن ارائه مروری بر فازینگ که بر فرآیند کلی

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

فازینگ (Fuzzing) به یکی از مؤثرترین تکنیکهای خودکار برای کشف آسیبپذیریها و باگهای (bug) نرمافزاری تبدیل شده است. با وجود سالها پژوهش که جنبههای مختلف این حوزه را هدف قرار دادهاند، ارزیابی میزان پیشرفت واقعی فازینگ در گذر زمان همچنان چالشبرانگیز است. در این مقاله، ما یک تحلیل تجربی در مقیاس وسیع از روند پیشرفت فازینگ ارائه میدهیم که بر پایه ++AFL انجام شده است؛ پیشرفتهترین فازری که به صورت

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

فازینگ (Fuzzing) مؤثرِ برنامههایی که ورودیهای باینریِ ساختیافته (Structured) مانند فایلهای چندرسانهای را پردازش میکنند، کاری چالشبرانگیز است؛ زیرا این برنامهها انتظار دارند ورودی دقیقاً مطابق یک قالب (Format) بسیار مشخص باشد. با این حال، فازرهای موجود عمدتاً مستقل از قالببندی (format-agnostic) هستند؛ این ویژگی اگرچه آنها را انعطافپذیر میکند، اما در سناریوهایی که رعایت یک قالب خاص ضروری است، کارایی آنها را کاهش میدهد. در اینجا، ابزار FormatFuzzer معرفی

باینریهای WebAssembly اغلب از زبانهای ناایمن از نظر مدیریت حافظه مانند C و ++C کامپایل میشوند. به دلیل وجود مدل حافظهٔ خطی (Linear Memory) در WebAssembly و فقدان برخی مکانیزمهای حفاظتی (مانند stack canary) آسیبپذیریهای حافظه که در سطح کد منبع وجود دارند، در باینریهای کامپایل شدهٔ WebAssembly قابل بهرهبرداری (exploitable) هستند؛ در برخی موارد حتی آسانتر از کد بومی (native code). در این مقاله، مسئلهٔ کشف چنین آسیبپذیریهایی از

امروزه مجازیسازی تودرتو (Nested virtualization) به طور گسترده توسط تأمینکنندگان اصلی خدمات ابری پشتیبانی میشود و به کاربران امکان میدهد از فناوریهای مبتنی بر مجازیسازی در فضای ابری بهرهمند شوند. با این حال، پشتیبانی از مجازیسازی تودرتو به طور قابل توجهی بر پیچیدگی هایپروایزر (hypervisor) میزبان میافزاید و سطح حمله جدیدی را در بسترهای ابری ایجاد میکند. اگرچه پژوهشهای پیشین متعددی فازینگ هایپروایزرها را مورد بررسی قرار دادهاند، اما هیچکدام

فازینگ (Fuzzing) یک تکنیک آزمون نرمافزار است که بدون نیاز به آگاهی از ساختار داخلی برنامه، فضای ورودیهای آن را بهصورت سریع و خودکار کاوش میکند. بنابراین، توسعهدهندگان معمولاً از فازینگ به عنوان بخشی از فرایند یکپارچهسازی آزمون در طول چرخهٔ توسعهٔ نرمافزار استفاده میکنند. با این حال، همین ماهیت جعبه سیاه (black-box) و خودکار بودن فازینگ باعث میشود این روش برای مهاجمانی که به دنبال کشف آسیبپذیریهای روز-صفر (zero-day) هستند

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

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

فازینگ (Fuzzing) به عنوان یکی از پرکاربردترین تکنیکهای آزمون نرمافزار، با تولید تعداد زیادی ورودی آزمون (Test Input) میتواند طیف متنوعی از نقاط ضعف موجود در یک برنامه، از جمله باگهای نرمافزاری (Software Bugs) و آسیبپذیریها (Vulnerabilities) را شناسایی کند. به دلیل اثربخشی این روش، فازینگ به عنوان روشی ارزشمند برای کشف و شکار باگ (Bug Hunting) شناخته میشود. در این مقاله، ضمن ارائه مروری بر فازینگ که بر فرآیند کلی

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

فازینگ (Fuzzing) به یکی از مؤثرترین تکنیکهای خودکار برای کشف آسیبپذیریها و باگهای (bug) نرمافزاری تبدیل شده است. با وجود سالها پژوهش که جنبههای مختلف این حوزه را هدف قرار دادهاند، ارزیابی میزان پیشرفت واقعی فازینگ در گذر زمان همچنان چالشبرانگیز است. در این مقاله، ما یک تحلیل تجربی در مقیاس وسیع از روند پیشرفت فازینگ ارائه میدهیم که بر پایه ++AFL انجام شده است؛ پیشرفتهترین فازری که به صورت

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

فازینگ (Fuzzing) مؤثرِ برنامههایی که ورودیهای باینریِ ساختیافته (Structured) مانند فایلهای چندرسانهای را پردازش میکنند، کاری چالشبرانگیز است؛ زیرا این برنامهها انتظار دارند ورودی دقیقاً مطابق یک قالب (Format) بسیار مشخص باشد. با این حال، فازرهای موجود عمدتاً مستقل از قالببندی (format-agnostic) هستند؛ این ویژگی اگرچه آنها را انعطافپذیر میکند، اما در سناریوهایی که رعایت یک قالب خاص ضروری است، کارایی آنها را کاهش میدهد. در اینجا، ابزار FormatFuzzer معرفی

باینریهای WebAssembly اغلب از زبانهای ناایمن از نظر مدیریت حافظه مانند C و ++C کامپایل میشوند. به دلیل وجود مدل حافظهٔ خطی (Linear Memory) در WebAssembly و فقدان برخی مکانیزمهای حفاظتی (مانند stack canary) آسیبپذیریهای حافظه که در سطح کد منبع وجود دارند، در باینریهای کامپایل شدهٔ WebAssembly قابل بهرهبرداری (exploitable) هستند؛ در برخی موارد حتی آسانتر از کد بومی (native code). در این مقاله، مسئلهٔ کشف چنین آسیبپذیریهایی از

امروزه مجازیسازی تودرتو (Nested virtualization) به طور گسترده توسط تأمینکنندگان اصلی خدمات ابری پشتیبانی میشود و به کاربران امکان میدهد از فناوریهای مبتنی بر مجازیسازی در فضای ابری بهرهمند شوند. با این حال، پشتیبانی از مجازیسازی تودرتو به طور قابل توجهی بر پیچیدگی هایپروایزر (hypervisor) میزبان میافزاید و سطح حمله جدیدی را در بسترهای ابری ایجاد میکند. اگرچه پژوهشهای پیشین متعددی فازینگ هایپروایزرها را مورد بررسی قرار دادهاند، اما هیچکدام

فازینگ (Fuzzing) یک تکنیک آزمون نرمافزار است که بدون نیاز به آگاهی از ساختار داخلی برنامه، فضای ورودیهای آن را بهصورت سریع و خودکار کاوش میکند. بنابراین، توسعهدهندگان معمولاً از فازینگ به عنوان بخشی از فرایند یکپارچهسازی آزمون در طول چرخهٔ توسعهٔ نرمافزار استفاده میکنند. با این حال، همین ماهیت جعبه سیاه (black-box) و خودکار بودن فازینگ باعث میشود این روش برای مهاجمانی که به دنبال کشف آسیبپذیریهای روز-صفر (zero-day) هستند

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

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