کلیه حقوق مطالب متعلق به Vulnerlab است. بازنشر با ذکر منبع مجاز است.

دسته‌بندی

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

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

مطالعه مقاله
معماری کامپایلر - Compiler architecture

معماری کامپایلرها به زبان ساده

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

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

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

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

مطالعه مقاله
فازینگ- فازینگ متنی با استفاده از یادگیری تقویتی

R1-Fuzz: تخصصی‌سازی مدل‌های زبانی برای فازینگ متنی با استفاده از یادگیری تقویتی

فازینگ (fuzzing) روشی مؤثر برای کشف آسیب‌پذیری‌هاست، اما در مواجهه با اهداف پیچیده‌ای مانند کامپایلرها، مفسرها و موتورهای پایگاه داده با چالش مواجه می‌شود؛ چراکه این سیستم‌ها ورودی‌های متنی را می‌پذیرند که باید قیود نحوی و معنایی پیچیده‌ای را رعایت کنند. با وجود آنکه مدل‌های زبانی (LMها یا Language Models) به‌دلیل دانش نهفته‌ی گسترده و توانایی بالقوه در استدلال، توجه زیادی را برای این وظیفه جلب کرده‌اند، کاربرد عملی آن‌ها

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

مطالعه مقاله
معماری کامپایلر - Compiler architecture

معماری کامپایلرها به زبان ساده

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

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

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

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

مطالعه مقاله
فازینگ- فازینگ متنی با استفاده از یادگیری تقویتی

R1-Fuzz: تخصصی‌سازی مدل‌های زبانی برای فازینگ متنی با استفاده از یادگیری تقویتی

فازینگ (fuzzing) روشی مؤثر برای کشف آسیب‌پذیری‌هاست، اما در مواجهه با اهداف پیچیده‌ای مانند کامپایلرها، مفسرها و موتورهای پایگاه داده با چالش مواجه می‌شود؛ چراکه این سیستم‌ها ورودی‌های متنی را می‌پذیرند که باید قیود نحوی و معنایی پیچیده‌ای را رعایت کنند. با وجود آنکه مدل‌های زبانی (LMها یا Language Models) به‌دلیل دانش نهفته‌ی گسترده و توانایی بالقوه در استدلال، توجه زیادی را برای این وظیفه جلب کرده‌اند، کاربرد عملی آن‌ها

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