آسیب پذیری OAuth | نحوه اجرای مجوز امن در برنامه وب شما

Anonim
آسیب پذیری OAuth | نحوه اجرای مجوز امن در برنامه وب شما 2740_1

این مقاله با آسیب پذیری های شناخته شده OAuth مقابله خواهد کرد. خوانندگان نیز یاد می گیرند که چگونه مجوز امن و امن در برنامه وب را اجرا کنند.

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

معرفی

پروتکل OAuth 2.0 در حال حاضر به طور گسترده ای در برنامه های مختلف استفاده می شود. با استفاده از آن، یک رابط کاربری مناسب در دسترس، احراز هویت آسان تر، احراز هویت آسان تر نسبت به روش های سنتی برای ورود به نام کاربری و رمز عبور است. با پیاده سازی مناسب و متفکرانه، پروتکل OAuth از مجوز سنتی ایمن تر خواهد بود، زیرا کاربران نیازی به اشتراک گذاری اطلاعات حسابداری خود را با یک برنامه شخص ثالث برای دسترسی به یک منبع خاص ندارند. کاربران اغلب ترجیح می دهند با استفاده از حساب های گوگل، فیس بوک یا LinkedIn خود، به جای ایجاد یک حساب کاربری جدید هر بار که شما نیاز به ثبت نام در برخی از وب سایت دارید، وارد شوید. بنابراین، پروتکل OAuth عمدتا زندگی ما را بسیار ساده می کند.

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

ارائه دهندگان خدمات OAuth توسعه دهندگان نرم افزار را به دلایل بسیاری برای مقابله با ایمنی برنامه های خود را ترک کردند. در واقع، سرویس OAuth محافظت شده در ابتدا، به اشتباه در فرآیند نصب آن اجرا می شود، می تواند یک هدف آسان برای مزاحمان باشد. چنین مشکلی منجر به سرقت اطلاعات شخصی کاربران خواهد شد.

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

OAuth Tockey سرقت با استفاده از هدر ارجاع

هنگامی که برنامه درخواست مجوز را از طرف کاربر در سرور OAuth درخواست می کند، یک فرد کد را برای وارد کردن و ارسال به سرور برای چک بعدی خود دریافت می کند. اگر در طول کار، کاربر به صفحه دیگری هدایت می شود، کد در هدر "مرجع" درخواست HTTP دیده می شود. بنابراین، کد در وب سایت خارجی سقوط خواهد کرد، که داده های کاربر ثبت شده در سرور OAuth را تهدید می کند.

توجه: سرپرست ارشد یک هدر پرس و جو HTTP است، آن را میزبان URL که از درخواست ارسال می شود، انتقال می دهد.

برای رفع عواقب این آسیب پذیری، توسعه دهنده باید اطمینان حاصل کند که برنامه وب آن هیچ تزریق HTML را شامل نمی شود. اگر تزریق تشخیص داده شود، مهاجم به راحتی می تواند تگ تصویر را به سرور وب خود تنظیم کند و راهی برای هدایت کاربر بر روی آن پیدا کند. بنابراین، او این فرصت را برای سرقت کد از هدر "مرجع" درخواست HTTP دریافت خواهد کرد.

سرقت OAuth Tockey با استفاده از پارامتر Redirect_uri

این برنامه فرآیند مجوز را با ارسال یک درخواست به سرور OAuth آغاز می کند:

https://www.example.com/signin/authorize؟[...]&redirect_uri=httpps://demo.example.com/logissuccessful.

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

https://www.example.com/signin/'uthorizeize؟[ ... ]&redirect_uri=httpps://localhost.evil.com.

گاهی اوقات URL های مشابه مسدود شده اند. مهاجم می تواند داده های دریافت شده در URL باز را هدایت کند، مانند این:

https://www.example.com/oauth20_authorize.srf؟[...[rredirect_uri=httpps://accounts.google.com/backtoutsubtarget؟next=httpset://evil.com.

یا این:

https://www.example.com/oauth2/Authorize؟ [...]٪ IRECT_URI = https٪ 3A٪ 2F٪ 2FAPPS.Facebook.com٪ 2FATTACKER٪ 2F.

