#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
Login & MFA #Bypass with #Race_Condition & #JWT Leak
یک روش شناسی هوشمندانه مهاجم بررسی میکنه و در فرایند احراز هویت سایت قربانی متوجه میشه که مقادیر MFA داره بواسطه ساختار JWT ارسال میشه و تصدیق میشه.

این JWT زمانی صادر میشه که Login انجام میشه، و پارامتری در پارامتر های JWT قرار داشته باش نام token_type که مقدار AuthCode رو بطور پیشفرض داشته.

مهاجم متوجه میشه این پارامتر میتونه ارتباط داشته باشه با MFA لذا میاد اینجا Race Condition رو پیاده سازی میکنه و همون ساختار JWT که پس از Login دریافت کرده رو ارسال میکنه در تعداد بالا.

در اصل مشکل اینجا بوده که بعد از Login سایت میومده و JWT رو لو میداده قبل از MFA و همین موضوع باعث شده ساختار رو مهاجم متوجه بشه و حالا Threat Model که اینجا رسیده به ذهنش یکی هم Race Condition بوده و تست زده دیده گرفته.

مهم نیست مقدار درون AuthCode درست بوده باشه یا غلط، چرا که بواسطه Race Condition دوره زده میشده و کاربر یکی از درخواست ها تایید رو که میگرفت، عملا ورود انجام شده و مکانیزم MFA کاملا دور خورده است، جایزه این آسیب پذیری 2500 دلار بود.

@Unk9vvN