OAuth2

محققان امنیتی راهی را کشف کرده‌اند تا تعداد زیادی از نرم‌افزارهای iOS و اندروید را مورد هدف قرار داده و به آن‌ها اجازه می‌دهد تا از راه دور وارد حساب‌های کاربری نرم‌افزارهای نصب شده بر روی موبایل فرد قربانی شوند، بدون اینکه فرد قربانی متوجه این عمل شود.

گروهی شامل از سه محقق (Ronghai Yang ،Wing Cheong Lau و Tianyu Liu) از دانشگاه هنگ‌کنگ دریافتند[۱] که بیشتر نرم‌افزارهای محبوب موبایل که از سرویس تک وروده(۱) پشتیبانی می‌کنند به صورت ناامنی OAuth2 را اجرا می‌کنند.

OAuth2 یک استاندارد باز است که به کاربران اجازه می‌دهد تا با تایید کردن هویت‌های موجود حساب‌های کاربری خود در گوگل، فیسبوک یا Chinese firm Sina، در سرویس‌های شخص ثالث دیگر ورود کنند.

این فرآیند، کاربران را قادر می‌سازد تا به هر سرویسی بدون وارد کردن نام کاربری یا کلمه عبور، وارد شوند.

روش صحیح استفاده از OAuth توسط برنامه‌نویسان

Access Token

هنگامی که یک کاربر به یک نرم‌افزار شخص ثالث از طریق OAuth وارد می‌شود، نرم‌افزار توسط ارائه‌دهنده شناسه (برای مثال فیسبوک) بررسی می‌کند که اطلاعات احراز هویت صحیح باشد. اگر صحیح بود، OAuth یک Access Token از فیسبوک خواهد داشت که از این پس توسط سرور نرم‌افزار موبایل صادر می‌شود.

هنگامی که Access Token صادر شود، سرور نرم‌افزار مذکور از فیسبوک اطلاعات احراز هویت کاربر را می‌خواهد و پس از تایید اجازه می‌دهد تا کاربر با اطلاعات حساب فیسبوک خود وارد شود.

روش غلط استفاده از OAuth توسط برنامه‌نویسان

SSO

محققان دریافتند که، برنامه‌نویسان تعداد زیادی از نرم‌افزارهای موبایل، به درستی اعتبار اطلاعات فرستاده شده از ارائه‌دهنده شناسه مانند فیسبوک، گوگل یا Sina را بررسی نمی‌کنند.

به جای تأیید اطلاعات OAuth یا همان Access Token که به اطلاعات احراز هویت کاربر ضمیمه شده است تا اگر کاربر و ارائه‌دهنده شناسه به یکدیگر متصل بودند احراز هویت صورت گیرد، سرورِ نرم‌افزار فقط شناسه کاربر را که از ارائه‌دهنده شناسه بازیابی شده بررسی می‌کند.

با توجه به این اشتباه، مهاجمان از راه دور می‌توانند نرم‌افزار آسیب‌پذیر را دانلود کرده و از طریق نام کاربری و کلمه عبور خودشان به آن وارد شده و سپس نام‌کاربر را به هر نامی که می‌خواهند مورد حمله قرار دهند، از طریق تنظیم یک سرور که داده‌های فرستاده شده از فیسبوک، گوگل و یا دیگر ارائه‌دهنده‌های شناسه را ویرایش کند، تغییر دهند (که مهاجمان می‌توانند نام کاربری مورد هدف را حدس زده و یا از گوگل برای پیدا کردن آن کمک بگیرند).

Forbes[2] گزارش کرده است که: پس از انجام این کار، تمامی کنترل داده‌های نگهداری شده توسط نرم‌افزار مورد نظر در اختیار فرد مهاجم قرار می‌گیرد.

اگر مهاجمان به نرم‌افزار مربوط به مسافرت کاربر وارد شوند، آن‌ها می‌توانند برنامه زمان‌بندی کاربر برای سفر را متوجه شوند، اگر وارد برنامه رزرواسیون هتل کاربر شوند، می‌توانند یک اتاق برای آن‌ها رزرو کرده و کاربر باید مبلغ رزرواسیون را پرداخت کند، یا به سادگی می‌توانند اطلاعات شخصی کاربر مانند آدرس پستی و اطلاعات بانکی را بدزدند.

Lau به Forbes گفته است: پروتکل OAuth کاملا پیچیده است. بسیاری از توسعه‌دهندگان شخص ثالث(۲)، کسانی هستند که یک کسب و کار مستقل راه انداخته‌اند(۳) و قابلیت‌های لازم را ندارند. در بیشتر موارد آن‌ها از توصیه‌های گوگل یا فیسبوک استفاده می‌کنند، اما اگر آن‌ها به درستی این کار را انجام ندهند، نرم‌افزار آن‌ها کاملا باز خواهد بود.

محققان صدها نرم‌افزار محبوب اندروید آمریکایی و چینی را پیدا کرده‌اند که از سرویس SSO پشتیبانی می‌کنند و بیش از ۲٫۴ میلیارد بار دانلود شده‌اند و نسبت به این مشکل، آسیب‌پذیر هستند.

با در نظر گرفتن تعداد کاربرانی که طریقه ورود بر پایه OAuth را انتخاب می‌کنند، محققان تخمین می‌زنند که بیش از یک میلیارد حساب کاربری نرم‌افزارهای مختلف در حال حاضر در معرض خطر این آسیب‌پذیری قرار دارند.

محققان این آسیب‌پذیری را بر روی iPhone آزمایش نکرده‌اند اما آن‌ها اعتقاد دارند حملات آن‌ها می‌تواند بر روی هر نرم‌افزار آسیب‌پذیر که بر روی سیستم عامل iOS نصب باشد نیز تاثیر بگذارد.

محققان می‌گویند: اگرچه حمله فعلی ما بر پایه پلتفرم اندروید بوده است، اما بهره‌بردار به تنهایی platform-agnostic است و هر کاربر اندروید یا iOS که قبلا از نرم‌افزارهای آسیب‌پذیر (همراه با سرویس SSO بر پایه OAuth2) استفاده می‌کرده است، در معرض این حمله قرار دارد.

Yang و Lu مقاله تحقیقاتی خود را با عنوان Signing into One Billion Mobile App Accounts Effortlessly with OAuth2.0 در روز جمعه (۴ نوامبر ۲۰۱۶) در کنفرانس Black Hat Europe[3] ارائه کردند.

 

منابع

[۱] https://www.blackhat.com/docs/eu-16/materials/eu-16-Yang-Signing-Into-Billion-Mobile-Apps-Effortlessly-With-OAuth20.pdf

[۲] http://www.forbes.com/sites/thomasbrewster/2016/11/03/this-hack-can-break-into-1-billion-android-app-accounts/#3f3db78b14a2

[۳] https://www.blackhat.com/eu-16/briefings/schedule/index.html#signing-into-one-billion-mobile-app-accounts-effortlessly-with-oauth20-4676

[۴] http://thehackernews.com/2016/11/android-oauth-hacking.html


(۱) Single sign-on (SSO)
(۲) Third party developers
(۳) ma and pa shops