هنگام اجرای OAuth، هرگز نمی توانید کل دامنه های موجود در لیست سفید را وارد کنید. فقط چند URL باید به "Redirect_uri" اضافه شود که یک درخواست برای باز کردن تغییر مسیر را هدایت نمی کند.

جعل درخواست های متقابل

جعل یک درخواست تقسیم می تواند رخ دهد زمانی که یک مهاجم موفق به ایجاد قربانی بر روی لینک خود می شود و بنابراین، برای ایجاد یک درخواست که او قصد تولید آن را ندارد. جعل درخواست های متقاطع معمولا با نشانه CSRF، که با جلسه کاربر مرتبط است، نرم شده است. این به برنامه کمک می کند تا شخص فردی را که درخواست را ارسال می کند بررسی کند. پارامتر "دولت" در پروتکل OAuth به عنوان CSRF Token عمل می کند.

لازم به بررسی اینکه چگونه حمله CSRF بر روی OAuth انجام می شود و به عنوان پارامتر "دولت" می تواند مورد استفاده قرار گیرد تا اثرات آسیب پذیری را کاهش دهد.

هکر یک برنامه وب را باز می کند و فرایند مجوز را برای دسترسی به ارائه دهنده خدمات با استفاده از OAuth راه اندازی می کند. این نرم افزار درخواست ارائه دهنده خدمات را برای دسترسی به آن نیاز دارد. هکر به وب سایت ارائه دهنده خدمات هدایت می شود، جایی که شما معمولا نیاز به وارد کردن نام کاربری و رمز عبور خود را برای تأیید دسترسی دارید. در عوض، هکر از این درخواست جلوگیری می کند و از این درخواست جلوگیری می کند و URL خود را ذخیره می کند. هکر به نحوی باعث قربانی کردن این URL می شود. اگر قربانی وارد سیستم ارائه دهنده خدمات با استفاده از حساب آن شود، اعتبار آن برای صدور مجوز مجوز استفاده می شود. مبادلات کد مجوز دسترسی به نشانه دسترسی را دارد. در حال حاضر حساب هکر در برنامه مجاز است. این می تواند به حساب قربانی دسترسی داشته باشد.

بنابراین، چگونه می توانم از این وضعیت با استفاده از پارامتر "ایالت" جلوگیری کنم؟

این برنامه باید یک مقدار ایجاد کند که بر اساس حساب منبع به نحوی است (به عنوان مثال، از کلید هش کاربر جلسه استفاده کنید). این بسیار مهم نیست، مهم این است که ارزش آن منحصر به فرد و تولید شده با استفاده از اطلاعات خصوصی در مورد کاربر اصلی است. این به پارامتر "ایالت" اختصاص داده شده است.

این مقدار هنگام انتقال مجدد به ارائه دهنده خدمات منتقل می شود. در حال حاضر هکر از قربانی دعوت می کند تا URL را باز کند، که او را حفظ کرد.

کد مجوز صادر شده و به مشتری در جلسه همراه با پارامتر "دولت" ارسال می شود.

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

سایر آسیب پذیری های شناسایی شده هنگام اجرای OAUTH شامل توانایی انجام XSS (Scripting Cross-Site) با استفاده از پارامتر Redirect_uri، تنظیمات کلید خصوصی OAuth (کلید گاهی اوقات می تواند زمانی حاصل شود که Decompiling یک برنامه تلفن همراه) و نقض قانون مجوز مجوز (زمانی که کد مجوز می تواند بیش از یک بار مورد استفاده قرار گیرد تا علامت های دسترسی چندگانه را صادر کند). این آسیب پذیری ها کمتر از آنچه که در بالا شرح داده شده کمتر رایج است، اما آنها را کمتر خطرناک نمی کند. توسعه دهنده باید تمام اقدامات لازم را برای اطمینان از عملکرد قابل اعتماد از برنامه وب خود دانست.

نویسنده مقاله ترجمه شده: Simon Saliba.

مهم! اطلاعات صرفا برای اهداف دانشگاهی. لطفا با قوانین مطابقت داشته باشید و این اطلاعات را برای اهداف غیرقانونی اعمال نکنید.

مواد جالب تر در Cisoclub.ru. مشترک شدن در ایالات متحده: فیس بوک | VK | توییتر | نمایش مشخصات عمومی | تلگرام | ذن | مسنجر | ICQ جدید | یوتیوب | نبض.

ادامه مطلب