تاثیر
یک مهاجم می تواند داده های حساس و احراز هویت شده را از کاربران یک برنامه آسیب پذیر [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 منعکس می کند و در عین حال از نویز دارایی عمومی جلوگیری می کند.
