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

دسته‌بندی

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

Vulnerlab - والنرلب - SoK - فازینگ - فازر - Fuzzing - bug - آسیب‌ پذیری‌ - باگ‌ - پوشش کد - Code Coverage

SoK: مطالعه نظام‌مند یکپارچه‌سازی و بازتولید دستاوردهای پژوهشی فازینگ در ++AFL

چکیده – فازینگ (Fuzzing) به یکی از مؤثرترین تکنیک‌های خودکار برای کشف آسیب‌پذیری‌ها و باگ‌های (bug) نرم‌افزاری تبدیل شده است. با وجود سال‌ها پژوهش که جنبه‌های مختلف این حوزه را هدف قرار داده‌اند، ارزیابی میزان پیشرفت واقعی فازینگ در گذر زمان همچنان چالش‌برانگیز است. در این مقاله، ما یک تحلیل تجربی در مقیاس وسیع از روند پیشرفت فازینگ ارائه می‌دهیم که بر پایه ++AFL انجام شده است؛ پیشرفته‌ترین فازری که

مطالعه مقاله
والنرلب - vulnerlab- فازینگ - Fuzzing - فازرهای هدایت‌ شده با پوشش کد - coverage-guided fuzzers

چالش‌های حل نشده حوزه فازینگ: دام‌ها، نقاط کور و درس‌های آموخته ‌شده از دنیای واقعی

چکیده – فازینگ (Fuzzing) در سال‌های اخیر به یکی از مؤثرترین و پرکاربردترین روش‌های کشف خودکار آسیب‌پذیری‌های نرم‌افزاری تبدیل شده است. با این حال، علی‌رغم انتشار پژوهش‌های فراوان و توسعه مستمر ابزارها و تکنیک‌های جدید، به نظر می‌رسد پیشرفت عملی این حوزه متوقف یا کُند شده است.. بسیاری از فازرها (Fuzzers) مدعی بهبود کارایی از طریق به‌کارگیری روش‌ها و تکنیک‌های پیچیده هستند، اما میزان اثربخشی واقعی این نوآوری‌ها در سناریوهای

مطالعه مقاله
vulnerlab - والنرلب- مقایسه ابزارهای SAST - ابزار تحلیل ایستا کد - بهترین ابزار SAST - تحلیل امنیت کد C و C++ - بررسی ابزارهای امنیت - سورس کد

تحلیل و مقایسه برخی ابزارهای تحلیل ایستای امنیت کد (SAST) برای زبان های C++/C و ارائه چارچوبی برای رتبه‌بندی آن‌ها

چکیده – تحلیل ایستای امنیتی کد منبع (Static Application Security Testing – SAST) یکی از رویکردهای بنیادی برای تضمین امنیت نرم‌افزار در مراحل اولیه چرخه حیات توسعه محسوب می‌شود. با افزایش اندازه و پیچیدگی سامانه‌های نرم‌افزاری، به‌ویژه در معماری‌های توزیع‌شده و مبتنی بر میکروسرویس‌ها، سطح حمله گسترش یافته و شناسایی آسیب‌پذیری‌ها در سطح کد با دشواری بیشتری همراه شده است. این پژوهش به بررسی تطبیقی یازده ابزار تحلیل ایستای امنیت

مطالعه مقاله
فازینگ -فازینگ جعبه ‌سفید - Fuzzing- Whitebox Fuzzing- والنرلب - vulnerlab

فازینگ جعبه ‌سفید مبتنی بر مدل برای باینری‌های برنامه

چکیده – بسیاری از برنامه‌های دنیای واقعی، فایل‌های بسیار ساختاریافته (highly structured) و پیچیده را به عنوان ورودی دریافت می‌کنند. آزمون خودکار چنین برنامه‌هایی، مسئله‌ای پیچیده و غیر بدیهی است. چنانچه ورودی آزمون با قالب فایل مشخص مطابقت نداشته باشد، برنامه یک خطای تجزیه‌گر (parser error) بازمی‌گرداند. در فازینگ جعبه ‌سفید مبتنی بر اجرای نمادین (symbolic execution-based whitebox fuzzing)، کدهای مربوط به مدیریت این خطاها می‌توانند به یک عامل اتلاف

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

