دسته‌بندی

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

والنرلب - vulnerlab - فازینگ باینری کارآمد -دسترسی به کد منبع - ابزارگذاری ایستا -Performant Binary Fuzzing Static Instrumentation- Source Code

فازینگ باینری کارآمد بدون دسترسی به کد منبع با استفاده از ابزارگذاری ایستا

پیشرفت‌های حوزه آزمون فاز (fuzz testing) باعث شده است که بتوان به‌ صورت ‌ سریع و جامع، خطاهای بحرانی از نظر امنیتی را در سیستم‌های نرم‌افزاری شناسایی کرد. با این حال، برخی از این تکنیک‌ها به دسترسی به کد منبع (source-code) متکی هستند که غالبا بصورت عملی ممکن نیست. ما در این مقاله، به بررسی روش‌هایی می‌پردازیم که بتوانند عمق و کارایی فازرهایی که به کد منبع دسترسی دارند را،

مطالعه مقاله
REDQUEEN - فازینگ - تناظر ورودی با وضعیت - Fuzzing with Input-to-State Correspondence

REDQUEEN: فازینگ با استفاده از تناظر ورودی با وضعیت

آزمون خودکار نرم‌افزار مبتنی بر فازینگ (Fuzzing) در سال‌های اخیر با یک بازگشت و احیای جدی مواجه شده است. به‌ ویژه فازینگ مبتنی بر بازخورد (feedback-driven fuzzing) که به دلیل توانایی آن در انجام کارآمد آزمون‌های تصادفی (randomized testing) با مجموعه‌های ورودی محدود، به رویکردی شناخته‌ شده تبدیل شده است. با وجود پیشرفت‌های فراوان، دو مشکل رایج همچنان وجود دارد: اعداد جادویی (magic numbers) و جمع‌آزماهای تو‌در‌تو (nested checksums). برای

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

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

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

مطالعه مقاله
Code Optimization - کامپایل - LLVM - Clang - بهینه‌ سازی کد - Compiler

فراتر از کامپایل: بررسی کامل LLVM ،Clang و بهینه‌سازی کد

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

مطالعه مقاله
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) میزبان می‌افزاید و سطح حمله جدیدی را در بسترهای ابری ایجاد می‌کند. اگرچه پژوهش‌های پیشین متعددی فازینگ هایپروایزرها را مورد بررسی قرار داده‌اند، اما هیچ‌کدام

مطالعه مقاله
والنرلب - vulnerlab - فازینگ باینری کارآمد -دسترسی به کد منبع - ابزارگذاری ایستا -Performant Binary Fuzzing Static Instrumentation- Source Code

فازینگ باینری کارآمد بدون دسترسی به کد منبع با استفاده از ابزارگذاری ایستا

پیشرفت‌های حوزه آزمون فاز (fuzz testing) باعث شده است که بتوان به‌ صورت ‌ سریع و جامع، خطاهای بحرانی از نظر امنیتی را در سیستم‌های نرم‌افزاری شناسایی کرد. با این حال، برخی از این تکنیک‌ها به دسترسی به کد منبع (source-code) متکی هستند که غالبا بصورت عملی ممکن نیست. ما در این مقاله، به بررسی روش‌هایی می‌پردازیم که بتوانند عمق و کارایی فازرهایی که به کد منبع دسترسی دارند را،

مطالعه مقاله
REDQUEEN - فازینگ - تناظر ورودی با وضعیت - Fuzzing with Input-to-State Correspondence

REDQUEEN: فازینگ با استفاده از تناظر ورودی با وضعیت

آزمون خودکار نرم‌افزار مبتنی بر فازینگ (Fuzzing) در سال‌های اخیر با یک بازگشت و احیای جدی مواجه شده است. به‌ ویژه فازینگ مبتنی بر بازخورد (feedback-driven fuzzing) که به دلیل توانایی آن در انجام کارآمد آزمون‌های تصادفی (randomized testing) با مجموعه‌های ورودی محدود، به رویکردی شناخته‌ شده تبدیل شده است. با وجود پیشرفت‌های فراوان، دو مشکل رایج همچنان وجود دارد: اعداد جادویی (magic numbers) و جمع‌آزماهای تو‌در‌تو (nested checksums). برای

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

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

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

مطالعه مقاله
Code Optimization - کامپایل - LLVM - Clang - بهینه‌ سازی کد - Compiler

فراتر از کامپایل: بررسی کامل LLVM ،Clang و بهینه‌سازی کد

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

مطالعه مقاله
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) میزبان می‌افزاید و سطح حمله جدیدی را در بسترهای ابری ایجاد می‌کند. اگرچه پژوهش‌های پیشین متعددی فازینگ هایپروایزرها را مورد بررسی قرار داده‌اند، اما هیچ‌کدام

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