آزمایشگاه تخصصی آپا دانشگاه فردوسی مشهد::FUM CERT Lab. (Computer Emergency Response Team)

اصلی >> Other

سوال: برای محافظت از اشاره‌گرها از چه ابزارهایی می‌توان استفاده کرد؟
پاسخ:

ابزار PointGuard از روش‌های کامپایلری برای محافظت از اشاره‌گرها استفاده می‌کند. PointGuard اشاره‌گرها را هنگام ذخيره‌سازی در حافظه رمزگذاري می‌کند و تنها زماني آن‌ها را رمزگشايي می‌کند که در ثبات‌ها بار مي‌شوند. بنابراین این ابزار از اشاره‌گرها محافظت کرده و در مقابل بسياري از حملات سرريزي بافر مقاوم است. همچنین PointGuard کمترين سربار کارآيي را به سیستم تحميل مي‌کند. اين تکنيک وابسته به اين است که اشاره‌گرها هميشه قبل از استفاده، درون ثبات بار شوند.

(ارسال کننده: محبوبه دادخواه و مریم مهرنژاد)


سوال: پیاده‌سازی ASLR در وصله‌ی کرنل لینوکس PaX چگونه است؟
پاسخ:

PaX برای پياده‌سازي ASLR از 16 و يا 24 بيت استفاده می‌کند. از آنجایی که تعداد بیت‌های استفاده شده برای تصادفی‌سازی بیشتر از تعداد آن‌ها در پیاده‌سازی ویندوز ویستا از ASLR است، محافظت فراهم شده توسط آن نیز کاراتر می‌باشد.

(ارسال کننده: محبوبه دادخواه و مریم مهرنژاد)


سوال: پیاده‌سازی ASLR سیستم عامل ویندوز مایکروسافت چگونه است؟
پاسخ:

تکنیک ASLR برای نسخه‌های قبلی سیستم عامل ویندوز مایکروسافت به صورت محصولات مستقل و یا بخشی از سیستم‌های جلوگیری از نفوذ وجود داشته ‌است. ویندوز ویستا و ویندوز سرور 2008 نیز ASLR را به صورت پیش‌فرض فعال می‌کنند. در اين پياده‌سازي، هيپ و پشته‌ي همه‌ی برنامه‌ها و تمام فايل‌هاي EXE و DLL که همراه با سيستم عامل عرضه مي‌گردند، تصادفي‌سازي مي‌شوند. در ASLR ویندوز ویستا از 8 بيت آدرس، يعني 256 مکان برای تصادفی‌سازی استفاده می‌شود. از آن جایی که کارآيي روش ASLR به تعداد بيت‌هاي مورد استفاده براي تصادفي‌سازي بستگی دارد، ASLR ویندوز ویستا از کارآیی خوبی برخوردار نیست. در طراحی ASLR در ویندوز ویستا بعضی از پارامترهای نقشه‌ی فضای آدرس مانند PEB، مکان پشته و هیپ یک‌ بار در هر اجرای برنامه انتخاب می‌شوند. پارامترهای دیگر مانند مکان کد برنامه، سگمنت داده، سگمنت BSS و کتابخانه‌ها تنها بعد از بوت کردن مجدد سیستم تغییر می‌کنند.

(ارسال کننده: محبوبه دادخواه و مریم مهرنژاد)


سوال: تصادفي‌سازي نقشه‌ي فضاي آدرس (ASLR) چیست؟
پاسخ:

ASLR مخفف Address Space Layout Randomization می‌باشد. در این روش نواحی کلیدی حافظه همانند آدرس پایه کد برنامه اجرایی، مکان کتابخانه‌ها، مکان پشته و مکان هیپ به صورت تصادفی تغییر مکان داده می‌شوند. بدین ترتیب مهاجم نمی‌تواند آدرس‌های مورد نیاز برای سوءاستفاده را به آسانی پیش‌بینی نماید و به دلیل پنهان بودن آدرس حافظه‌ی مورد نیاز، مهاجم باید آدرس‌ها را حدس بزند. از طرفی به دلیل ازکار افتادن برنامه بازیابی یک حدس نادرست غیرممکن می‌باشد.

