FixVibe
Covered by FixVibehigh

CORS پیکربندی نادرست: خطرات سیاست های بیش از حد مجاز

اشتراک‌گذاری منابع متقاطع (CORS) یک مکانیسم مرورگر است که برای تسهیل سیاست همان منبع (SOP) طراحی شده است. در حالی که برای برنامه های وب مدرن ضروری است، پیاده سازی نادرست - مانند تکرار سرصفحه مبدا درخواست کننده یا در لیست سفید منشاء "تهی" - می تواند به سایت های مخرب اجازه دهد تا داده های کاربر خصوصی را استخراج کنند.

CWE-942

تاثیر

یک مهاجم می تواند داده های حساس و احراز هویت شده را از کاربران یک برنامه آسیب پذیر [S2] بدزدد. اگر کاربر در حین ورود به برنامه آسیب‌پذیر، از یک وب‌سایت مخرب بازدید کند، سایت مخرب می‌تواند درخواست‌های مبدأ متقابل را به API برنامه ارسال کند و پاسخ‌ها را بخواند [S1][S2]. این می تواند منجر به سرقت اطلاعات خصوصی، از جمله نمایه های کاربر، نشانه های CSRF، یا پیام های خصوصی [S2] شود.

علت اصلی

CORS یک مکانیسم مبتنی بر هدر HTTP است که به سرورها اجازه می‌دهد تا مشخص کنند کدام مبدا (دامنه، طرح یا پورت) مجاز به بارگیری منابع [S1] هستند. آسیب‌پذیری‌ها معمولاً زمانی ایجاد می‌شوند که خط‌مشی CORS یک سرور بسیار انعطاف‌پذیر باشد یا [S2] ضعیف اجرا شود:

  • سرصفحه مبدا منعکس شده: برخی از سرورها هدر Origin را از یک درخواست مشتری می خوانند و آن را در سرصفحه پاسخ Access-Control-Allow-Origin (ACAO) [S2] بازتاب می دهند. این به طور موثر به هر وب سایتی اجازه می دهد تا به منبع [S2] دسترسی پیدا کند.
  • کارت‌های عام پیکربندی نادرست: در حالی که حروف عام * به هر منبعی اجازه دسترسی به یک منبع را می‌دهد، نمی‌توان از آن برای درخواست‌هایی که نیاز به اعتبار دارند (مانند کوکی‌ها یا سرصفحه‌های مجوز) [S3] استفاده کرد. توسعه دهندگان اغلب سعی می کنند با ایجاد پویا هدر ACAO بر اساس درخواست [S2] از این موضوع عبور کنند.
  • در لیست سفید 'null': برخی از برنامه ها در لیست سفید مبدا null هستند، که می تواند توسط درخواست های هدایت شده یا فایل های محلی فعال شود، و به سایت های مخرب اجازه می دهد تا به عنوان یک منبع null برای دسترسی به آن تغییر شکل دهند. [S2][S3].
  • خطاهای تجزیه: اشتباهات در تطبیق regex یا رشته هنگام اعتبارسنجی هدر Origin می تواند به مهاجمان اجازه دهد از دامنه هایی مانند trusted-domain.com.attacker.com [S2] استفاده کنند.

توجه به این نکته ضروری است که CORS محافظی در برابر جعل درخواست متقابل (CSRF) [S2] نیست.

رفع بتنی

  • از یک لیست سفید ثابت استفاده کنید: از تولید پویا هدر Access-Control-Allow-Origin از هدر Origin درخواست خودداری کنید. درعوض، منشاء درخواست را با فهرستی از دامنه‌های مورد اعتماد [S3] مقایسه کنید.
  • از مبدأ "تهی" اجتناب کنید: هرگز null را در لیست سفید مبداهای مجاز [S2] قرار ندهید.
  • محدود کردن اعتبارنامه: فقط در صورت لزوم، Access-Control-Allow-Credentials: true را برای تعامل متقابل خاص [S3] تنظیم کنید.
  • از اعتبارسنجی مناسب استفاده کنید: اگر باید از چندین منبع پشتیبانی کنید، مطمئن شوید که منطق اعتبار سنجی هدر Origin قوی است و نمی توان آن را توسط زیر دامنه ها یا دامنه های مشابه [S2] دور زد.

چگونه FixVibe آن را آزمایش می کند

FixVibe اکنون این مورد را به‌عنوان یک چک فعال دردار گنجانده است. پس از تأیید دامنه، active.cors درخواست های API با مبدأ مشابه را ارسال می کند و سرصفحه های پاسخ CORS را بررسی می کند. این گزارش منشا دلخواه، CORS دارای اعتبار نامه و CORS باز را در نقاط پایانی غیرعمومی API منعکس می کند و در عین حال از نویز دارایی عمومی جلوگیری می کند.