#Race_Condition WebApp_Example
یک نمونه آسیب پذیری Race_Condition رو در تصویر میبینید که بر مبنای آپلود یک فایل با فرمت های تصویری هستش در پردازش Mime که از طرف کاربر ارسال میشود,

نکته قابل توجه اینجاست که در صفحه Sublime سمت راست تابع مربوط به جا به جایی فایل آپلودی , در بلاک اول شرط mime تعریف شده, این بدین معنی میتونه باشه که مهاجم با اصرار زیاد میتونه شرایط RaceCondition یا مسابقه شرط ها برای عبور از یکدیگر پیاده سازی بشه و اگر در Try های پشت سر هم به واسطه مثلا Burpsuite امکان Write ناخواسته در حافظه پیش بیاد, تابع به اشتباه فایل فرمت دیگه ای رو که مهاجم تغییر mime به multipart/form-data داده و یک پایلود php به Content تزریق کرده رو آپلود خواهد کرد و شرط اول Bypass خواهد شد,

در تصویر سمت چپ کد پچ شده ی این آسیب پذیری رو مشاهده میکنید که این بار نه تنها mime بلکه Extention فایل هم چک خواهد شد و به دلیل وجود دو شرط متوالی دیگه شرایط پیاده سازی RC وجود نخواد داشت.

@Unk9vvN
#Race_Condition on #UAF (msm video driver)
در کلیه محصولات Qualcomm در سیستم عامل های اندروید, یک آسیب پذیری از نوع Race Condition یا شرایط رقابتی وجود داره که البته محل رخداد این آسیب پذیری هم درایور مربوط به تفسیر کننده فایل فرمت های تصویری هستش,

نکته جالب این فضیه آنجایی هستش که, آسیب پذیری اول شرایط رو برای آسیب پذیری دیگر آماده میکنه, یعنی پیاده سازی شرایط رقایتی در درایور مربوطه موجب ایجاد یک اشاره مجدد به حافظه هیپ آزاد شده میشه,

در تصویر پست به وضوح ایجاد دو Object از تابع pthread_t مشاهده میشه که در توابع pthread_create رفرنس داده شده تا دو thread ایجاد شده در یک متغییر, که از نوع عددی هستش ریخته میشود, حال دریک حلقه while ۲۰۰ بار با اجرای یک ثانیه ای تابع sleep آغاز میشه که در نهایت با استفاده از تابع pthread_join اجرا میشود,

به این نکته هم دقت کنید که دو Object ایجاد شده در درون دو تابع همسان یعنی pthread_create رفرنس شده که هردو در یک متغییر هستند, دقیقا همین نکته هستش که موجب رخداد RC شده برای رایت مقادیر ناخواسته...

https://issuetracker.google.com/issues/37130852
@Unk9vvN
#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