(ارسال کننده: محبوبه دادخواه و مریم مهرنژاد)


سوال: تکنیک قناری در روش‌های کامپایلری چیست؟
پاسخ:

قناري يک مقدار معین است که بين بافر و داده‌هاي کنترلي روي پشته قرار مي‌گيرد تا سرريزي بافر را تشخیص دهد. یکی از روش‌هاي استفاده از قناری، درج کردن آن قبل از آدرس بازگشت ذخيره شده روي پشته و سپس بررسي آن در epilog تابع مي‌باشد. در صورتی که سرریزی بافر باعث تغییر آدرس بازگشت تابع شود، حتما قبل از آن مقدار قناري خراب شده است. مسأله‌ي مهمي که در مورد قناری وجود دارد اين است که مهاجم نتواند مقدار آن را حدس بزند و نيز نتواند آن را در رشته‌ي سرريزي تعبيه کرده و بازنويسي نمايد.

(ارسال کننده: محبوبه دادخواه و مریم مهرنژاد)


سوال: چرا به حمله‌ي بازگشت به کتابخانه عموما بازگشت به libc گفته مي‌شود؟
پاسخ:

اين حمله براي اولين بار در سيستم عامل لينوکس رخ داد. libc نام کتابخانه‌ي استاندارد C در لينوکس است. اين کتابخانه حاوي توابع آسيب‌پذير زيادي از قبيل ()printf و توابع مهمي از قبيل ()system مي‌باشد.

(ارسال کننده: مریم مهرنژاد و  محبوبه دادخواه)


سوال: چگونه می‌توان از تکنیک ASLR در لینوکس استفاده کرد؟
پاسخ:

بهتر است از وصله‌های کرنلی لینوکس که به این منظور طراحی شده‌اند استفاده شود. به عنوان مثال grsecurity یک مجموعه‌ی متن باز و رایگان از وصله‌های کرنل لینوکس است که بر افزایش امنیت سیستم تاکید دارد. grsecurity شامل چند ویژگی اصلی می‌باشد. یکی از مهمترین آن‌ها وصله‌ی PaX است. PaX یک وصله‌ی کرنلی برای سیستم عامل لینوکس است که سیاست حداقل امتیازات را پیاده‌سازی می‌کند. PaX با اعمال کنترل‌های دسترسي به حافظه و تصادفي‌سازي نقشه‌ي حافظه (ASLR) از اجراي کد حمله جلوگيري مي‌کند.

(ارسال کننده: محبوبه دادخواه و مریم مهرنژاد)


سوال: حملات سرريزي بافر به چه علت رخ مي‌دهند؟
پاسخ:

حملات سرريزي بافر ناشي از اشتباهات برنامه‌نويس در استفاده از توابع زبان‌هاي برنامه‌نويسي مثل C مي‌باشند. در برخي از زبان‌هاي برنامه‌نويسي محدوده‌ي داده‌هاي ورودي/خروجي بسياري از توابع توسط خود تابع کنترل نمي‌شود. به همين علت سرريزي بافر به راحتي در کدهاي آسيب‌پذيري که حاوي اين توابع باشند، قابل رخ دادن است. برخي از اين توابع آسيب‌پذير عبارتند از: ()strcat(), strcpy(), sprintf(), strnopy(), gets(), scanf

(ارسال کننده: مریم مهرنژاد و محبوبه دادخواه)


سوال: حمله‌ي سرريزي بافر اولين بار توسط چه کسي و در کجا مورد استفاده قرار گرفت؟
پاسخ:

تاريخ به وجود آمدن حمله‌ي سرريزي بافر به کرم معروف موريس در سال 1988 ميلادی بر مي‌گردد. اين کرم توسط آقاي موريس طراحي شد و از سرريزي بافر در سرويس fingerd سيستم‌هاي لينوکس استفاده مي‌کرد.

(ارسال کننده: مریم مهرنژاد و محبوبه دادخواه)


سوال: حمله‌ي سرريزي بافر مبتني بر پشته چگونه رخ مي‌دهد؟
پاسخ:

