Fuzzing - فازینگ - Software Bugs - باگ‌های نرم‌افزاری - آسیب‌پذیری‌ - Vulnerabilities - تحلیل آلودگی - Taint Analysis

مروری بر وضعیت کنونی دانش و روش‌های پیشرفته فازینگ

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

مطالعه مقاله
Vulnerlab - والنرلب - فازینگ - فازر - Fuzzing - Fuzzer

نوآوری یافت نشد: بررسی سایه‌سازی ورودی در فازینگ از طریق راه‌اندازی مجدد فازر تطبیقی

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

مطالعه مقاله
Vulnerlab - والنرلب - SoK - فازینگ - فازر - Fuzzing - bug - آسیب‌ پذیری‌ - باگ‌ - پوشش کد - Code Coverage

SoK: مطالعه نظام‌مند یکپارچه‌سازی و بازتولید دستاوردهای پژوهشی فازینگ در ++AFL

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

مطالعه مقاله
والنرلب - vulnerlab- فازینگ - Fuzzing - فازرهای هدایت‌ شده با پوشش کد - coverage-guided fuzzers

چالش‌های حل نشده حوزه فازینگ: دام‌ها، نقاط کور و درس‌های آموخته ‌شده از دنیای واقعی

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

مطالعه مقاله
FormatFuzzer - فازینگ - fuzzing

FormatFuzzer: فازینگ مؤثرِ قالب‌های فایل باینری

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

مطالعه مقاله
WebAssembly - فازینگ - fuzzm

Fuzzm: شناسایی آسیب‌پذیری‌های حافظه با استفاده از ابزاربندی در سطح باینری و فازینگ WebAssembly

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

مطالعه مقاله
Nested Virtualization- Fuzzing - مجازی‌ سازی تودرتو - ماشین‌های مجازی فاز هارنس - فازینگ

NecoFuzz: روشی کارآمد برای فازینگ محیط‌های مجازی‌سازی تودرتو با بهره‌گیری از ماشین‌های مجازی مهار فازینگ

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

مطالعه مقاله
فازی ‌سازی - FUZZIFICATION - فازینگ - Fuzzing

فازی‌سازی: تکنیک‌های ضد فازینگ

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

مطالعه مقاله
فازینگ آگاه به معنا - Semantic Aware Fuzzing - مدل‌های زبانی بزرگ - LLM

فازینگ آگاه به معنا: چارچوب تجربی برای جهش ورودی‌های هدایت ‌شده توسط مدل‌های زبانی بزرگ و مبتنی بر استدلال

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

مطالعه مقاله
AFL - فازینگ - Fuzzing

فازر ++AFL

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

مطالعه مقاله
Fuzzing - فازینگ - Software Bugs - باگ‌های نرم‌افزاری - آسیب‌پذیری‌ - Vulnerabilities - تحلیل آلودگی - Taint Analysis

مروری بر وضعیت کنونی دانش و روش‌های پیشرفته فازینگ

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

مطالعه مقاله
Vulnerlab - والنرلب - فازینگ - فازر - Fuzzing - Fuzzer

نوآوری یافت نشد: بررسی سایه‌سازی ورودی در فازینگ از طریق راه‌اندازی مجدد فازر تطبیقی

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

مطالعه مقاله
Vulnerlab - والنرلب - SoK - فازینگ - فازر - Fuzzing - bug - آسیب‌ پذیری‌ - باگ‌ - پوشش کد - Code Coverage

SoK: مطالعه نظام‌مند یکپارچه‌سازی و بازتولید دستاوردهای پژوهشی فازینگ در ++AFL

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

مطالعه مقاله
والنرلب - vulnerlab- فازینگ - Fuzzing - فازرهای هدایت‌ شده با پوشش کد - coverage-guided fuzzers

چالش‌های حل نشده حوزه فازینگ: دام‌ها، نقاط کور و درس‌های آموخته ‌شده از دنیای واقعی

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

مطالعه مقاله
FormatFuzzer - فازینگ - fuzzing

FormatFuzzer: فازینگ مؤثرِ قالب‌های فایل باینری

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

مطالعه مقاله
WebAssembly - فازینگ - fuzzm

Fuzzm: شناسایی آسیب‌پذیری‌های حافظه با استفاده از ابزاربندی در سطح باینری و فازینگ WebAssembly

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

مطالعه مقاله
Nested Virtualization- Fuzzing - مجازی‌ سازی تودرتو - ماشین‌های مجازی فاز هارنس - فازینگ

NecoFuzz: روشی کارآمد برای فازینگ محیط‌های مجازی‌سازی تودرتو با بهره‌گیری از ماشین‌های مجازی مهار فازینگ

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

مطالعه مقاله
فازی ‌سازی - FUZZIFICATION - فازینگ - Fuzzing

فازی‌سازی: تکنیک‌های ضد فازینگ

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

مطالعه مقاله
فازینگ آگاه به معنا - Semantic Aware Fuzzing - مدل‌های زبانی بزرگ - LLM

فازینگ آگاه به معنا: چارچوب تجربی برای جهش ورودی‌های هدایت ‌شده توسط مدل‌های زبانی بزرگ و مبتنی بر استدلال

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

مطالعه مقاله
AFL - فازینگ - Fuzzing

فازر ++AFL

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

مطالعه مقاله
wpChatIcon
wpChatIcon