مطالعه مقاله
Vulnerlab - والنرلب - SoK - فازینگ - فازر - Fuzzing - bug - آسیب‌ پذیری‌ - باگ‌ - پوشش کد - Code Coverage

SoK: مطالعه نظام‌مند یکپارچه‌سازی و بازتولید دستاوردهای پژوهشی فازینگ در ++AFL

چکیده – فازینگ (Fuzzing) به یکی از مؤثرترین تکنیک‌های خودکار برای کشف آسیب‌پذیری‌ها و باگ‌های (bug) نرم‌افزاری تبدیل شده است. با وجود سال‌ها پژوهش که جنبه‌های مختلف این حوزه را هدف قرار داده‌اند، ارزیابی میزان پیشرفت واقعی فازینگ در گذر زمان همچنان چالش‌برانگیز است. در این مقاله، ما یک تحلیل تجربی در مقیاس وسیع از روند پیشرفت فازینگ ارائه می‌دهیم که بر پایه ++AFL انجام شده است؛ پیشرفته‌ترین فازری که

مطالعه مقاله
والنرلب - vulnerlab- فازینگ - Fuzzing - فازرهای هدایت‌ شده با پوشش کد - coverage-guided fuzzers

چالش‌های حل نشده حوزه فازینگ: دام‌ها، نقاط کور و درس‌های آموخته ‌شده از دنیای واقعی

چکیده – فازینگ (Fuzzing) در سال‌های اخیر به یکی از مؤثرترین و پرکاربردترین روش‌های کشف خودکار آسیب‌پذیری‌های نرم‌افزاری تبدیل شده است. با این حال، علی‌رغم انتشار پژوهش‌های فراوان و توسعه مستمر ابزارها و تکنیک‌های جدید، به نظر می‌رسد پیشرفت عملی این حوزه متوقف یا کُند شده است.. بسیاری از فازرها (Fuzzers) مدعی بهبود کارایی از طریق به‌کارگیری روش‌ها و تکنیک‌های پیچیده هستند، اما میزان اثربخشی واقعی این نوآوری‌ها در سناریوهای

مطالعه مقاله
vulnerlab - والنرلب- مقایسه ابزارهای SAST - ابزار تحلیل ایستا کد - بهترین ابزار SAST - تحلیل امنیت کد C و C++ - بررسی ابزارهای امنیت - سورس کد

تحلیل و مقایسه برخی ابزارهای تحلیل ایستای امنیت کد (SAST) برای زبان های C++/C و ارائه چارچوبی برای رتبه‌بندی آن‌ها

چکیده – تحلیل ایستای امنیتی کد منبع (Static Application Security Testing – SAST) یکی از رویکردهای بنیادی برای تضمین امنیت نرم‌افزار در مراحل اولیه چرخه حیات توسعه محسوب می‌شود. با افزایش اندازه و پیچیدگی سامانه‌های نرم‌افزاری، به‌ویژه در معماری‌های توزیع‌شده و مبتنی بر میکروسرویس‌ها، سطح حمله گسترش یافته و شناسایی آسیب‌پذیری‌ها در سطح کد با دشواری بیشتری همراه شده است. این پژوهش به بررسی تطبیقی یازده ابزار تحلیل ایستای امنیت

مطالعه مقاله
فازینگ -فازینگ جعبه ‌سفید - Fuzzing- Whitebox Fuzzing- والنرلب - vulnerlab

فازینگ جعبه ‌سفید مبتنی بر مدل برای باینری‌های برنامه

چکیده – بسیاری از برنامه‌های دنیای واقعی، فایل‌های بسیار ساختاریافته (highly structured) و پیچیده را به عنوان ورودی دریافت می‌کنند. آزمون خودکار چنین برنامه‌هایی، مسئله‌ای پیچیده و غیر بدیهی است. چنانچه ورودی آزمون با قالب فایل مشخص مطابقت نداشته باشد، برنامه یک خطای تجزیه‌گر (parser error) بازمی‌گرداند. در فازینگ جعبه ‌سفید مبتنی بر اجرای نمادین (symbolic execution-based whitebox fuzzing)، کدهای مربوط به مدیریت این خطاها می‌توانند به یک عامل اتلاف

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

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