SlideShare a Scribd company logo
1 of 44
‫های‬ ‫حفاظ‬GCC‫و‬Glibc
‫کارکردآن‬‫و‬‫ی‬‫ساز‬ ‫پیاده‬ ‫نحوه‬ ‫ی‬ ‫س‬‫ر‬‫بر‬
‫گلیانی‬ ‫محمد‬
‫خرداد‬1390
‫باش‬ ‫می‬ ‫نویسنده‬ ‫نام‬ ‫و‬‫منبع‬ ‫ذکر‬ ‫به‬ ‫منوط‬ ‫سند‬‫این‬ ‫از‬ ‫ی‬‫بردار‬ ‫کپی‬ ‫گونه‬ ‫هر‬‫د‬
‫مطالب‬‫فهرست‬
-‫معرفی‬Stack guard
-‫ی‬ ‫س‬‫ر‬‫بر‬‫نحوه‬‫عملکرد‬Stack guard
-‫معرفی‬‫حفاظ‬‫های‬Split Stack‫و‬Stack Shield
-‫ی‬ ‫س‬‫ر‬‫بر‬‫نحوه‬‫عملکرد‬Split stack‫و‬Stack shield
-‫معرفی‬Point Guard
-‫ی‬ ‫س‬‫ر‬‫بر‬‫نحوه‬‫عملکرد‬Point Guard
-‫معرفی‬gcc –Wformatsecurity‫و‬
‫نحوه‬‫کارکرد‬‫آن‬
-‫ی‬ ‫س‬‫ر‬‫بر‬‫حفاظهای‬glibc‫در‬‫د‬‫ر‬‫مو‬‫فضای‬
heap
-‫ی‬ ‫س‬‫ر‬‫بر‬mcheck, mtrace‫و‬‫متغیر‬
‫های‬‫مربوطه‬
-‫جمع‬‫بندی‬
stack guard
-‫این‬‫حفاظ‬‫با‬‫استفاده‬‫از‬‫گزینۀ‬–fstack-protector‫و‬–fstack-protector-all‫به‬‫هنگام‬‫کامپایل‬‫کد‬‫ها‬‫در‬
gcc‫فعال‬‫می‬‫شود‬.
-‫با‬‫استفاده‬‫از‬‫این‬،‫حفاظ‬‫یک‬‫متغیر‬‫د‬‫ر‬‫گا‬‫به‬‫توابعی‬‫که‬‫ی‬‫حاو‬‫موجودیت‬‫های‬‫آسیب‬‫پذیر‬‫هس‬‫تند‬‫اضافه‬
‫می‬‫شود‬.
-‫توابعی‬‫که‬‫ن‬‫و‬‫در‬‫آنها‬‫تخصیص‬‫حافظۀ‬‫پویا‬‫ت‬‫ر‬‫صو‬،‫گرفته‬‫توابعی‬‫که‬‫بافر‬‫بیش‬‫از‬8‫اکتر‬‫ر‬‫کا‬‫ند‬‫ر‬‫دا‬‫و‬...
-‫متغیر‬،‫د‬‫ر‬‫گا‬‫مانی‬‫ز‬‫که‬‫تابع‬‫صدا‬‫ده‬‫ز‬‫می‬،‫شود‬‫دهی‬‫ر‬‫مقدا‬‫اولیه‬‫شده‬‫و‬‫به‬‫هنگام‬‫ج‬‫و‬‫خر‬‫از‬،‫تابع‬‫ی‬ ‫س‬‫ر‬‫بر‬‫می‬
‫شود‬.
-‫در‬‫تی‬‫ر‬‫صو‬‫که‬‫ی‬ ‫س‬‫ر‬‫بر‬،‫د‬‫ر‬‫گا‬‫موفقیت‬‫آمیز‬،‫نباشد‬‫یک‬‫پیام‬‫خطا‬‫نمایش‬‫داده‬‫شده‬‫و‬‫نامه‬‫ر‬‫ب‬‫ب‬‫ه‬‫کار‬‫خود‬
‫پایان‬‫می‬‫دهد‬.
stack guard
-‫متغیر‬‫د‬‫ر‬‫گا‬‫د‬‫ر‬‫مو‬‫استفاده‬‫در‬stack guard،
‫ا‬
‫عمل‬‫پیاده‬‫ی‬‫ساز‬‫ی‬ ‫ش‬‫و‬‫ر‬‫است‬‫که‬‫به‬‫ش‬‫و‬‫ر‬canary(‫ی‬‫قنار‬)
‫ف‬‫و‬‫معر‬‫است‬.
-‫در‬‫این‬،‫ش‬‫و‬‫ر‬‫ی‬‫مقدار‬‫به‬‫عنوان‬‫ی‬‫قنار‬‫بین‬‫محل‬‫ار‬‫ر‬‫ق‬‫ی‬‫گیر‬‫س‬‫ر‬‫آد‬‫برگشت‬‫در‬‫پشته‬‫و‬‫محل‬‫ار‬‫ر‬‫ق‬‫گ‬‫ی‬‫یر‬
‫بافر‬‫در‬‫پشته‬‫ار‬‫ر‬‫ق‬‫داده‬‫می‬‫شود‬.
-‫با‬‫ی‬‫و‬‫ر‬‫دادن‬‫یز‬‫ر‬‫سر‬،‫بافر‬‫قبل‬‫از‬‫اینکه‬‫س‬‫ر‬‫آد‬‫برگشت‬‫ی‬ ‫نویس‬‫ز‬‫با‬،‫شود‬‫مقدار‬‫ی‬‫قنار‬‫نویس‬‫ز‬‫با‬‫ی‬‫خواهد‬
‫شد‬.
-‫به‬‫هنگام‬‫برگشت‬‫با‬‫ی‬ ‫س‬‫ر‬‫بر‬‫مقدار‬‫ی‬‫قنار‬‫می‬‫توان‬‫از‬‫ز‬‫و‬‫بر‬‫یز‬‫ر‬‫سر‬‫آگاه‬‫شده‬‫و‬‫نامه‬‫ر‬‫ب‬‫ا‬‫ر‬‫خاتمه‬‫داد‬.
stack guard
-‫ی‬‫الگو‬‫از‬‫پیش‬‫یف‬‫ر‬‫تع‬‫شده‬‫ای‬‫که‬‫به‬‫عنوان‬‫د‬‫ر‬‫گا‬‫در‬‫نظر‬‫گرفته‬‫می‬،‫شود‬‫ه‬‫ر‬‫هموا‬‫در‬‫یک‬‫آفست‬‫ثابت‬
‫نسبت‬‫به‬‫جیستر‬‫ر‬GS‫ار‬‫ر‬‫ق‬‫می‬‫گیرد‬.
-‫در‬‫سیستم‬‫های‬x86_32،‫این‬‫آفست‬20‫بایت‬‫و‬‫در‬x86_64،40‫بایت‬‫می‬‫باشد‬.
-‫در‬‫سیستم‬‫های‬32،‫بیتی‬‫از‬‫آنجایی‬‫که‬‫از‬GS‫ای‬‫ر‬‫ب‬‫ی‬ ‫دسترس‬‫به‬‫ساختار‬thread‫ها‬‫در‬‫فضای‬‫بر‬‫ر‬‫کا‬
‫استفاده‬‫می‬،‫شود‬‫مقدار‬GS‫به‬‫هنگام‬‫تغییر‬‫مد‬‫ی‬‫کار‬‫به‬‫کرنل‬‫ذخیره‬‫و‬‫در‬،‫بازگشت‬‫یابی‬‫ز‬‫با‬‫می‬‫شود‬.
-‫در‬‫سیستم‬‫های‬64،‫بیتی‬‫ذخیره‬‫ی‬‫ساز‬GS‫با‬‫استفاده‬‫از‬swapgs‫به‬‫هنگام‬‫تغییر‬‫مد‬‫انجام‬‫می‬‫شود‬.
‫پشته‬ ‫فضای‬ IP
(EIP)
‫آسیب‬ ‫بافر‬
‫پذیر‬
‫ی‬‫قنار‬
stack guard
-‫نمای‬‫ی‬
ّ
‫کل‬‫کار‬‫به‬‫ت‬‫ر‬‫صو‬‫یر‬‫ز‬‫است‬:
‫شود‬ ‫می‬ ‫ی‬‫قنار‬‫شدن‬‫اب‬‫ر‬‫خ‬ ‫باعث‬ ‫سرریز‬
‫شده‬ ‫پر‬ ‫بافر‬
‫سرریز‬
‫سرریز‬
‫سرریز‬
‫سرریز‬
‫سرریز‬
‫سرریز‬
‫بافر‬‫واقعی‬‫سایز‬
‫برگ‬ ‫س‬‫ر‬‫آد‬ ‫و‬ ‫بافر‬‫مابین‬ ‫ی‬‫قنار‬‫شت‬
‫گیرد‬ ‫می‬‫ار‬‫ر‬‫ق‬
stack guard
-‫نامۀ‬‫ر‬‫ب‬‫یر‬‫ز‬‫یک‬‫نامۀ‬‫ر‬‫ب‬‫آسیب‬‫پذیر‬‫در‬‫مقابل‬‫یز‬‫ر‬‫سر‬‫بافر‬‫می‬‫باشد‬‫که‬‫به‬‫دو‬‫ت‬‫ر‬‫صو‬‫کامپایل‬‫خ‬‫واهد‬‫شد‬:
-‫کامپایل‬‫با‬‫گزینۀ‬–fstack-protector-all
-‫کامپایل‬‫با‬‫گزینۀ‬–fno-stack-protector
‫ن‬‫بدو‬stack guard
‫به‬‫اخوانی‬‫ر‬‫ف‬ ،‫حالت‬‫این‬ ‫در‬‫که‬ ‫شود‬ ‫می‬ ‫مشاهده‬
‫ادامۀ‬ ،‫آن‬‫از‬‫پس‬ ‫و‬ ‫شده‬‫انجام‬ ‫عادی‬ ‫صورت‬
‫شود‬ ‫می‬‫ا‬‫ر‬‫اج‬‫برنامه‬.
‫از‬ ‫استفاده‬ ‫با‬stack guard
،‫تابع‬‫اخوانی‬‫ر‬‫ف‬‫از‬‫بعد‬ ‫و‬ ‫قبل‬‫حالت‬‫این‬ ‫در‬‫یک‬
‫مرب‬‫که‬ ‫شود‬ ‫می‬‫انجام‬ ‫اضافی‬ ‫عملیات‬ ‫ی‬‫سر‬‫وط‬
‫به‬‫د‬‫ر‬‫گا‬‫متغیر‬‫مقدار‬‫ی‬ ‫بررس‬ ‫و‬‫دهی‬ ‫مقدار‬
stack guard‫شود‬ ‫می‬.
‫از‬ ‫استفاده‬ ‫با‬stack guard
‫درون‬ ،‫د‬‫ر‬‫گا‬‫مقدار‬‫ابتدا‬eax‫و‬ ‫شده‬ ‫داده‬‫ار‬‫ر‬‫ق‬
‫آفست‬ ‫در‬‫آنجا‬‫از‬0xfffffff8‫از‬ebp‫ار‬‫ر‬‫ق‬
‫شود‬ ‫می‬ ‫داده‬.
‫از‬ ‫استفاده‬ ‫با‬stack guard
‫از‬ ‫استفاده‬ ‫با‬stack guard‫آنکه‬‫از‬‫قبل‬ ،
‫برن‬ ‫و‬ ‫شده‬‫انجام‬‫پشته‬ ‫فضای‬ ‫ی‬‫ساز‬‫اد‬‫ز‬‫آ‬‫امه‬
‫ب‬ ‫ی‬‫قنار‬‫قبلی‬ ‫مقدار‬ ،‫دهد‬‫ادامه‬ ‫خود‬ ‫کار‬‫به‬‫ا‬
‫یک‬ ‫با‬ ‫و‬ ‫شده‬‫مقایسه‬‫آن‬ ‫فعلی‬‫مقدار‬jump
‫شو‬ ‫می‬‫گرفته‬ ‫سر‬ ‫از‬‫برنامه‬‫ادامۀ‬ ‫شرطی‬‫و‬ ‫د‬
‫تابع‬ ،‫مغایرت‬ ‫وجود‬ ‫صورت‬ ‫در‬
__stack_chk_fail‫و‬ ‫شده‬ ‫ده‬‫ز‬‫صدا‬
‫سد‬‫ر‬ ‫می‬‫اتمام‬‫به‬ ‫خطا‬‫پیام‬‫با‬‫برنامه‬.
stack guard
-‫کامپایل‬‫و‬‫ای‬‫ر‬‫اج‬‫نامه‬‫ر‬‫ب‬‫با‬‫استفاده‬‫از‬stackguard:
-‫کامپایل‬‫و‬‫ای‬‫ر‬‫اج‬‫نامه‬‫ر‬‫ب‬‫ن‬‫بدو‬‫استفاده‬‫از‬stackguard:
stack guard
-‫ی‬‫متغیر‬‫که‬‫به‬‫عنوان‬‫ی‬‫قنار‬(‫د‬‫ر‬‫گا‬)‫انتخاب‬‫می‬‫شود‬‫باید‬‫ای‬‫ر‬‫دا‬‫ویژگی‬‫هایی‬‫باشد‬‫تا‬‫نفوذگر‬‫ق‬‫ادر‬‫نباشد‬‫به‬
‫هنگام‬،‫یز‬‫ر‬‫سر‬‫ا‬‫ر‬‫آن‬‫معادل‬‫مقدار‬‫قبلی‬‫ی‬ ‫نویس‬‫ز‬‫با‬‫کند‬.
-‫شهایی‬‫و‬‫ر‬‫که‬‫می‬‫توان‬‫در‬‫این‬‫ه‬‫ر‬‫با‬‫به‬‫کار‬‫برد‬‫تند‬‫ر‬‫عبا‬‫از‬:
•‫استفاده‬‫از‬‫مقادیر‬‫متغیر‬‫و‬‫تصادفی‬‫در‬‫هر‬‫ا‬‫ر‬‫اج‬.
•‫استفاده‬‫از‬‫اکترهای‬‫ر‬‫کا‬‫خاتمه‬‫دهندۀ‬‫شته‬‫ر‬‫به‬‫عنوان‬‫متغیر‬‫د‬‫ر‬‫گا‬.
-‫پیاده‬‫ی‬‫ساز‬‫این‬‫تکنیک‬‫تحت‬‫عنوان‬SSP (Stack Smashing Protection)‫یا‬‫همان‬Propolice‫در‬gcc4
‫پیشرفت‬‫هایی‬‫نسبت‬‫به‬stack guard‫داشته‬‫و‬‫به‬‫ی‬‫نحو‬‫است‬‫که‬‫در‬‫ت‬‫ر‬‫صو‬‫وجود‬‫فایل‬‫ایجاد‬‫اعداد‬
‫تصادفی‬(/dev/urandom)،‫از‬‫مقادیر‬‫تصادفی‬‫استفاده‬‫می‬‫شود‬‫و‬‫در‬‫غیر‬‫این‬،‫ت‬‫ر‬‫صو‬‫از‬‫مقادیر‬‫خات‬‫مه‬
‫دهندۀ‬‫شته‬‫ر‬.
stack guard
Split Stack‫و‬Stackshield
-‫یکی‬‫از‬‫دالیلی‬‫که‬‫حملت‬‫یز‬‫ر‬‫سر‬‫بافر‬‫به‬‫ت‬‫ر‬‫صو‬‫موفقیت‬‫آمیز‬‫رخ‬‫می‬،‫دهد‬‫استفاده‬‫از‬‫یک‬‫پشتۀ‬‫واح‬‫د‬‫جهت‬‫ذخیرۀ‬
‫داده‬‫های‬‫کنترلی‬‫و‬‫اطلعات‬‫برنامه‬‫می‬‫باشد‬.
-‫محافظ‬splitstack‫با‬‫تقسیم‬‫کردن‬‫پشتۀ‬‫برنامه‬‫به‬‫دو‬‫قسمت‬‫پشتۀ‬‫کنترلی‬‫و‬‫پشتۀ‬‫داده‬‫عمل‬‫می‬‫کن‬‫د‬.
-‫اطلعاتی‬‫نظیر‬‫داده‬‫های‬‫موقتی‬‫و‬‫آرگومان‬‫های‬‫توابع‬‫در‬‫قسمت‬‫پشتۀ‬‫داده‬‫و‬‫اطلعاتی‬‫نظیر‬‫س‬‫ر‬‫آد‬‫برگ‬‫شت‬‫در‬
‫قسمت‬‫پشتۀ‬‫کنترلی‬‫ذخیره‬‫می‬‫گردد‬.
-‫نمونه‬‫هایی‬‫از‬‫پیاده‬‫ی‬‫ساز‬‫این‬‫ش‬‫و‬‫ر‬‫توسط‬Juan Xu‫و‬‫ان‬‫ر‬‫همکا‬‫در‬‫سطح‬‫کامپایلر‬‫و‬‫پشتیبانی‬‫سخت‬،‫ی‬‫ار‬‫ز‬‫اف‬‫در‬
‫مقاله‬‫ای‬‫با‬‫عنوان‬«ArchitectureSupportforDefendingAgainstBufferOverflowAttacks»‫شرح‬‫داده‬‫شده‬‫است‬.
Split Stack‫و‬Stackshield
-‫م‬‫ز‬‫ال‬‫به‬‫ذکر‬‫است‬‫که‬‫گزینۀ‬–fsplit-stack‫که‬‫توسط‬gcc‫اهم‬‫ر‬‫ف‬،‫شده‬‫امکان‬‫تکه‬‫تکه‬‫شدن‬‫فضای‬‫پشته‬
‫با‬‫خواست‬‫ر‬‫د‬‫نامه‬‫ر‬‫ب‬‫ا‬‫ر‬‫اهم‬‫ر‬‫ف‬‫می‬‫د‬‫ر‬‫آو‬.
-‫پیاده‬‫ی‬‫ساز‬Stackshield،‫از‬‫تکنیکی‬‫نظیر‬split stack‫در‬‫اسمبلر‬‫استفاده‬‫می‬‫کند‬‫بدین‬‫ترتیب‬‫که‬‫یک‬
‫کپی‬‫از‬‫س‬‫ر‬‫آد‬‫برگشت‬‫ا‬‫ر‬‫در‬‫مکانی‬‫که‬‫تحت‬‫تأثیر‬‫یز‬‫ر‬‫سر‬‫ار‬‫ر‬‫ق‬‫نخواهد‬‫گرفت‬‫ار‬‫ر‬‫ق‬‫می‬‫دهد‬‫و‬‫در‬‫ب‬،‫رگشت‬
‫این‬‫مقدار‬‫با‬‫مقدار‬‫فعلی‬‫مقایسه‬‫شده‬‫و‬‫تدبیر‬‫م‬‫ز‬‫ال‬‫اتخاذ‬‫می‬‫گردد‬.
-‫استفاده‬‫از‬Split stack،‫سربار‬‫اضافه‬‫ای‬‫ا‬‫ر‬‫به‬‫سیستم‬‫تحمیل‬‫خواهد‬‫نمود‬‫که‬‫در‬‫مقالۀ‬Xu‫نمونه‬‫هایی‬
‫ائه‬‫ر‬‫ا‬‫شده‬‫است‬.
Point Guard
-Point Guard،‫حفاظی‬‫است‬‫که‬‫با‬‫ی‬‫مزنگار‬‫ر‬‫ه‬‫ر‬‫اشا‬‫گرها‬‫به‬‫هنگام‬‫ذخیره‬‫ی‬‫ساز‬‫در‬،‫حافظه‬‫امکان‬
‫ی‬ ‫نویس‬‫ز‬‫با‬‫آنها‬‫با‬‫مقادیر‬‫قابل‬‫ل‬‫قبو‬‫ا‬‫ر‬‫کاهش‬‫می‬‫دهد‬.
-‫این‬،‫حفاظ‬‫با‬‫اتی‬‫ر‬‫تغیی‬‫که‬‫در‬‫کامپایلر‬‫بوجود‬‫می‬،‫د‬‫ر‬‫آو‬‫ی‬‫مقادیر‬‫نظیر‬EIP‫ا‬‫ر‬‫قبل‬‫از‬‫ار‬‫ر‬‫ق‬‫دادن‬‫در‬‫پشته‬
‫ی‬‫مزنگار‬‫ر‬‫نموده‬‫و‬
‫ا‬
‫دقیقا‬‫قبل‬‫از‬‫ی‬‫ار‬‫ز‬‫بارگ‬‫مجدد‬‫این‬‫مقادیر‬‫در‬‫جیسترهای‬‫ر‬‫مربوطه‬‫در‬CPU،‫آنها‬‫ا‬‫ر‬
‫مزگشایی‬‫ر‬‫می‬‫کند‬.
-‫کلید‬‫مز‬‫ر‬‫نیز‬‫تنها‬‫در‬‫اختیار‬‫سه‬‫و‬‫پر‬‫هایی‬‫ار‬‫ر‬‫ق‬‫خواهد‬‫گرفت‬‫که‬‫از‬‫حافظۀ‬‫اکی‬‫ر‬‫اشت‬‫استفاده‬‫می‬‫کنند‬‫و‬‫این‬
‫کلید‬‫در‬‫مقایسه‬‫با‬‫سایر‬‫اطلعاتی‬‫که‬‫به‬‫اک‬‫ر‬‫اشت‬‫گذاشته‬‫می‬‫شود‬(‫نظیر‬‫ه‬‫ر‬‫اشا‬‫گر‬‫های‬‫فا‬‫یل‬)،‫از‬‫اهمیت‬
‫ی‬‫کمتر‬‫دار‬‫ر‬‫برخو‬‫است‬.
Point Guard
CPU
‫پشته‬ ‫فضای‬
Encrypted
ReturnAddress
‫آسیب‬ ‫بافر‬
‫پذیر‬
‫مکان‬ ‫در‬ ‫خام‬‫مقدار‬‫یک‬ ،‫سرریز‬ ‫دادن‬‫رخ‬ ‫با‬
‫گیرد‬ ‫می‬‫ار‬‫ر‬‫ق‬‫برگشت‬‫س‬‫ر‬‫آد‬.‫هنگام‬‫به‬ ‫مقدار‬‫این‬
‫نمود‬‫خواهد‬ ‫ه‬‫ر‬‫اشا‬ ‫نامعلوم‬ ‫مکانی‬‫به‬ ،‫مزگشایی‬‫ر‬
‫نفوذگر‬‫کد‬‫به‬‫نه‬ ‫و‬
‫شده‬ ‫پر‬ ‫بافر‬
‫سرریز‬
‫سرریز‬
‫در‬‫که‬‫کدی‬‫یا‬‫شلکد‬
‫نفوذگر‬‫نظر‬‫مورد‬‫س‬‫ر‬‫آد‬
‫د‬‫ر‬‫دا‬‫ار‬‫ر‬‫ق‬
‫سرریز‬
‫سرریز‬
‫جدید‬‫س‬‫ر‬‫آد‬
‫بافر‬‫واقعی‬‫سایز‬
CPU‫نام‬ ‫مکانی‬‫به‬ ،‫شده‬‫ی‬ ‫نویس‬‫ز‬‫با‬‫س‬‫ر‬‫آد‬ ‫مزگشایی‬‫ر‬ ‫با‬‫علوم‬
‫در‬ ‫خام‬‫صورت‬‫به‬‫جدید‬ ‫س‬‫ر‬‫آد‬‫که‬‫ا‬‫ر‬‫چ‬ ،‫نمود‬‫خواهد‬ ‫ه‬‫ر‬‫اشا‬
‫نشده‬ ‫ی‬‫مزنگار‬‫ر‬ ‫مناسب‬‫کلید‬‫با‬ ‫و‬‫گرفته‬‫ار‬‫ر‬‫ق‬ ‫حافظه‬‫است‬.
Point Guard
-‫همچنین‬‫این‬‫نوع‬‫حفاظ‬‫با‬‫اسامی‬‫مختلفی‬‫نظیر‬Pointer encryption،Pointer obfuscation‫و‬...‫نیز‬
‫شناخته‬‫می‬‫شود‬.
-‫حفاظ‬point guard‫که‬‫در‬glibc‫به‬‫ر‬‫طو‬‫پیش‬‫فرض‬‫پیاده‬‫ی‬‫ساز‬،‫شده‬‫با‬‫استفاده‬‫از‬‫ی‬‫و‬‫ماکر‬
PTR_MANGLE‫عملیات‬‫مربوطه‬‫ا‬‫ر‬‫انجام‬‫می‬‫دهد‬.
-‫این‬‫و‬‫ماکر‬‫ای‬‫ر‬‫ب‬‫سیستم‬‫های‬i386‫در‬‫س‬‫ر‬‫آد‬/sysdeps/unix/sysv/linux/i386/sysdep.h‫در‬glibc‫و‬
‫ای‬‫ر‬‫ب‬‫سیستم‬‫های‬64‫بیتی‬‫در‬‫س‬‫ر‬‫آد‬/sysdeps/unix/sysv/linux/x86_64/sysdep.h‫در‬glibc‫تعریف‬
‫شده‬‫است‬.
Point Guard
‫های‬ ‫سیستم‬‫در‬‫چه‬ ‫ی‬‫مزنگار‬‫ر‬ ‫عملیات‬32
‫چه‬‫و‬ ‫بیتی‬64‫عملگ‬ ‫از‬ ‫استفاده‬ ‫با‬،‫بیتی‬‫ر‬
Xor‫چپ‬ ‫به‬ ‫گردش‬‫و‬(rol)‫می‬ ‫استفاده‬
‫شود‬.،‫ی‬‫مزنگار‬‫ر‬‫لحاظ‬ ‫از‬ ‫عملیات‬‫این‬
‫رود‬ ‫می‬‫شمار‬‫به‬ ‫ضعیفی‬ ‫عملیات‬
POINTER_GUARD‫مقدار‬ ‫آفست‬ ‫همان‬ ،pointer_guard‫ساختار‬ ‫ابتدای‬‫از‬tcbhead_t‫باشد‬ ‫می‬
‫در‬ ‫که‬ ‫باشد‬ ‫می‬ ‫برنامه‬ ‫های‬ ‫نخ‬ ‫به‬ ‫مربوط‬ ‫ساختار‬‫این‬ ‫و‬nptl/sysdeps/{x86_64,i386}/tls.h‫در‬
glibc‫عمل‬‫در‬ ‫و‬ ‫شده‬ ‫تعریف‬XOR(‫مز‬‫ر‬‫کلید‬ ‫عنوان‬‫به‬)‫گیرد‬ ‫می‬‫ار‬‫ر‬‫ق‬ ‫استفاده‬ ‫مورد‬.
POINTER_GUARD‫گیرد‬ ‫می‬‫ار‬‫ر‬‫ق‬ ‫اکی‬‫ر‬‫اشت‬‫حافظه‬ ‫در‬‫و‬‫شده‬ ‫گرفته‬‫نظر‬‫در‬ ‫مز‬‫ر‬ ‫کلید‬ ‫عنوان‬‫به‬.
Point Guard
-‫پیاده‬‫ی‬‫ساز‬‫این‬‫حفاظ‬‫در‬‫سطوح‬‫مختلفی‬‫امکان‬‫پذیر‬‫است‬.‫پیاده‬‫ی‬‫ساز‬‫د‬‫ر‬‫مو‬‫استفاده‬‫در‬‫مقا‬‫لۀ‬
CrispinCowan‫در‬‫فاز‬‫تولید‬‫کد‬‫میانی‬‫کامپایلر‬‫انجام‬‫شده‬‫است‬(AST‫در‬GCC).
-‫نمونه‬‫هایی‬‫از‬‫پیاده‬‫ی‬‫ساز‬‫این‬‫ش‬‫و‬‫ر‬‫به‬‫اه‬‫ر‬‫هم‬‫شرح‬‫مشکلت‬‫و‬‫نکات‬‫آن‬‫در‬‫مقاله‬‫ای‬‫با‬‫عنوان‬
«Protecting Pointers From Buffer Overflow Vulnerabilities»‫که‬‫توسط‬Immunix‫ائه‬‫ر‬‫ا‬،‫شده‬
‫قابل‬‫ی‬ ‫دسترس‬‫می‬‫باشد‬.
-‫به‬‫ر‬‫طو‬‫ی‬
ّ
‫کل‬‫این‬‫حفاظ‬‫مانی‬‫ز‬‫د‬‫ر‬‫مو‬‫استفاده‬‫ار‬‫ر‬‫ق‬‫می‬‫گیرد‬‫که‬‫نتوان‬‫قسمتهای‬‫د‬‫ر‬‫مو‬‫ی‬‫نظر‬‫از‬‫حافظه‬‫ا‬‫ر‬‫به‬
‫ت‬‫ر‬‫صو‬«‫فقط‬‫خواندنی‬»‫مشخص‬‫نمود‬.
gcc –Wformat-security
-‫این‬‫گزینه‬‫در‬gcc،‫امکان‬‫ی‬ ‫س‬‫ر‬‫بر‬‫استفاده‬‫از‬‫برخی‬‫توابع‬‫آسیب‬‫پذیر‬‫ا‬‫ر‬‫به‬‫هنگام‬‫کامپایل‬‫اهم‬‫ر‬‫ف‬‫م‬‫ی‬‫د‬‫ر‬‫آو‬.
-‫یکرد‬‫و‬‫ر‬‫این‬‫گزینه‬‫بر‬‫تشخیص‬‫استفاده‬‫از‬‫توابعی‬‫است‬‫که‬‫قابلیت‬‫کار‬‫با‬formatstring‫ها‬‫ا‬‫ر‬‫ند‬‫ر‬‫دا‬.
-‫در‬‫حال‬‫حاضر‬‫این‬‫گزینه‬‫ۀ‬‫ر‬‫با‬‫ر‬‫د‬‫استفاده‬‫از‬‫توابع‬printf‫و‬scanf‫به‬‫ت‬‫ر‬‫صو‬‫غیر‬‫صحیح‬‫هشدار‬‫می‬‫دهد‬.
-‫استفاده‬‫ناصحیح‬‫از‬‫ات‬‫ر‬‫عبا‬‫شته‬‫ر‬‫ای‬‫وتوابع‬‫کار‬‫با‬‫آنها‬‫می‬‫تواند‬‫در‬‫تی‬‫ر‬‫صو‬‫که‬‫شتۀ‬‫ر‬‫د‬‫ر‬‫مو‬‫بر‬،‫ی‬ ‫س‬‫ر‬‫از‬‫بر‬‫ر‬‫کا‬
‫یا‬‫از‬‫محلی‬‫غیر‬‫معتمد‬‫یافت‬‫ر‬‫د‬‫شده‬‫و‬‫ی‬‫حاو‬%n،‫باشد‬‫مشکل‬‫امنیتی‬‫بوجود‬‫د‬‫ر‬‫آو‬.
gcc –Wformat-security
‫گزینۀ‬‫از‬‫که‬ ‫صورتی‬ ‫در‬–Wformat‫در‬gcc
‫استفادۀ‬ ‫مورد‬ ‫در‬‫ی‬‫هشدار‬‫پیام‬ ،‫شود‬ ‫استفاده‬
‫از‬‫ناصحیح‬format string‫شود‬ ‫می‬ ‫داده‬‫نشان‬ ‫ها‬.
‫چنین‬ ،‫معمولی‬ ‫کامپایل‬ ‫در‬‫که‬ ‫است‬ ‫حالی‬ ‫در‬‫این‬
‫شود‬‫نمی‬ ‫داده‬‫نمایش‬‫ی‬‫هشدار‬.
glibc heap memory checks
-‫ساختار‬heap،‫و‬‫د‬‫ر‬‫موا‬‫استفاده‬‫از‬‫آن‬‫با‬‫پشته‬‫تفاوت‬‫داشته‬‫و‬‫آسیب‬‫ی‬‫پذیر‬‫های‬‫آن‬‫نیز‬‫اگرچه‬‫به‬‫ه‬‫اه‬‫ر‬‫م‬
‫یز‬‫ر‬‫سر‬‫بافر‬‫در‬،‫پشته‬‫در‬‫یک‬‫ه‬‫و‬‫گر‬‫ار‬‫ر‬‫ق‬‫می‬‫گیرد‬‫لیکن‬‫از‬‫نظر‬‫ی‬‫ساختار‬‫متفاوت‬‫می‬‫باشد‬.
-‫ساختار‬heap،‫یک‬‫ساختار‬‫لیست‬‫پیوندی‬‫می‬‫باشد؛‬‫بدین‬‫تیب‬‫ر‬‫ت‬‫که‬‫خانه‬‫های‬‫خالی‬heap،‫به‬‫صورت‬‫یک‬linked list
‫دوطرفه‬‫با‬‫یکدیگر‬‫در‬‫تباط‬‫ر‬‫ا‬‫هستند‬.
-Heap manager‫با‬‫توجه‬‫به‬‫مشخصات‬‫هریک‬‫از‬‫خانه‬‫های‬heap،‫اطلعات‬‫م‬‫ز‬‫ال‬‫ۀ‬‫ر‬‫با‬‫ر‬‫د‬‫محل‬‫ی‬‫ارگیر‬‫ر‬‫ق‬‫اطلعات‬،‫بعدی‬
‫قبلی‬‫و‬‫مکانهای‬‫خالی‬‫جهت‬‫ی‬‫ارگیر‬‫ر‬‫ق‬‫اطلعات‬‫ا‬‫ر‬‫بدست‬‫می‬‫د‬‫ر‬‫آو‬.
-‫در‬glibc،‫ساختار‬‫خانه‬‫های‬‫خالی‬heap‫و‬‫خانه‬‫های‬‫پر‬(‫در‬‫حال‬‫استفاده‬)‫متفاوت‬‫است‬.
‫وجود‬ ‫صورت‬ ‫در‬‫قبلی‬ ‫فریم‬ ‫اندازۀ‬
‫بایت‬ ‫به‬‫ی‬‫جار‬ ‫فریم‬ ‫اندازۀ‬
‫کاربر‬‫اطلعات‬
‫بایت‬ ‫به‬‫ی‬‫جار‬ ‫فریم‬ ‫اندازۀ‬
(‫قبلی‬ ‫فریم‬ ‫اندازۀ‬)
‫وجود‬ ‫صورت‬ ‫در‬‫قبلی‬ ‫فریم‬ ‫اندازۀ‬
‫بایت‬ ‫به‬‫ی‬‫جار‬ ‫فریم‬ ‫اندازۀ‬
‫لیست‬ ‫بعدی‬ ‫فریم‬ ‫به‬ ‫ی‬‫گر‬ ‫اشاره‬
‫لیست‬‫قبلی‬ ‫فریم‬ ‫به‬ ‫ی‬‫گر‬ ‫اشاره‬
‫خالی‬ ‫فضای‬ ‫یک‬
(‫است‬ ‫ممکن‬0‫باشد‬ ‫بایت‬)
‫بایت‬ ‫به‬‫ی‬‫جار‬ ‫فریم‬ ‫اندازۀ‬
(‫قبلی‬ ‫فریم‬ ‫اندازه‬)
‫ی‬‫حاو‬ ‫خانۀ‬‫یک‬ ‫ساختار‬
‫در‬‫اطلعات‬heap
‫در‬ ‫اد‬‫ز‬‫آ‬ ‫خانۀ‬‫یک‬ ‫ساختار‬
heap
‫جهت‬ ‫و‬ ‫حافظه‬‫های‬‫آدرس‬ ‫ایش‬‫ز‬‫اف‬ ‫جهت‬
‫شدن‬ ‫پر‬heap
‫یکی‬
‫ا‬
‫عمل‬،‫خانه‬ ‫دو‬‫این‬
‫هستند‬
(FOOT،‫قبلی‬ ‫فریم‬
HEAD‫است‬ ‫فعلی‬ ‫فریم‬)
‫گر‬‫اشاره‬chunk‫مورد‬ ،
‫فعال‬‫اکثر‬‫در‬ ‫استفاده‬‫یت‬
‫داخلی‬‫های‬malloc
‫تابع‬ ‫توسط‬‫که‬‫ی‬‫گر‬‫اشاره‬
malloc‫برگردا‬‫کاربر‬ ‫به‬‫نده‬
‫مکان‬‫این‬ ‫به‬ ،‫شود‬‫می‬
‫کند‬‫می‬‫اشاره‬
HEAD
FOOT
Next Chunk
Mem
Chunk
glibc heap memory checks
-‫در‬‫ت‬‫ر‬‫صو‬‫ز‬‫و‬‫بر‬‫یز‬‫ر‬‫سر‬‫در‬heap،‫امکان‬‫ی‬ ‫نویس‬‫ز‬‫با‬‫سهای‬‫ر‬‫آد‬‫کنترلی‬‫و‬‫بافرهای‬‫ر‬‫مجاو‬‫وجود‬‫د‬‫ر‬‫دا‬.
-‫در‬glibc‫تمهیداتی‬‫جهت‬‫کاهش‬‫احتمال‬‫ز‬‫و‬‫بر‬‫ات‬‫ر‬‫مخاط‬‫امنیتی‬heap‫در‬‫نظر‬‫گرفته‬‫شده‬.
-‫این‬‫تمهیدات‬‫که‬‫در‬‫د‬‫ر‬‫مو‬heap‫اعمال‬‫می‬‫شود‬‫در‬‫یک‬‫تقسیم‬‫بندی‬‫ی‬
ّ
‫کل‬‫به‬‫شرح‬‫یر‬‫ز‬‫است‬:
•‫لهایی‬‫ر‬‫کنت‬‫که‬‫به‬‫صورت‬‫پیش‬‫فرض‬‫درون‬glibc‫انجام‬‫شده‬‫و‬‫س‬‫ر‬‫آد‬‫ها‬‫و‬‫مقادیر‬‫ار‬‫ر‬‫ق‬‫گرفته‬‫در‬‫قسمت‬‫های‬‫مختلف‬
‫خانه‬‫های‬heap‫ا‬‫ر‬‫مورد‬‫ی‬ ‫بررس‬‫ار‬‫ر‬‫ق‬‫می‬‫دهد‬.
•‫لهایی‬‫ر‬‫کنت‬‫که‬glibc‫امکان‬‫استفاده‬‫از‬‫آنها‬‫ا‬‫ر‬‫ای‬‫ر‬‫ب‬‫برنامه‬‫نویس‬‫اهم‬‫ر‬‫ف‬‫می‬‫د‬‫ر‬‫آو‬‫تا‬‫در‬‫صورت‬،‫تمایل‬‫مورد‬‫استفا‬‫ده‬‫ار‬‫ر‬‫ق‬
‫گیرد‬(‫توابع‬mchck(),mtrace()‫از‬‫این‬‫دسته‬‫هستند‬).
glibc heap memory checks
‫شدن‬‫کپی‬ ‫هنگام‬‫به‬1000‫بافر‬ ‫اطلعات‬‫بایت‬3‫درون‬
‫بافر‬1‫که‬100،‫د‬‫ر‬‫دا‬ ‫فضا‬‫بایت‬900‫سرریز‬ ‫داده‬‫بایت‬
‫ر‬‫مجاو‬ ‫های‬‫خانه‬ ‫و‬ ‫کرده‬(‫بافر‬ ‫مورد‬‫این‬ ‫در‬2)‫تحت‬ ‫ا‬‫ر‬
‫دهد‬ ‫می‬‫ار‬‫ر‬‫ق‬‫تأثیر‬
Mohammad.Golyani = MAGMAG
‫فرض‬‫پیش‬ ‫های‬‫مکانیزم‬glibc‫تابع‬‫اخوانی‬‫ر‬‫ف‬ ‫هنگام‬‫به‬ ،free()‫یک‬‫ی‬‫بررو‬ ‫ا‬‫ر‬ ‫هایی‬‫ی‬ ‫بررس‬ ،
‫های‬‫خانه‬ ‫و‬ ‫ها‬‫س‬‫ر‬‫آد‬ ‫ی‬‫سر‬heap‫به‬ ‫مناسبی‬‫پیام‬ ،‫سرریز‬‫بروز‬ ‫صورت‬ ‫در‬ ‫و‬ ‫داده‬‫انجام‬
‫نماید‬ ‫می‬ ‫متوقف‬‫ا‬‫ر‬‫برنامه‬‫ای‬‫ر‬‫اج‬ ‫و‬ ‫داده‬‫نمایش‬ ‫بر‬‫ر‬‫کا‬.
Mohammad.Golyani = MAGMAG
‫تابع‬‫اخوانی‬‫ر‬‫ف‬‫هنگام‬‫به‬
‫ا‬
‫دقیقا‬ ‫و‬‫برنامه‬‫ای‬‫ر‬‫اج‬ ‫با‬free‫فرض‬‫پیش‬ ‫های‬‫مکانیزم‬ ،glibc
‫دهد‬ ‫می‬‫خاتمه‬‫برنامه‬‫ای‬‫ر‬‫اج‬‫به‬ ‫و‬ ‫شده‬ ‫سرریز‬‫متوجه‬.
‫بافر‬‫محتویات‬ ،‫سرریز‬ ‫دادن‬‫رخ‬ ‫با‬2‫لحاظ‬‫از‬‫که‬
‫بافرهای‬ ‫مابین‬ ،‫حافظه‬ ‫مکان‬1‫و‬3،‫گرفته‬ ‫ار‬‫ر‬‫ق‬
‫شود‬ ‫می‬‫تغییر‬ ‫دستخوش‬.
Mohammad.Golyani = MAGMAG
‫که‬ ‫هایی‬‫ل‬‫کنتر‬glibc‫در‬ ،‫دهد‬ ‫می‬‫انجام‬ ‫فرض‬‫پیش‬‫صورت‬‫به‬
‫فایل‬malloc/malloc.c‫است‬ ‫شده‬ ‫مشخص‬
glibc heap memory checks
-‫تمهیداتی‬‫که‬‫در‬glibc‫به‬‫ر‬‫منظو‬‫استفادۀ‬‫برنامه‬‫نویس‬‫اهم‬‫ر‬‫ف‬،‫آمده‬‫تند‬‫ر‬‫عبا‬‫از‬:
•‫تابع‬mcheck():‫یک‬‫ی‬‫سر‬‫ی‬ ‫بررس‬‫ها‬‫به‬‫هنگام‬‫استفاده‬‫از‬‫این‬‫تابع‬‫در‬‫مورد‬‫فضاهای‬heap‫انجام‬‫می‬‫شود‬.
•‫استفاده‬‫از‬–lmcheck‫به‬‫هنگام‬‫کامپایل‬‫نیز‬‫معادل‬‫استفاده‬‫از‬mcheck‫در‬‫برنامه‬‫می‬‫باشد‬.
•‫متغیر‬MALLOC_CHECK_:‫همانند‬mcheck‫یک‬‫ی‬‫سر‬‫ی‬ ‫بررس‬‫ها‬‫ا‬‫ر‬‫در‬‫مورد‬‫بهم‬‫یختگی‬‫ر‬‫فضای‬heap‫انجام‬‫می‬‫دهد‬.
‫ولی‬‫در‬‫حین‬‫ای‬‫ر‬‫اج‬‫برنامه‬‫به‬‫صورت‬‫ی‬
ّ
‫کل‬‫اعمال‬‫می‬‫شود‬‫و‬‫نه‬‫در‬‫یک‬‫نقطۀ‬‫خاص‬‫و‬‫همچنین‬‫ی‬‫نیاز‬‫به‬‫لینک‬‫م‬‫جدد‬
‫برنامه‬‫نیست‬.
•‫تابع‬mtrace():‫تخصیص‬‫و‬‫اد‬‫ز‬‫آ‬‫ی‬‫ساز‬‫فضاها‬‫ا‬‫ر‬‫تحت‬‫نظر‬‫داشته‬‫و‬‫مغایرت‬‫ا‬‫ر‬‫ش‬‫ر‬‫ا‬‫ز‬‫گ‬‫می‬‫دهد‬.
‫استفاده‬‫ای‬‫ر‬‫ب‬‫از‬mcheck()‫به‬‫هنگام‬‫تو‬‫باید‬ ‫کامپایل‬‫جه‬
‫که‬ ‫داشت‬mcheck‫اخوانی‬‫ر‬‫ف‬‫از‬ ‫قبل‬،malloc‫ده‬‫ز‬‫صدا‬
‫شود‬.
glibc heap memory checks
‫که‬ ‫صورتی‬ ‫در‬mcheck‫آرگومان‬‫با‬NULL،‫داده‬ ‫رخ‬ ‫خطای‬‫به‬‫بسته‬ ،‫شود‬‫اخوانی‬‫ر‬‫ف‬
‫توان‬ ‫می‬ ‫ولی‬ ‫شود‬ ‫می‬ ‫داده‬ ‫نمایش‬ ‫مناسب‬‫پیام‬abort function‫نیز‬ ‫ا‬‫ر‬ ‫خود‬ ‫دلخواه‬
‫نمود‬‫تعریف‬
glibc heap memory checks
‫بررس‬‫اساس‬ ‫بر‬ ،‫ها‬‫ل‬‫کنتر‬‫این‬ ‫اعمال‬ ‫نحوه‬‫ی‬
‫ی‬‫سر‬‫یک‬magicnumber‫در‬ ‫و‬ ‫باشد‬ ‫می‬ ‫ها‬
‫فایل‬malloc/mcheck.c‫در‬glibc‫داده‬ ‫شرح‬
‫شده‬.
glibc heap memory checks
-‫با‬‫تنظیم‬‫متغیر‬‫محیطی‬MALLOC_CHECK‫نیز‬‫می‬‫توان‬‫ل‬‫کنتر‬‫های‬‫پایه‬‫ای‬‫ا‬‫ر‬‫ن‬‫بدو‬‫نیاز‬‫به‬‫کامپایل‬‫مجدد‬‫اع‬‫مال‬
‫نمود‬.
•‫اگر‬‫این‬‫متغیر‬‫ابر‬‫ر‬‫ب‬0‫تنظیم‬،‫شود‬‫ی‬‫ناهنجار‬‫های‬heap،‫نادیده‬‫گرفته‬‫می‬‫شود‬
•‫اگر‬‫این‬‫متغیر‬‫ابر‬‫ر‬‫ب‬1‫تنظیم‬،‫شود‬‫اطلعاتی‬‫ۀ‬‫ر‬‫با‬‫ر‬‫د‬‫خطای‬‫رخ‬،‫داده‬‫نمایش‬‫داده‬‫می‬‫شود‬
•‫اگر‬‫این‬‫متغیر‬‫ابر‬‫ر‬‫ب‬2‫تنظیم‬،‫شود‬‫بلفاصله‬‫تابع‬abort‫اخوانی‬‫ر‬‫ف‬‫شده‬‫و‬‫منجر‬‫به‬‫اتمام‬‫کار‬‫برنامه‬‫می‬
‫شود‬.
-‫باید‬‫توجه‬‫داشت‬‫که‬‫به‬‫خاطر‬‫قابلیت‬‫نوشتن‬‫بر‬‫روی‬stderr‫که‬‫در‬‫این‬‫برد‬‫ر‬‫کا‬‫وجود‬،‫د‬‫ر‬‫دا‬‫استفاده‬‫از‬‫این‬‫متغیر‬‫ای‬‫ر‬‫ب‬‫برنامه‬
‫های‬SUID‫و‬SGID‫می‬‫تواند‬‫خطرناک‬‫بوده‬‫و‬‫به‬‫همین‬‫منظور‬‫به‬‫صورت‬‫پیش‬‫فرض‬‫غیرقابل‬‫استفاده‬‫بوده‬‫و‬‫ای‬‫ر‬‫ب‬‫فعال‬
‫ی‬‫ساز‬‫آن‬‫باید‬‫این‬‫فایل‬‫ا‬‫ر‬‫بوجود‬‫د‬‫ر‬‫آو‬:/etc/suid-debug
‫به‬‫مربوطه‬‫متغیر‬‫اگر‬0‫تنظیم‬
‫شد‬ ‫گرفته‬ ‫نادیده‬ ‫خطاها‬،‫شود‬‫ه‬
‫دهد‬ ‫می‬‫کار‬ ‫ادامه‬‫برنامه‬ ‫و‬.
‫به‬‫مربوطه‬‫متغیر‬‫اگر‬1‫تنظیم‬
‫رف‬‫منظور‬ ‫به‬‫هایی‬ ‫پیغام‬ ،‫شود‬‫ع‬
‫شود‬ ‫می‬ ‫داده‬‫نمایش‬ ‫اد‬‫ر‬‫ای‬.
‫به‬‫مربوطه‬‫متغیر‬‫اگر‬2،‫شود‬ ‫تنظیم‬
‫تابع‬abort‫ای‬‫ر‬‫اج‬ ‫و‬‫شده‬ ‫اخوانی‬‫ر‬‫ف‬
‫یابد‬‫می‬ ‫خاتمه‬‫برنامه‬.
glibc heap memory checks
-‫تابع‬mtrace‫نیز‬‫با‬‫استفاده‬‫از‬‫یک‬‫ی‬‫سر‬hook،‫ها‬‫به‬‫هم‬‫یختگی‬‫ر‬‫های‬heap‫ا‬‫ر‬‫به‬‫هنگام‬‫استفاده‬‫از‬‫توابعی‬‫نظیر‬
malloc‫اهم‬‫ر‬‫ف‬‫می‬‫د‬‫ر‬‫آو‬.
-‫این‬،‫تابع‬‫ل‬‫کنتر‬‫هایی‬‫ا‬‫ر‬‫در‬‫د‬‫ر‬‫مو‬‫توابع‬malloc,reallco,free‫اعمال‬‫می‬‫نماید‬.
-‫با‬‫استفاده‬‫از‬‫تابع‬muntrace‫نیز‬‫می‬‫توان‬‫این‬‫ل‬‫کنتر‬‫ها‬‫ا‬‫ر‬‫از‬‫کار‬‫انداخت‬.
-‫متغیر‬‫محیطی‬MALLOC_TRACE،‫باید‬‫ی‬‫حاو‬‫س‬‫ر‬‫آد‬‫فایلی‬‫باشد‬‫که‬‫قصد‬‫یم‬‫ر‬‫دا‬mtrace‫جی‬‫و‬‫خر‬‫خود‬‫ا‬‫ر‬‫در‬‫آن‬
‫ار‬‫ر‬‫ق‬‫دهد‬.
-‫جهت‬‫درک‬‫بهتر‬‫جی‬‫و‬‫خر‬‫تابع‬mtrace،‫می‬‫توان‬‫از‬‫اسکریپت‬mtrace‫ل‬‫پر‬‫که‬‫در‬glibc‫ار‬‫ر‬‫ق‬‫د‬‫ر‬‫دا‬‫استفاده‬‫نمود‬.
‫ناحی‬‫این‬ ‫در‬‫که‬ ‫هایی‬‫ی‬‫ناهنجار‬‫ه‬
‫شود‬ ‫می‬ ‫داده‬‫ارش‬‫ز‬‫گ‬ ،‫دهد‬‫رخ‬
،‫برنامه‬ ‫سورس‬ ‫در‬‫که‬‫آنجایی‬‫ز‬muntrace‫از‬‫قبل‬free،‫ق‬‫فو‬ ‫خروجی‬ ،‫شده‬‫اخوانی‬‫ر‬‫ف‬
‫است‬ ‫داده‬‫تشخیص‬‫ا‬‫ر‬‫آن‬ ‫ی‬‫ادساز‬‫ز‬‫آ‬‫عدم‬ ‫و‬‫پویا‬ ‫حافظۀ‬ ‫تخصیص‬
‫از‬ ‫استفاده‬ ‫نحوه‬hook‫در‬ ‫هایی‬
malloc/mtrace.c‫ار‬‫ر‬‫ق‬ ‫استفاده‬ ‫مورد‬
‫جزوۀ‬ ‫در‬ ،‫گرفته‬malloc_hook(3)‫شرح‬
‫است‬ ‫شده‬ ‫داده‬.
‫بندی‬‫جمع‬
-‫حفاظ‬‫های‬‫مختلفی‬‫به‬‫ر‬‫منظو‬‫ی‬‫جلوگیر‬‫از‬‫آسیب‬‫دیدن‬‫سیستم‬‫در‬‫مقابل‬‫حملت‬‫مختلف‬‫احی‬‫ر‬‫ط‬‫و‬‫پیاده‬
‫ی‬‫ساز‬‫شده‬‫است‬‫که‬‫در‬‫سطوح‬‫مختلفی‬(‫سیستم‬،‫عامل‬،‫کامپایلر‬‫کتابخانه‬‫های‬‫د‬‫ر‬‫مو‬‫استفاده‬‫و‬...)‫ار‬‫ر‬‫ق‬
‫داده‬‫شده‬.
-‫پیاده‬‫ی‬‫ساز‬‫های‬‫مختلفی‬‫که‬‫در‬‫سیستم‬‫های‬‫مختلف‬‫مبتنی‬‫بر‬‫لینوکس‬‫انجام‬،‫شده‬‫از‬‫یک‬‫ی‬‫سر‬‫های‬‫ر‬‫فتا‬‫ر‬
‫ا‬
‫غالبا‬‫مشخص‬‫تبعیت‬‫می‬‫کند‬.
-‫حفاظ‬‫های‬‫مبتنی‬‫بر‬‫ی‬‫قنار‬(‫نظیر‬SSP-Stack Smashing Protection)‫یکی‬‫از‬‫ین‬‫ر‬‫بردت‬‫ر‬‫پرکا‬‫حفاظ‬
‫ها‬‫هستند‬.
-‫برخی‬‫حفاظ‬‫ها‬‫نیز‬‫نظیر‬point guard‫بر‬‫اساس‬‫ی‬‫مزنگار‬‫ر‬‫ه‬‫ر‬‫اشا‬‫گرها‬‫و‬‫از‬‫بین‬‫بردن‬‫امکان‬‫ی‬ ‫نویس‬‫ز‬‫با‬
‫صحیح‬‫آن‬‫بنا‬‫شده‬‫است‬.

More Related Content

Featured

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Featured (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

GCC, Glibc protections