سيستم‌های عامل به منظور پردازش فايل‌هاي اجرايي فضايي را به هر پردازه اختصاص مي‌دهند. هر فايل اجرايي شامل توابع مختلف است که اين توابع ممکن است به طور مستقل از هم يا به صورت متداخل در طول اجراي برنامه فراخواني شوند. براي اجراي جريان صحيح برنامه، به هر تابع فراخواني شده در زمان اجرا فضايي به نام قاب پشته روي پشته‌ي برنامه اختصاص داده مي‌شود. قاب پشته‌ي هر تابع شامل: آرگومان‌هاي تابع، متغيرهاي محلي تابع، اشاره‌گر قاب پشته‌ي قديمي (يعني تابع فراخواني کننده) و آدرس برگشت تابع مي‌باشد. معمولا مهاجم پس از کشف کد آسيب‌پذير، ابتدا بافرهاي روي پشته را سرريز مي‌کند و پس از بازنويسي اشاره‌گر پايه‌ي قديمي به سراغ آدرس برگشت تابع مي‌رود. مهاجم با تنظيم دقيق داده‌ها، طوري آدرس برگشت را بازنويسي مي‌کند که به کد تزريق‌شده‌ي خود در حافظه اشاره کند.

(ارسال کننده: مریم مهرنژاد و محبوبه دادخواه)


سوال: روش‌های جلوگیری از حملات سرریزی بافر توسط کامپایلر چگونه است؟
پاسخ:

روش‌هاي کامپايلري متعددی برای تشخیص و جلوگيري از حملات سرريزي بافر پیشنهاد شده‌اند. يکي از اين روش‌ها بررسی حدود مرزي آرايه‌ها است که يکي از موثرترين روش‌هاي محافظت در مقابل حملات سرريزي بافر محسوب می‌شود. يکي ديگر از روش‌هاي کامپايلري جلوگيري از سرريزي بافر بررسي صحت داده‌های کنترلی است. برای بررسی صحت داده‌های کنترلی تکنیک‌های متعددی پیشنهاد شده است. يکي از پرکاربردترين اين تکنيک‌ها استفاده از مقادير قناري (Canary) مي‌باشد.

(ارسال کننده: محبوبه دادخواه و مریم مهرنژاد)


سوال: قناري XOR تصادفي در روش‌های کامپایلری جلوگیری از حملات سرریزی بافر چیست؟
پاسخ:

این قناری همانند قناري تصادفي می‌باشد با این تفاوت که مقدار آن با تمام يا بخشي از داده‌هاي کنترلي ذخيره ‌شده XOR مي‌گردد.

(ارسال کننده: محبوبه دادخواه و مریم مهرنژاد)


سوال: قناري تصادفي در روش‌های کامپایلری جلوگیری از حملات سرریزی بافر چیست؟
پاسخ:

این قناري مقدار خود را از يک متغير سراسري مي‌گيرد. مقدار اين متغير سراسري با هر بار اجرای برنامه به صورت تصادفی تعیین می‌شود. براي جلوگيري از نوشتن در متغير سراسري از تکنيک‌هاي محافظت حافظه از قبیل احاطه‌ي متغير با صفحات غيرقابل نگاشت استفاده مي‌شود.

(ارسال کننده: محبوبه دادخواه و مریم مهرنژاد)


سوال: کارایی ASLR چگونه است؟
پاسخ:

ASLR سعی می‌کند احتمال موفقیت مهاجم در درست حدس زدن مکان نواحی تصادفی‌سازی شده را کاهش دهد. بنابراین، با گسترش فضای جستجو می‌توان امنیت را افزایش داد. هرچه آنتروپی آفست‌های تصادفی بیشتر باشد، تصادفی‌سازی فضای آدرس موثرتر و کاراتر می‌گردد. آنتروپی آفست‌ها را می‌توان با دو روش گسترش فضای حافظه‌ی مجازی که تصادفی‌سازی بر روی آن انجام می‌گیرد و کاهش فواصل زمانی تصادفی‌سازی افزایش داد.

(ارسال کننده: محبوبه دادخواه و  مریم مهرنژاد)


صفحه اصلی | تماس با ما | معرفی آزمایشگاه | ورود
©2017 Ferdowsi University Of Mashhad
مرکز آپا | آپا | آپا چیست