دسته‌بندی

مجموعه مقالات و مطالب تخصصی در خصوص تحلیل و بررسی فایل‌های باینری برای شناسایی آسیب‌پذیری‌ها و ضعف‌های امنیتی.

Fuzzing, binary testing, chunk-based formats, structural mutations - فازینگ، تست دودویی، فرمت‌های مبتنی بر چانک، جهش‌های ساختاری

WEIZZ: فازینگ خودکار جعبه‌ خاکستری برای قالب‌های باینری ساخت‌یافته

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

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

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

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

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

فازینگ: بررسی جامع برای ترسیم نقشه راه

آزمون فازی یا فازینگ (Fuzz testing – Fuzzing) در سال‌های اخیر در شناسایی نقص‌های امنیتی پیشرفت چشمگیری داشته است. این روش تعداد زیادی موارد آزمایشی (test cases)‌ تولید کرده و اجرای آن‌ها را برای یافتن خطاها پایش می‌کند. فازینگ تاکنون هزاران باگ (Bug) و آسیب‌پذیری را در برنامه‌های مختلف شناسایی کرده است. با وجود اثربخشی، هنوز یک تحلیل نظام‌مند از شکاف‌هایی که فازینگ با آن‌ها مواجه است وجود ندارد. فازینگ

مطالعه مقاله
Protocol Fuzzing - فازینگ پروتکل

مروری بر فازینگ پروتکل

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

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

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

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

مطالعه مقاله
Prompt Injection - LLMs -PROMPTFUZZ- Fuzzing

PROMPTFUZZ: بهره‌گیری از تکنیک‌های فازینگ برای ارزیابی مقاومت مدل‌های زبانی بزرگ (LLM) در برابر تزریق پرامپت

مدل‌های زبانی بزرگ (LLM) به دلیل توانایی بالای خود در تولید متونی شبیه به انسان، به طور گسترده در کاربردهای گوناگونی مورد استفاده قرار گرفته‌اند. با این حال، حملات تزریق پرامپت (یا تزریق سریع – prompt injection) که شامل بازنویسی دستورالعمل‌های اصلی مدل با پرامپت‌های مخرب برای دستکاری متن تولید شده است، نگرانی‌های قابل توجهی را در مورد امنیت و قابلیت اطمینان این مدل‌ها ایجاد کرده است. اطمینان از مقاومت

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

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

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

مطالعه مقاله

SYZVEGAS: غلبه بر چالش‌های فازینگ کرنل با استفاده از یادگیری تقویتی

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

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

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

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

مطالعه مقاله
DeepGo - فازینگ -جعبه خاکستری - پیش‌بینانه - هدایت ‌شده - Predictive Directed Greybox Fuzzing

DeepGo: فازینگ جعبه خاکستری پیش‌بینانه و هدایت ‌شده

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

مطالعه مقاله
Fuzzing, binary testing, chunk-based formats, structural mutations - فازینگ، تست دودویی، فرمت‌های مبتنی بر چانک، جهش‌های ساختاری

WEIZZ: فازینگ خودکار جعبه‌ خاکستری برای قالب‌های باینری ساخت‌یافته

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

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

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

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

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

فازینگ: بررسی جامع برای ترسیم نقشه راه

آزمون فازی یا فازینگ (Fuzz testing – Fuzzing) در سال‌های اخیر در شناسایی نقص‌های امنیتی پیشرفت چشمگیری داشته است. این روش تعداد زیادی موارد آزمایشی (test cases)‌ تولید کرده و اجرای آن‌ها را برای یافتن خطاها پایش می‌کند. فازینگ تاکنون هزاران باگ (Bug) و آسیب‌پذیری را در برنامه‌های مختلف شناسایی کرده است. با وجود اثربخشی، هنوز یک تحلیل نظام‌مند از شکاف‌هایی که فازینگ با آن‌ها مواجه است وجود ندارد. فازینگ

مطالعه مقاله
Protocol Fuzzing - فازینگ پروتکل

مروری بر فازینگ پروتکل

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

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

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

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

مطالعه مقاله
Prompt Injection - LLMs -PROMPTFUZZ- Fuzzing

PROMPTFUZZ: بهره‌گیری از تکنیک‌های فازینگ برای ارزیابی مقاومت مدل‌های زبانی بزرگ (LLM) در برابر تزریق پرامپت

مدل‌های زبانی بزرگ (LLM) به دلیل توانایی بالای خود در تولید متونی شبیه به انسان، به طور گسترده در کاربردهای گوناگونی مورد استفاده قرار گرفته‌اند. با این حال، حملات تزریق پرامپت (یا تزریق سریع – prompt injection) که شامل بازنویسی دستورالعمل‌های اصلی مدل با پرامپت‌های مخرب برای دستکاری متن تولید شده است، نگرانی‌های قابل توجهی را در مورد امنیت و قابلیت اطمینان این مدل‌ها ایجاد کرده است. اطمینان از مقاومت

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

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

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

مطالعه مقاله

SYZVEGAS: غلبه بر چالش‌های فازینگ کرنل با استفاده از یادگیری تقویتی

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

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

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

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

مطالعه مقاله
DeepGo - فازینگ -جعبه خاکستری - پیش‌بینانه - هدایت ‌شده - Predictive Directed Greybox Fuzzing

DeepGo: فازینگ جعبه خاکستری پیش‌بینانه و هدایت ‌شده

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

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