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





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





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


آخرین مقالات

فازینگ هیبریدی (Hybrid Fuzzing) و اجرای نمادین پویا (Dynamic Symbolic Execution) به بخش حیاتی چرخه حیات توسعه نرمافزار امن تبدیل شدهاند. در حال حاضر، نسبت کدهایی که برای معماریهای ARM و RISC-V توسعه داده میشوند، به طور مداوم در حال افزایش است و وظیفه تحلیل مؤثر آنها را در اولویت قرار میدهد. این مقاله با توسعه روشهای اجرای نمادین پویا و فازینگ هیبریدی برای معماریهای مدرن RISC – «Baikal-M (ARM/AArch64) و

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

مجازیسازی عملکردهای شبکه (Network Function Virtualization) با بهرهگیری از فناوریهای مجازیسازی و سختافزارهای عمومی، میانافزارهای قابلبرنامهریزی درونشبکهای را فراهم میکند و در میان تمامی تولیدکنندگان اصلی تجهیزات شبکه به محبوبیت گستردهای دست یافته است. با این حال، اعمال فازینگ هدایت شده با پوشش (coverage-guided fuzzing) که یکی از پیشرفتهترین روشهای کشف آسیبپذیری به شمار میرود بر روی این تجهیزات شبکه مجازیسازی شده چالشبرانگیز است؛ چرا که این دستگاهها بطور ناگزیر از

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

زمانبندی مؤثر بذر (Seed)، در فازینگ پروتکل شبکه، نقش مهمی در بهبود کارایی آزمایش ایفا میکند. روشهای سنتی زمانبندی بذر مبتنی بر حالت (وضعیت) در فازینگ پروتکل شبکه اغلب با انتخاب بذر نامتوازن، استراتژیهای زمانبندی یکپارچه و تخصیص توان ناکارآمد محدود میشوند. برای غلبه بر این محدودیتها، ما SCFuzz را پیشنهاد میکنیم، به طور خاص با استفاده از یک مدل باندیت چنداهرمـی (Multi-Armed Bandit Model) برای ایجاد تعادل پویا بین

این مقاله به بررسی ادغام تکنیکهای اجرای نمادین (Symbolic Execution) و فازینگ (Fuzzing) برای افزایش تشخیص آسیبپذیریهای نرمافزاری میپردازد. با افزایش پیچیدگی سیستمهای نرمافزاری و تهدیدات امنیتی مرتبط، روشهای سنتی اغلب در کشف آسیبپذیریهای عمیق، ناکارآمد هستند. این مطالعه با ترکیب دامنه وسیع آزمایش فازینگ توسط ابزارهایی مانند LibFuzzer، با تحلیل مسیر دقیق اجرای نمادین از طریق ابزارهایی مانند KLEE، قصد دارد رویکردی قویتر برای تشخیص آسیبپذیری ایجاد کند. این

ماشین مجازی نمادین[1] KLEE بر فراز زیرساخت گردآورنده LLVM ساخته شده[2] است و در حال حاضر دو بخش اصلی وجود دارد: هسته موتور ماشین مجازی نمادین که مسئول اجرای ماژول های بیتکد[3] LLVM با پشتیبانی از مقدارهای نمادین است. این بخش از کدهای موجود در مسیر lib تشکیل شده است. لایه شبیه سازی[4] POSIX و لینوکس که برای پشتیبانی از uClibc ساماندهی شده است و پشتیبانی بیشتری برای نمادین کردن

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

LibFuzzer یک موتور فازینگ (Fuzzing) درونفرآیندی مبتنی بر پوشش کد (Code coverage) و با رویکرد تکاملی است. LibFuzzer همراه با کتابخانهای که قرار است مورد آزمایش قرار گیرد، لینک میشود و ورودیهای فازشده (fuzzed inputs) را از طریق یک نقطهی ورود مشخص برای فازینگ (که به آن «تابع هدف» یا target function نیز گفته میشود) به کتابخانه ارسال میکند. فازر سپس مسیرهای طیشده در کد را ردیابی کرده و با

17. آشنایی با SanitizerStats سنیتایزرها (sanitizer) از يك مكانيزم ساده براي جمعآوري آمار پروفايلينگ (profiling statistics) پشتيباني ميكنند تا درک هزينهها و سربار (overhead) مرتبط با استفاده از سنیتایزرها (sanitizer) را تسهيل كنند. 17.1 نحوه ساخت و اجرا (How to build and run) در حال حاضر SanitizerStats تنها با Control Flow Integrity (CFI)[1] قابل استفاده است. علاوه بر -fsanitize=cfi*، بايد -fsanitize-stats نيز اضافه شود. اين كار باعث ميشود برنامه

