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





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





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


آخرین مقالات

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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