#Race_Condition for #Use_After_Free
استفاده از آسیب پذیری Race Condition برای دستیابی به chunk آزاد شده ی یک بلاک حافظه Heap این امکان رو به هکر میده که به اصرار دسترسی دوباره خودش رو به Chunk مربوطه ایجاد کنه, از این روی میتوان گفت که این دو آسیب پذیری اگر در شرایط مناسب استفاده بشوند میتوانند موجب ارتقاء سطح دسترسی در سیستم عامل های اندروید شوند,

در تصویر پست مشاهده میشه که یک آرایه که همواره در حافظه Heap تعریف میشه, دارای ۲۰۴۸ اندازه با مقادیر صفر هستش و در ادامه تابع ()read اقدام به خواندن حافظه در سکشن info کرنل میکنه, این خوانده شدن در تابع ()trigger به واسطه آسیب پذیری زمان چک برای زمان اجرا که با مخفف TOCTOU هم شناخته میشه دسترسی به حافظه مربوطه حاصل میشه و هکر میتونه اقدامات بعدی رو انجام بده,

اگر در تابع ()reg_read شرط مبنی بر خواندن در اصل fd1 که دارای مقدار عددی و 1- هستش و اگر مساوی NULL دیده بشه یعنی محل خوانده شده همان محل رزرو شده Heap هستش, این هم نکته ای هستش که باید دقت بشه بهش...

CVE-2016-10296
@Unk9vvN
#Use_After_Free #Linux
در تصویر یک مثال ساده از نحوه رخداد این آسیب پذیری رو به نمایش گذاشتیم و همونطور که مشخصه بواسطه یک struct با نام UAFME یک تابع درونش بصورت void تعریف شده که از نوع اشاره گر هستش اما در ادامه دو تابع دیگه رو داریم با نام های ()good و ()bad که یک تابع ()print درون هر کدوم تعریف شده و یک string رو قراره چاپ بکنه

اما در تابع اصلی یعنی ()main میبینیم که همون اول کار از ساختمان UAFME یک شیُ ساخته میشه که بصورت اشاره گر بوده و حافظه رو بواسطه تابع ()malloc رزرو کرده با اندازه ساختمان UAFME

اما در ادامه شیُ مربوطه یعنی malloc1* اشاره داره به تابع درون ساختمان یعنی vulnfunc که مقدار تابع good بهش پاس داده شده، در ادامه تابع ()vulnfunc فراخوانی میشه، اینجا با این تابع که در حافظه Heap هستش تماس برقرار میشه

این شیُ بواسطه تابع ()free آزاد شده است، اما در ادامه متغییر دومی که بصورت اشاره گر با نام malloc2* تعریف شده که مقدار 0 رو داره و در ادامه تابع bad بهش پاس داده شده، اینجا چون اندازه اشاره گر مربوطه به اندازه متغییر malloc2 هستش، به همون قسمت قبل در حافظه ارجاع داده شده.

@Unk9vvN
#Unserialize #Use_After_Free #PHP_Internal
یکی از مواردی که در دوره تست نفوذ وب تیم تحقیقاتی Unk9vvN بهش بصورت ویژه پرداخت میشه، مبحث کشف آسیب پذیری های Binary مبتنی بر کامپایلر زبان PHP خواهد بود که بر بستر مقادیر Serialize امکان رخدادش وجود داره،

برای مثال در مقادیر Serialize شدن یک آرایه، امکان رزرو حافظه Heap بوجود خواهد آمد و از طرفی در مقادیر Serialize شده یک سمبل معادل اشاره گر Reference وجود داره که در تصویر ، در متغیر exploit$ اون انتهای مقادیر Serialize شده بصورت یک R بزرگ میبینیدش

بصورت خلاصه امکان رزور یک حافظه مبتنی بر تعریف ArrayObject وجود داره و امکان اینکه اون رو آزادش کنیم و بعد با استفاده از R بزرگ که نشان Reference هستش، به Element مورد تعریف حافظه Heap اشاره کرده و بنوعی آسیب پذیری Use After Free رو در حافظه بوجود بیاریم، این عملکرد اشتباه Garbage Collector هستش.

البته تا به امروز روش و تکنیک های متعددی در این مبحث مطرح شده که پیشنیاز فهمشون ، کتاب PHP Internals هستش، که ما بصورت مفصل در دوره تست نفوذ وب بخش Insecure Deserialization به این موضوع خواهیم پرداخت.

@Unk9vvN