محققان در شرکت امنیت کدنویسی وب SALT به تازگی شرح جالبی از نحوه یافتن آن منتشر کردند اشکال احراز هویت دوبله شده CVE-2023-28131 در یک جعبه ابزار آنلاین محبوب ساخت اپلیکیشن معروف به Expo.
خبر خوب این است که اکسپو پاسخ داد خیلی سریع به گزارش باگ SALT رسید، و تنها چند ساعت پس از افشای مسئول SALT، به رفع آن رسید.
خوشبختانه، این اصلاح به مشتریانی که چیزی را دانلود میکردند متکی نبود، زیرا این وصله در داخل سرویس ابری Expo پیادهسازی شده بود و نیازی به وصلههای هیچ برنامه از پیش نصبشده یا کد سمت کلاینت نداشت.
نمایشگاه مشاوره نه تنها توضیح داد که چه اتفاقی افتاده و شرکت چگونه آن را برطرف کرده است، بلکه توصیه های برنامه نویسی را به مشتریان خود در مورد چگونگی جلوگیری از این نوع آسیب پذیری احتمالی با سایر خدمات آنلاین ارائه می دهد.
سپس SALT سه ماه قبل از انتشار گزارش خود صبر کرد، نه اینکه در اسرع وقت آن را برای اهداف تبلیغاتی منتشر کند، بنابراین به کاربران اکسپو فرصتی داد تا پاسخ اکسپو را هضم کنند و بر اساس آن عمل کنند.
نگه داشتن آن ساده است
فرآیند احراز هویت باگ به طور مفصل در توضیح داده شده است گزارش SALT، اما ما در اینجا توضیح بسیار ساده شده ای از اشتباه در سرویس OAUTH Expo ارائه خواهیم داد.
OAUTH، کوتاه برای چارچوب مجوز را باز کنید، فرآیندی است که به شما امکان می دهد به داده های خصوصی در یک سرویس آنلاین (مانند ویرایش نمایه آنلاین خود، افزودن یک مقاله جدید در وبلاگ یا تأیید یک سرویس وب برای ایجاد پست های رسانه های اجتماعی برای شما)، بدون تنظیم رمز عبور با ، یا وارد شدن مستقیم به خود آن سرویس.
وقتی خدمات وب را می بینید که به شما یک با گوگل یا فیسبوک وارد شوید برای مثال، آنها تقریباً همیشه از OAUTH در پسزمینه استفاده میکنند، به طوری که شما نیازی به ایجاد نام کاربری و رمز عبور جدید با وبسایت دیگری ندارید، یا شماره تلفن خود را به سرویس آنلاین دیگری ارائه میکنید.
به عبارت دقیق تر، شما به طور غیرمستقیم احراز هویت می کنید، فقط اعتبار گوگل یا فیس بوک خود را در یکی از آن سایت ها قرار می دهید.
برخی از کاربران این را دوست ندارند، زیرا نمیخواهند در گوگل یا فیسبوک احراز هویت شوند تا هویت خود را به سایتهای دیگر و غیر مرتبط ثابت کنند. دیگران آن را دوست دارند زیرا تصور میکنند سایتهایی مانند فیسبوک و گوگل نسبت به وبسایتهای بوتیکی که سعی کرده فرآیندهای امنیتی رمزنگاری خود را ببندند، تجربه بیشتری در مدیریت فرآیند ورود، ذخیره هش رمز عبور ایمن و انجام 2FA دارند.
احراز هویت برون سپاری شده
بسیار ساده شده، یک ورود به سبک OAUTH، از طریق حساب فیس بوک خود به سایتی به نام example.com
، چیزی شبیه به این می شود:
- سایت
example.com
به برنامه یا مرورگر شما می گوید، "سلام، X، برو و یک نشانه دسترسی جادویی برای این سایت از فیس بوک دریافت کن." - شما از یک URL ویژه فیس بوک بازدید می کنید، اگر قبلاً وارد نشده اید، وارد شوید، و بگویید: «یک نشانه دسترسی جادویی به من بدهید
example.com
" - اگر فیس بوک راضی است که شما همانی هستید که ادعا می کنید، پاسخ می دهد، "سلام، X، این رمز دسترسی جادویی شما است."
- توکن دسترسی را به
example.com
, که سپس می تواند با خود فیس بوک برای تایید اعتبار توکن تماس بگیرد.
توجه داشته باشید که فقط فیس بوک رمز عبور فیس بوک و کد 2FA شما را در صورت نیاز می بیند، بنابراین سرویس فیس بوک به عنوان یک واسطه احراز هویت بین شما و شما عمل می کند. example.com
.
در پشت صحنه، اعتبار نهایی وجود دارد، مانند این:
- سایت
example.com
به فیس بوک می گوید، "آیا شما این توکن را صادر کردید و آیا کاربر X را تایید می کند؟" - اگر فیس بوک موافقت کند، می گوید
example.com
، "بله، ما این کاربر را احراز هویت می دانیم."
سکانس واژگون
اشکالی که محققان SALT در کد اکسپو یافتند، میتواند با خراب کردن بدخواهانه مدیریت اکسپو با آنچه ممکن است فرآیند «کارگزاری احراز هویت» نامیده شود، ایجاد شود.
نکات کلیدی به شرح زیر است:
- خود اکسپو یک پوشش در اطراف فرآیند تأیید اضافه می کند، به طوری که احراز هویت و اعتبار سنجی را برای شما انجام می دهد و در نهایت یک رمز دسترسی جادویی برای وب سایت مورد نظر ارسال می کند (
example.com
در صرافی بالا) به برنامه یا وبسایتی که از آن وصل میشوید بازگردید. - پارامترهای مورد استفاده در رسیدگی به تأیید در یک URL بزرگ که به سرویس Expo ارسال شده است بسته بندی می شوند.
- یکی از این پارامترها به طور موقت در یک وب کوکی ذخیره می شود که نشانی اینترنتی را مشخص می کند که رمز امنیتی جادویی نهایی برای فعال کردن دسترسی به آن ارسال می شود.
- قبل از تحویل کد امنیتی، یک پنجره بازشو از شما میخواهد URL را که در شرف تأیید است تأیید کنید، بنابراین میتوانید هر کسی را که سعی دارد یک URL جعلی را در فرآیند ورود جایگزین کند، دستگیر کنید.
- اگر پنجره بازشو را تایید کنید، Expo شما را به فرآیند تأیید فیس بوک هدایت می کند.
- اگر فیس بوک تأیید را تأیید کند، یک نشانه دسترسی جادویی را به سرویس Expo برمی گرداند، و Expo آن را به آدرس اینترنتی که شما به تازگی در پنجره بازشو تایید کرده اید، با نام
returnURL
. - برنامه یا وب سایت در حال گوش دادن در مشخص شده است
returnURL
پاسخ تماس اکسپو را دریافت می کند، رمز دسترسی را دریافت می کند و بنابراین به عنوان شما احراز هویت می شود.
متأسفانه، محققان SALT دریافتند که میتوانند فرآیند ورود را با استفاده از کد جاوا اسکریپت برای راهاندازی دسترسی به URL ورود اولیه Expo بر هم بزنند، اما پس از آن، پنجره تأیید صحت را قبل از اینکه وقت کافی برای خواندن یا تأیید آن داشته باشید، از بین ببرند.
با این حال، در این مرحله، سرویس Expo قبلاً یک کوکی به نام تنظیم کرده بود ru
(کوتاه برای returnURL
) به آن بگویید که در پایان با نشانه دسترسی جادویی خود به کجا تماس بگیرد.
این بدان معناست که یک مجرم سایبری میتواند کد اکسپو را فریب دهد تا یک را به خاطر بسپارد returnURL
مانند https://roguesite.example
، بدون اینکه شما هرگز دیالوگی را مشاهده کنید تا به شما هشدار دهد که یک حمله در حال انجام است، چه رسد به اینکه اشتباهاً آن را تأیید کنید.
سپس محققان از تکه دوم کد جاوا اسکریپت برای شبیه سازی تغییر مسیر Expo به فرآیند تأیید فیس بوک استفاده کردند، که اگر (مانند بسیاری از افراد) قبلاً به فیس بوک وارد شده باشید، به طور خودکار موفق می شود.
تأیید فیسبوک، به نوبه خود، فرآیند ورود Expo را به کد جاوا اسکریپت خود Expo هدایت می کند.
... که به طور قابل اعتماد اما به اشتباه، هرگز واقعاً تأیید نشده را می گیرد returnURL
برای تماس آن از آن جادو ru
کوکی که در ابتدا بدون تأیید یا اطلاع شما تنظیم کرد.
Fail Open یا Fail Open?
همانطور که از توضیحات بالا می بینید، این آسیب پذیری ناشی از خرابی نامناسب کد Expo است.
کد احراز هویت باید به طور کلی شکست بسته شد، در اصطلاح، به این معنی که فرآیند نباید موفق شود مگر اینکه نوعی تأیید فعال نشان داده شده باشد.
ما حدس می زنیم که اکسپو قصد این سیستم را نداشته است باز نشدن، با توجه به اینکه گزارش SALT نشان می دهد که گفتگوی تأیید بازشو آن به این صورت است:
برنامه در https://roguesite.example از شما می خواهد که وارد حساب فیس بوک خود شوید. آیا کاملاً به https://roguesite.example اعتماد دارید و موافقت می کنید: [نه] [بله]
پاسخ پیش فرض، همانطور که انتظار دارید، روی تنظیم شده بود [No]
، اما این تنها در صورتی باعث می شود که سیستم از کار بسته شود که شما به صورت مذهبی از کد سمت مشتری خود Expo برای کنترل فرآیند تأیید استفاده کنید.
محققان با ارائه جاوا اسکریپت خود برای اجرای دنباله درخواست های تأیید، توانستند با گفتگوی تأیید به گونه ای رفتار کنند که گویی گفته است:
اگر صراحتاً به ما نمیگویید که https://roguesite.example را از ورود از طریق حساب فیسبوک خود مسدود کنیم، به آن اجازه میدهیم این کار را انجام دهد: [اجازه] [مسدود کردن]
راه حل، در میان سایر تغییرات، این بود که کد ورود اولیه اکسپو آن جادو را تنظیم کند ru
شیرینی تنها پس از آن که شما صریحاً به اصطلاح را تأیید کردید returnURL
، به طوری که در صورت نادیده گرفتن پنجره تأیید صحت، به جای اعتماد کورکورانه به URL که هرگز ندیده یا تأیید نکرده اید، کد ورود به جاوا اسکریپت بعدی Expo بسته نمی شود.
از بسیاری جهات، این باگ شبیه به دوشاخه هوشمند Belkin Wemo اشکالی که حدود دو هفته پیش نوشتیم، حتی اگر علت اصلی در مورد بلکین سرریز بافر بود، نه یک تماس وب سرکش.
کد بلکین یک بافر حافظه 68 بایتی را در کد سمت سرور خود اختصاص داد، اما به بررسی کد سمت سرویس گیرنده خود متکی بود که شما سعی نکردهاید بیش از 68 بایت ارسال کنید، بنابراین سرور را در اختیار مهاجمانی قرار میدهد که تصمیم گرفتند. برای صحبت با سرور با استفاده از کد سمت سرویس گیرنده خود که فرآیند تأیید را دور می زند.
چه کاری انجام دهید؟
- هنگام گزارش و نوشتن اشکالات، SALT را دنبال کنید مثال. قبل از انتشار جزئیاتی که به هر کس دیگری اجازه ایجاد سوء استفاده از خود را می دهد، مسئولانه را افشا کنید، به فروشنده زمان معقولی برای رفع آسیب پذیری، به علاوه یک زمان معقول برای توصیه به کاربران خود بدهید.
- هنگام دریافت گزارش اشکال، اکسپو را دنبال کنید مثال. سریع پاسخ دهید، با گزارشگر اشکال در تماس باشید، آسیب پذیری را در اسرع وقت اصلاح کنید، یک گزارش تحقیقی مفید برای کاربران خود ارائه دهید و آن را عینی نگه دارید. (در مقابل پیشنهادات تیم بازاریابی خود مقاومت کنید تا خودتان را به خاطر «جدی گرفتن امنیت» تحسین کنید یا این موضوع را بیاهمیت تلقی کنید. این به عهده کاربران شماست که براساس سرعت و مناسب بودن پاسخ شما و ارزیابی خودشان از خطر تصمیم میگیرند.)
- اطمینان حاصل کنید که کد احراز هویت شما بسته نشده است. اطمینان حاصل کنید که مراحل تأیید یا تأیید را ندارید که بتوان آنها را به سادگی با نادیده گرفتن یا لغو آنها خنثی کرد.
- هرگز تصور نکنید که کد سمت مشتری شما کنترل فرآیند تأیید را در دست دارد. فرض کنید که مهاجمان پروتکل شما را مهندسی معکوس کرده و کد کلاینت خود را ایجاد می کنند تا تا آنجا که می توانند بررسی ها را دور بزنند.
- وقتی از حسابهای وب استفاده نمیکنید، از حسابهای وب خارج شوید. بسیاری از افراد به حسابهایی مانند گوگل، آمازون، فیسبوک، اپل و دیگران وارد میشوند و سپس بهطور نامحدود وارد حسابهای کاربری خود میشوند، زیرا این کار راحت است. خروج از سیستم از انجام بسیاری از اقدامات (از جمله احراز هویت، پستها، لایکها، اشتراکگذاریها و موارد دیگر) در زمانی که شما انتظار آن را ندارید، جلوگیری میکند – به جای آن یک اعلان ورود خواهید دید.
فراموش نکنید که با خروج از سرویسهای وب هر زمان که میتوانید، و با پاک کردن مکرر کوکیهای مرورگر و دادههای وب ذخیرهشده خود، میزان اطلاعات ردیابی که سایتها میتوانند در هنگام مرور درباره شما جمعآوری کنند را نیز کاهش میدهید.
به هر حال، اگر وارد نشده باشید و هیچ کوکی ردیابی از قبل نداشته باشید، سایتها دیگر نمیدانند دقیقاً چه کسی هستید یا آخرین باری که بازدید کردهاید چه کار کردهاید.
- محتوای مبتنی بر SEO و توزیع روابط عمومی. امروز تقویت شوید.
- PlatoAiStream. Web3 Data Intelligence دانش تقویت شده دسترسی به اینجا.
- ضرب کردن آینده با آدرین اشلی. دسترسی به اینجا.
- خرید و فروش سهام در شرکت های PRE-IPO با PREIPO®. دسترسی به اینجا.
- منبع: https://nakedsecurity.sophos.com/2023/05/30/serious-security-verification-is-vital-examining-an-oauth-login-bug/
- : دارد
- :است
- :نه
- :جایی که
- $UP
- 1
- ٪۱۰۰
- 2F به
- a
- قادر
- درباره ما
- بالاتر
- مطلق
- دسترسی
- حساب
- حساب ها
- کسب می کند
- عمل
- اقدامات
- فعال
- فعالانه
- اعمال
- اضافه کردن
- می افزاید:
- نصیحت
- توصیه
- پس از
- پیش
- معرفی
- اختصاص داده شده است
- اجازه دادن
- اجازه می دهد تا
- تنها
- قبلا
- همچنین
- همیشه
- آمازون
- در میان
- مقدار
- an
- و
- دیگر
- پاسخ
- هر
- هر کس
- هر چیزی
- نرم افزار
- اپل
- تصویب
- تصویب
- تایید کرد
- برنامه های
- هستند
- دور و بر
- مقاله
- AS
- ارزیابی
- At
- حمله
- تصدیق کردن
- تأیید اعتبار
- تصدیق
- نویسنده
- مجاز است
- مجوز
- خودکار
- بطور خودکار
- اجتناب از
- به عقب
- زمینه
- تصویر پس زمینه
- مستقر
- BE
- زیرا
- بوده
- قبل از
- میان
- بزرگ
- کورکورانه
- مسدود کردن
- بلاگ
- مرز
- پایین
- دلال
- مرورگر
- کوکی های مرورگر
- بافر
- سرریز بافر
- اشکال
- اشکالات
- اما
- by
- صدا
- نام
- CAN
- مورد
- کشتی
- علت
- ایجاد می شود
- مرکز
- شانس
- تبادل
- بررسی
- چک
- ادعا
- نقل و انتقال بانکی
- مشتری
- بسته
- ابر
- رمز
- برنامه نویسی
- جمع آوری
- رنگ
- آینده
- شرکت
- اتصال
- در نظر بگیرید
- تماس
- کنترل
- مناسب
- شیرینی
- بیسکویت ها
- میتوانست
- پوشش
- ایجاد
- مجوزها و اعتبارات
- رمزنگاری
- مشتریان
- مجرم سایبری
- داده ها
- تصمیم گیری
- مصمم
- به طور پیش فرض
- تحویل داده
- شرح
- مطلوب
- جزئیات
- جزئیات
- گفتگو
- DID
- هضم
- مستقیما
- افشای
- افشاء
- رد
- نمایش دادن
- do
- میکند
- عمل
- دان
- آیا
- دوبله شده
- ویرایش
- دیگر
- قادر ساختن
- پایان
- حتی
- تا کنون
- کاملا
- در حال بررسی
- مثال
- تبادل
- انتظار
- تجربه
- توضیح داده شده
- بهره برداری
- نمایشگاه
- فیس بوک
- FAIL
- عدم
- نتواند
- شگفت انگیز
- کمی از
- نهایی
- رفع
- ثابت
- پیروی
- به دنبال آن است
- برای
- یافت
- غالبا
- از جانب
- کاملا
- عموما
- دریافت کنید
- دادن
- داده
- دادن
- Go
- می رود
- خوب
- گوگل
- گرفتن
- تا حد زیادی
- بود
- دست
- دستگیره
- اداره
- اتفاق افتاده است
- اتفاق می افتد
- آیا
- ارتفاع
- مفید
- اینجا کلیک نمایید
- ساعت ها
- در تردید بودن
- چگونه
- چگونه
- اما
- HTTPS
- هویت
- if
- اجرا
- in
- از جمله
- به طور غیر مستقیم
- اطلاعات
- اول
- در عوض
- قصد
- به
- تحقیقی
- موضوع
- IT
- ITS
- خود
- اصطلاحات مخصوص یک صنف
- جاوا اسکریپت
- تنها
- نگاه داشتن
- کلید
- گره خورده
- دانستن
- دانش
- شناخته شده
- نام
- بعد
- ترک
- ترک کرد
- پسندیدن
- استماع
- ll
- سیستم وارد
- ورود به سیستم
- ورود
- دیگر
- نگاه
- شعبده بازي
- ساخت
- بسیاری
- بسیاری از مردم
- حاشیه
- بازار یابی (Marketing)
- حداکثر عرض
- معنی
- به معنای
- رسانه ها
- حافظه
- قدرت
- اشتباه
- ماه
- بیش
- بسیار
- تحت عنوان
- نیاز
- ضروری
- هرگز
- جدید
- اخبار
- نه
- طبیعی
- عدد
- اوت
- هدف
- of
- خاموش
- ارائه
- ارائه شده
- on
- ONE
- آنلاین
- فقط
- باز کن
- گزینه
- or
- دیگر
- دیگران
- خارج
- روی
- خود
- بسته بندی شده
- پارامترهای
- عبور می کند
- عبور
- کلمه عبور
- وصله
- پچ های
- پل
- مردم
- تلفن
- افلاطون
- هوش داده افلاطون
- PlatoData
- به علاوه
- نقطه
- نقطه
- محبوب
- موقعیت
- ممکن
- پست ها
- در حال حاضر
- جلوگیری از
- خصوصی
- روند
- فرآیندهای
- مشخصات
- برنامه نويسي
- پروتکل
- ثابت كردن
- ارائه
- تبلیغات
- منتشر شده
- انتشار
- اهداف
- قرار دادن
- به سرعت
- نسبتا
- خواندن
- واقعا
- معقول
- دریافت
- دریافت
- تغییر مسیر
- كاهش دادن
- تکیه
- پاسخ
- گزارش
- خبرنگار
- گزارش
- گزارش ها
- درخواست
- نیاز
- محققان
- پاسخ
- مسئوليت
- بازده
- راست
- خطر
- ریشه
- دویدن
- سعید
- نمک
- راضی
- گفتن
- می گوید:
- صحنه های
- دوم
- ایمن
- تیم امنیت لاتاری
- رمز امنیتی
- دیدن
- مشاهده
- مشاهده گردید
- می بیند
- ارسال
- فرستاده
- دنباله
- جدی
- سرویس
- خدمات
- تنظیم
- محیط
- سهام
- کوتاه
- باید
- نشان می دهد
- امضاء
- مشابه
- ساده شده
- به سادگی
- سایت
- سایت
- هوشمند
- So
- آگاهی
- رسانه های اجتماعی
- پیام های رسانه های اجتماعی
- جامد
- راه حل
- برخی از
- چیزی
- بزودی
- صحبت کردن
- ویژه
- مشخص شده
- شروع
- ماندن
- مراحل
- ذخیره شده
- ارسال
- موفق شدن
- چنین
- تهیه
- SVG
- سیستم
- صحبت
- گفتن
- می گوید
- نسبت به
- که
- La
- شان
- آنها
- سپس
- از این رو
- اینها
- آنها
- این
- کسانی که
- اگر چه؟
- سه
- زمان
- به
- رمز
- ابزار
- بالا
- پیگردی
- انتقال
- شفاف
- درمان
- سعی
- ماشه
- باعث شد
- اعتماد
- اعتماد کردن
- امتحان
- دور زدن
- دو
- در نهایت
- زیر
- بر
- URL
- us
- استفاده
- کاربر
- کاربران
- با استفاده از
- تصدیق
- اعتبار سنجی
- فروشنده
- تایید
- بررسی
- از طريق
- بازدید
- بازدید
- حیاتی
- آسیب پذیری
- می خواهم
- بود
- مسیر..
- راه
- we
- وب
- خدمات وب
- سایت اینترنتی
- هفته
- رفت
- بود
- چی
- چه زمانی
- هر زمان که
- که
- WHO
- اراده
- با
- در داخل
- بدون
- خواهد بود
- نوشته
- اشتباه
- X
- بله
- هنوز
- شما
- شما
- خودت
- زفیرنت