فازینگ هیبریدی (Hybrid Fuzzing) و اجرای نمادین پویا (Dynamic Symbolic Execution) به بخش حیاتی چرخه حیات توسعه نرمافزار امن تبدیل شدهاند. در حال حاضر، نسبت کدهایی که برای معماریهای ARM و RISC-V توسعه داده میشوند، به طور مداوم در حال افزایش است و وظیفه تحلیل مؤثر آنها را در اولویت قرار میدهد. این مقاله با توسعه روشهای اجرای نمادین پویا و فازینگ هیبریدی برای معماریهای مدرن RISC – «Baikal-M (ARM/AArch64) و

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

مجازیسازی عملکردهای شبکه (Network Function Virtualization) با بهرهگیری از فناوریهای مجازیسازی و سختافزارهای عمومی، میانافزارهای قابلبرنامهریزی درونشبکهای را فراهم میکند و در میان تمامی تولیدکنندگان اصلی تجهیزات شبکه به محبوبیت گستردهای دست یافته است. با این حال، اعمال فازینگ هدایت شده با پوشش (coverage-guided fuzzing) که یکی از پیشرفتهترین روشهای کشف آسیبپذیری به شمار میرود بر روی این تجهیزات شبکه مجازیسازی شده چالشبرانگیز است؛ چرا که این دستگاهها بطور ناگزیر از

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

زمانبندی مؤثر بذر (Seed)، در فازینگ پروتکل شبکه، نقش مهمی در بهبود کارایی آزمایش ایفا میکند. روشهای سنتی زمانبندی بذر مبتنی بر حالت (وضعیت) در فازینگ پروتکل شبکه اغلب با انتخاب بذر نامتوازن، استراتژیهای زمانبندی یکپارچه و تخصیص توان ناکارآمد محدود میشوند. برای غلبه بر این محدودیتها، ما SCFuzz را پیشنهاد میکنیم، به طور خاص با استفاده از یک مدل باندیت چنداهرمـی (Multi-Armed Bandit Model) برای ایجاد تعادل پویا بین

این مقاله به بررسی ادغام تکنیکهای اجرای نمادین (Symbolic Execution) و فازینگ (Fuzzing) برای افزایش تشخیص آسیبپذیریهای نرمافزاری میپردازد. با افزایش پیچیدگی سیستمهای نرمافزاری و تهدیدات امنیتی مرتبط، روشهای سنتی اغلب در کشف آسیبپذیریهای عمیق، ناکارآمد هستند. این مطالعه با ترکیب دامنه وسیع آزمایش فازینگ توسط ابزارهایی مانند LibFuzzer، با تحلیل مسیر دقیق اجرای نمادین از طریق ابزارهایی مانند KLEE، قصد دارد رویکردی قویتر برای تشخیص آسیبپذیری ایجاد کند. این

ماشین مجازی نمادین[1] KLEE بر فراز زیرساخت گردآورنده LLVM ساخته شده[2] است و در حال حاضر دو بخش اصلی وجود دارد: هسته موتور ماشین مجازی نمادین که مسئول اجرای ماژول های بیتکد[3] LLVM با پشتیبانی از مقدارهای نمادین است. این بخش از کدهای موجود در مسیر lib تشکیل شده است. لایه شبیه سازی[4] POSIX و لینوکس که برای پشتیبانی از uClibc ساماندهی شده است و پشتیبانی بیشتری برای نمادین کردن

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

LibFuzzer یک موتور فازینگ (Fuzzing) درونفرآیندی مبتنی بر پوشش کد (Code coverage) و با رویکرد تکاملی است. LibFuzzer همراه با کتابخانهای که قرار است مورد آزمایش قرار گیرد، لینک میشود و ورودیهای فازشده (fuzzed inputs) را از طریق یک نقطهی ورود مشخص برای فازینگ (که به آن «تابع هدف» یا target function نیز گفته میشود) به کتابخانه ارسال میکند. فازر سپس مسیرهای طیشده در کد را ردیابی کرده و با

17. آشنایی با SanitizerStats سنیتایزرها (sanitizer) از يك مكانيزم ساده براي جمعآوري آمار پروفايلينگ (profiling statistics) پشتيباني ميكنند تا درک هزينهها و سربار (overhead) مرتبط با استفاده از سنیتایزرها (sanitizer) را تسهيل كنند. 17.1 نحوه ساخت و اجرا (How to build and run) در حال حاضر SanitizerStats تنها با Control Flow Integrity (CFI)[1] قابل استفاده است. علاوه بر -fsanitize=cfi*، بايد -fsanitize-stats نيز اضافه شود. اين كار باعث ميشود برنامه