یک پژوهشگر امنیتی موفق شد با کشف یک race condition در جریان احراز هویت OAuth 2.0، توکنهای دسترسی کاربران را ربوده و دسترسی کامل به حسابهایشان کسب کند. این باگ در یک پلتفرم مدیریت کسبوکار ابری که توسط شرکتهای Fortune 500 نیز استفاده میشود، یافت شده است و باگ بانتی ۸۵۰۰ دلاری را به همراه داشت.
🔍 پیشزمینه فنی
سیستم ورود از طریق OAuth 2.0 و با استفاده از Authorization Code Grant + PKCE طراحی شده بود. این یعنی:
در ظاهر همه چیز امن به نظر میرسید... اما یک مشکل مهم وجود داشت.
🚨 کشف شرایط رقابتی (Race Condition)
پژوهشگر متوجه شد که اگر دو جریان احراز هویت همزمان (در فاصله میلیثانیهای) برای یک کاربر راهاندازی شود، سرور به هر دو جریان، کد مجوز معتبر (authorization code) اختصاص میدهد. ✳️ سناریوی حمله:
💥 نتیجه: ربودن کامل حساب
مهاجم با استفاده از این توکنها میتواند:
LINK
🔍 پیشزمینه فنی
سیستم ورود از طریق OAuth 2.0 و با استفاده از Authorization Code Grant + PKCE طراحی شده بود. این یعنی:
- احراز هویت با SSO
- لیست سفید برای Redirect URIها
- Scopeهای محدودشده
- Refresh Token با عمر کوتاه
در ظاهر همه چیز امن به نظر میرسید... اما یک مشکل مهم وجود داشت.
🚨 کشف شرایط رقابتی (Race Condition)
پژوهشگر متوجه شد که اگر دو جریان احراز هویت همزمان (در فاصله میلیثانیهای) برای یک کاربر راهاندازی شود، سرور به هر دو جریان، کد مجوز معتبر (authorization code) اختصاص میدهد. ✳️ سناریوی حمله:
- مهاجم کاربر را وادار به ورود به سیستم میکند (مثلاً از طریق یک لینک OAuth).
- در همان لحظه، مهاجم درخواست موازی دیگری برای احراز هویت ارسال میکند.
- هر دو جریان کد مجوز دریافت میکنند.
- مهاجم قبل از کاربر، کد مجوز خود را تبدیل به توکن دسترسی میکند.
- از آنجایی که سرور از اولین Redeem کننده کد مجوز توکن را قبول میکند، توکن مهاجم معتبر خواهد بود.
- کاربر هیچ نشانهای از حمله نمیبیند، چون جریان احراز هویت او نیز به درستی ادامه مییابد.
💥 نتیجه: ربودن کامل حساب
مهاجم با استفاده از این توکنها میتواند:
- دادههای حساس بخواند یا تغییر دهد
- به تنظیمات حساب دسترسی داشته باشد
- عملیاتهای تجاری را انجام دهد
LINK


نظر