احتمالا تو وبگردی هاتون ، مواردی رو مشاهده کردید که در اون، سایتها برای فرایند احرازهویت کاربراشون، از گزینه هایی مانند Sign in with Google یا ورود با گوگل استفاده میکنن. برخی سازمانها و شرکتها هم برای اینکه کارمندان و پرسنلشون به منابع شرکت مانند Slack و ZOOM و … دسترسی داشته باشن، از این مکانیسم استفاده میکنن.
این سازمانها با فرض اینکه گوگل یه شرکت قدرتمند و معتبریه و در نتیجه ایرادی نمیتونه داشته باشه، به اون اعتماد کامل دارن. چنین اعتمادهایی به سرویس ها و ابزارهای شخص ثالث ، میتونه یه نقطه کاندید برای پیدا کردن آسیب پذیری ،توسط هکرها باشه.
دسامبر 2023 ، محقق امنیتی Dylan Ayrey از Truffle Security یه آسیب پذیری در Google OAuth پیدا کرد که به کارمندان یه شرکت این امکان رو میداد، اگر اونا از شرکت هم جدا بشن، همچنان بتونن به منابع شرکت دسترسی داشته باشن. علاوه بر کارمندان، افراد دیگه بخصوص هکرها هم ممکنه بتونن از این منابع سوء استفاده کنن. نکته بد ماجرا اینکه، آسیب پذیری خیلی ساده و قابل درک و استفاده توسط عموم هم هست.
چه مشکلاتی در ورود به سیستم از طریق Google OAuth وجود داره:
آسیب پذیری مدنظر ما به چند دلیل رخ میده :
گوگل به هر کاربری امکان ایجاد یه اکانت گوگل با هر ایمیلی رو میده. یعنی صرفا نیاز نیست که شما از جیمیل برای ایجاد اکانت گوگل استفاده کنید ، مثلا میتونید از یاهو استفاده کنید. برای اینکه بتونید وارد Google Workspace یه شرکت بشید، شرکتها معمولا از ایمیلهایی حاوی دامنه شرکت استفاده میکنن. مثلا اگه شرکت فرضی ما Example باشه و دارای یه سایت روی دامنه ی Example.com باشه، ممکنه یه ایمیل بصورت alanna@example.com داشته باشیم.
گوگل و برخی سرویس های آنلاین ، از یه ویژگی که بهش آدرس فرعی (Sub-addressing) میگن، پشتیبانی میکنن. یعنی شما میتونید با اضافه کردن علامت جمع (+) به یه آدرس ایمیل موجود و بعدش هر چیزی که میخوایید، آدرس های مستعار ایجاد کنید. یکی از کاربردهای این روش اینه که ، میشه جریان ایمیل رو مدیریت کرد. مثلا اگه شما بخوایید در یه بانک ثبت نام کنید، میتونید از آدرس alanna+bank@example.com استفاده کنید یا اگه در یه ارائه دهنده خدمات ارتباطی بخوایید ثبت نام کنید، میتونید از آدرس alanna+telco@example.com استفاده کنید. اگرچه این ایمیلها متفاوت به نظر میرسن، اما همه ی ایمیلهای ارسالی به اونا، به صندوق پستی alanna@example.com ارسال میشه و با توجه به اینکه فیلد To متفاوت هست، میشه اونا رو از طریق یسری رول مدیریت کرد.
در خیلی از سرویس های کاری مانند Zoom و Slack ، احراز هویت از طریق Sign In with Google ، از دامنه ای که برای ایجاد اکانت گوگل مشخص شده، استفاده میکنه. بنابراین اگه ما بخواییم به Slack شرکت فرضی Example وصل بشیم باید از آدرس example.com@ استفاده کنیم.
امکان ویرایش آدرس ایمیل، در یه حساب گوگل وجود داره. در مثال ما ، ما میتونید آدرس alanna@example.com رو به alanna+whatever@example.com تغییر بدیم. خب با اینکار، ما میتونیم، یه اکانت گوگل جدید با alanna@example.com ایجاد کنیم.
این کار منجر به ایجاد دو اکانت گوگل مختلف میشه که ازش میشه برای ورود به پلتفرم های کاری (Slack و Zoom) شرکت فرضی Example از طریق Google OAuth استفاده کرد. نکته جالب اینجاست که آدرس دوم، برای ادمین Google Workspace قابل مشاهده نیست، بنابراین اونا نمیتونن این اکانت رو حذف یا غیرفعال کنن. بنابراین یه کارمند اخراجی ، همچنان میتونه به منابع شرکت دسترسی داشته باشه.
تصاویر زیر اکسپلویت موفق از این آسیب پذیری توسط محقق رو نشون میده:
اکسپلویت آسیب پذیری Google OAuth و ورود بدون دسترسی اولیه :
نکته ماجرا اینجاست که Slack و Zoom مثالهایی از دسترسی غیرمجاز هستن و ممکنه ده ها سرویس مختلف، مثلا سرویس های بومی یا کمتر شناخته شده که از مکانیسم Google OAuth برای احراز هویت استفاده میکنن، تحت تاثیر این آسیب پذیری قرار بگیرن.
در برخی موارد، هکرها میتونن به ابزارهای ابری یه سازمان، بدون دسترسی اولیه به ایمیل شرکت هم دسترسی داشته باشن. مثلا میشه از سیستم ثبت تیکت Zendesk برای این منظور استفاده کرد.
این سرویس امکان ایجاد درخواست، از طریق ایمیل رو فراهم میکنه. بنابراین میشه یه ایمیل با آدرس شرکت برای درخواست ایجاد کرد و ایجاد کننده درخواست، یعنی هر کسی ، میتونه همه ی محتویات مرتبط با این درخواست رو مشاهده کنه. نکته اینجاست که این امکان وجود داره که هر کاربری، یه اکانت گوگل با این آدرس ثبت شده ، میتونه ایجاد کنه و از طریق ثبت درخواست، ایمیلی با لینک تایید دریافت کنه. بنابراین میشه از این طریق ، بدون دسترسی اولیه به منابع شرکت، وارد اکانتهای Zoom و Slack شد.
محافظت در برابر آسیب پذیری Google OAuth :
محقق یافته های خودش رو در برنامه ی باگ بانتی گوگل ارائه داده و گوگل این آسیب پذیری رو شدت پایین مشخص و یه بانتی 1337 دلاری بهش داده. ایشون همچنین آسیب پذیری رو به سرویس هایی مانند Slack هم گزارش داده.
اما گویا مشکل همچنان وجود داره و رفع این آسیب پذیری از طریق تیم های خود سازمان میسر هستش. یکی از راههای جلوگیری از این آسیب پذیری ، غیرفعال کردن گزینه ی Sign In with Google هستش . روش های دیگه استفاده از محصولات امنیتی هست که با مونیتور کردن فضای کاریتون، خرابکاری و نفوذ رو تشخیص میدن.
دمو و جزییات آسیب پذیری :
برای مشاهده جزییات و دمو آسیب پذیری ، میتونید این ویدیو رو مشاهده کنید.
اگه در حوزه ی باگ بانتی فعالیت دارید، میتونید از ایده هاش در اهدافتون استفاده کنید .
منابع: