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





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





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


آخرین مقالات

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

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

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

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

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

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