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





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





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


آخرین مقالات

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

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

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

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

فازینگ شامل تعداد زیادی تصمیمگیری است که برای به حداکثر رساندن کارایی، به پارامترهای دقیق و از پیشتنظیم شده نیاز دارند. این موضوع به ویژه در فازینگ هستهٔ سیستمعامل اهمیت بیشتری دارد، زیرا (۱) هستههای سیستم عامل بسیار بزرگ و پیچیدهاند، (۲) رابط فراخوانی سیستمی (syscall) خاصی دارند که نیازمند مدیریت ویژه است (مثلاً کدگذاری وابستگیهای صریح بین syscallها)، و (۳) رفتار ورودیها (یعنی تستکیسها) به دلیل ماهیت حالتمند هستهها

فازینگ (Fuzzing) یک تکنیک آزمون نرمافزار است که بدون نیاز به آگاهی از ساختار داخلی برنامه، فضای ورودیهای آن را بهصورت سریع و خودکار کاوش میکند. بنابراین، توسعهدهندگان معمولاً از فازینگ به عنوان بخشی از فرایند یکپارچهسازی آزمون در طول چرخهٔ توسعهٔ نرمافزار استفاده میکنند. با این حال، همین ماهیت جعبه سیاه (black-box) و خودکار بودن فازینگ باعث میشود این روش برای مهاجمانی که به دنبال کشف آسیبپذیریهای روز-صفر (zero-day) هستند

فازینگ جعبه خاکستری هدایت شده (Directed Greybox Fuzzing یا DGF) رویکردی مؤثر است که با استفاده از نقاط هدف از پیش تعریف شده، برای تقویت آزمون نواحی آسیبپذیر کد طراحی شده است. روشهای پیشرفته DGF با بازتعریف و بهینهسازی معیار برازندگی (fitness metric) تلاش میکنند بهصورت دقیق و سریع به نقاط هدف برسند. با این حال، بهینه سازیهای معیار برازندگی عمدتاً بر الگوریتمهای ابتکاری متکی هستند که معمولاً به اطلاعات

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

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

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

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

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

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

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

فازینگ شامل تعداد زیادی تصمیمگیری است که برای به حداکثر رساندن کارایی، به پارامترهای دقیق و از پیشتنظیم شده نیاز دارند. این موضوع به ویژه در فازینگ هستهٔ سیستمعامل اهمیت بیشتری دارد، زیرا (۱) هستههای سیستم عامل بسیار بزرگ و پیچیدهاند، (۲) رابط فراخوانی سیستمی (syscall) خاصی دارند که نیازمند مدیریت ویژه است (مثلاً کدگذاری وابستگیهای صریح بین syscallها)، و (۳) رفتار ورودیها (یعنی تستکیسها) به دلیل ماهیت حالتمند هستهها

فازینگ (Fuzzing) یک تکنیک آزمون نرمافزار است که بدون نیاز به آگاهی از ساختار داخلی برنامه، فضای ورودیهای آن را بهصورت سریع و خودکار کاوش میکند. بنابراین، توسعهدهندگان معمولاً از فازینگ به عنوان بخشی از فرایند یکپارچهسازی آزمون در طول چرخهٔ توسعهٔ نرمافزار استفاده میکنند. با این حال، همین ماهیت جعبه سیاه (black-box) و خودکار بودن فازینگ باعث میشود این روش برای مهاجمانی که به دنبال کشف آسیبپذیریهای روز-صفر (zero-day) هستند

فازینگ جعبه خاکستری هدایت شده (Directed Greybox Fuzzing یا DGF) رویکردی مؤثر است که با استفاده از نقاط هدف از پیش تعریف شده، برای تقویت آزمون نواحی آسیبپذیر کد طراحی شده است. روشهای پیشرفته DGF با بازتعریف و بهینهسازی معیار برازندگی (fitness metric) تلاش میکنند بهصورت دقیق و سریع به نقاط هدف برسند. با این حال، بهینه سازیهای معیار برازندگی عمدتاً بر الگوریتمهای ابتکاری متکی هستند که معمولاً به اطلاعات

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

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

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