فکر کردن در مورد اینکه سیستمها میتوانند به کاربران خود خیانت کنند، نگرانکننده است. حملات SSRF، درخواستهای بیخطر را به سلاحی برای مجرمان سایبری تبدیل میکنند. آنها میتوانند از آسیبپذیریهای موجود در شبکهها استفاده نمایند. این حملات اغلب بدون اینکه متوجه شوید، دادهها را به خطر میاندازند، امنیت را نقض میکنند و حتی میتوانند عواقب فاجعهباری داشته باشند.
از اواخر سال 2022، بیش از 100000 کسب و کار در سراسر جهان هدف حملات SSRF قرار گرفتهاند و این تعداد با افزایش استفاده از برنامههای تحت وب، بیشتر خواهد شد. در این مقاله، همه مواردی که باید در مورد حملات SSRF، تأثیر آنها و نحوه کاهش خطرات مرتبط بدانید، توضیح داده شده است.
حملات SSRF چیست؟
جعل درخواست سمت سرور (SSRF) یک آسیبپذیری امنیتی وب است که در آن مهاجم از عملکرد سرور برای ارسال درخواستهای HTTP به سیستمهای دیگر، سوءاستفاده می کند. در حالت عادی هکرها این دسترسی را ندارند.
در حملات SSRF، مهاجمان از توانایی سرور برای ارسال درخواست به سایر سیستمها سوءاستفاده کرده و با سرویسهای داخلی ارتباط برقرار می نمایند. در نهایت نیز به منابع داخلی دسترسی پیدا می کنند. این امر منجر به افشای دادهها، اجرای کد از راه دور و سایر عواقب جدی مانند حملات supply chain میشود.
نکته: supply chain، نوعی حملات سایبری هستند که با هدف آسیب رساندن به یک سازمان از طریق منابع یا سیستم هایی که سازمان به آنها وابسته است، استفاده می شوند.
حملات SSRF چگونه انجام میشوند؟
برای انجام یک حمله SSRF، مهاجم باید ابتدا یک نقطه ضعف در برنامه تحت وب بیابد که به او اجازه دهد درخواستهای HTTP را ارسال کند. این نقطه ضعف میتواند یک فیلد ورودی، پارامتر URL یا آسیبپذیری نرمافزاری باشد.
پس از یافتن نقطه ضعف، مهاجم باید یک درخواست HTTP مخرب ایجاد نماید. این درخواست باید به گونهای طراحی شود که سرور را وادار نماید تا به یک منبع داخلی یا خارجی آسیبپذیر دسترسی پیدا کند.
هنگامی که مهاجم درخواست مخرب را ارسال نماید، سرور آن را پردازش کرده و سعی میکند آن را انجام دهد. در این فرآیند، سرور به عنوان یک واسط برای مهاجم عمل کرده و بدون هیچ سوالی درخواست را ارسال میکند.
تصویر(1)
حملات SSRF چه مشکلاتی ایجاد می کنند؟
حملات SSRF می توانند تأثیر گسترده ای داشته باشند و اغلب باعث عواقب شدیدی برای برنامه ها و سازمان ها می شود. این حملات از آسیبپذیریهای موجود در معماری سیستم سوء استفاده میکنند که میتواند منجر به پیامدهای مخرب مختلفی گردد، از جمله:
- افشا و سرقت داده: مجرمان سایبری دسترسی غیرمجاز به داده های حساس ذخیره شده در شبکه های داخلی، مانند داده های محرمانه مشتری، سوابق مالی و غیره را به دست می آورند.
- دسترسی از راه دور به سیستمها: مهاجمان میتوانند به سایر سرورها دسترسی پیدا کنند و سیستم را برای سوءاستفادههای بعدی باز بگذارند که وضعیت امنیتی شبکه را به خطر خواهد انداخت.
- حملات DOS: حملات DOS به منظور غیرفعالسازی یک ماشین یا شبکه انجام می شوند و آن را برای کاربران مورد نظر غیرقابل دسترس می کنند. حملات DoS این کار را با ارسال درخواست های زیاد و پر کردن ظرفیت پهنای باند سرور یا شبکه هدف، انجام میدهند. در حملات SSRF، یک عامل تهدید می تواند سرورهای داخلی را با درخواست های مخرب از کار بیندازد.
حملات SSRF برای چه مواردی خطرناک هستند؟
در اکثر سازمانها، آسیب های زیادی پس از حمله SSRF ایجاد می شود و در صورتی که موفقیت آمیز باشد، منجر به موارد زیر خواهد شد:
- تضعیف اعتماد: سازمانهایی که قربانی حملات SSRF میشوند، در معرض خطر آسیب رساندن به برند خود و از دست دادن مشتریان هستند. سرقت دادههای محرمانه و دسترسی غیرمجاز، اعتماد بین سازمان و مشتری را از بین میبرد.
- عواقب قانونی و نظارتی: چارچوبهایی مانند GDPR برای سازمانهایی که در ایمنسازی اطلاعات حساس و رعایت معیارهای امنیتی، شکست میخورند، جریمههای سنگینی را تعیین میکنند.
- ضرر مالی: حملات SSRF میتوانند منجر به زیانهای مالی قابل توجهی شوند که شامل از دست رفتن هزینههای بازیابی دادهها، اقدامات قانونی و جریمههای احتمالی ناشی از نقض حفاظت از دادهها میشود. علاوه بر این، دسترسی به سرورهای داخلی از طریق SSRF میتواند عملیات تجاری را مختل کرده و باعث خرابی و کاهش بهرهوری گردد.
جدول میزان پاداش مالی ارائه شده برای گزارش انواع مختلف آسیبپذیریهای امنیتی
نوع ضعف |
کل مبلغ پاداش مالی |
تغییر درصدی سال به سال |
XSS |
4,211,006 دلار |
26 درصد |
کنترل دسترسی نامناسب - عمومی |
4,013,316 دلار |
134 درصد |
افشای اطلاعات |
3,520,801 دلار |
63 درصد |
SSRF |
2,995,755 دلار |
103 درصد |
Insecure Direct Object Reference یا IDOR |
2,264,833 دلار |
70 درصد |
دسترسی های بالاتر غیرمجاز |
2,017,592 دلار |
48 درصد |
تزریق SQL |
1,437,341 دلار |
40 درصد |
احراز هویت نامناسب - عمومی |
1,371,863 دلار |
36 درصد |
تزریق کد |
982,247 دلار |
7- درصد |
جعل درخواست از سایتی دیگر (CSRF) |
662,751 دلار |
34- درصد |
جدول(1)
7 نمونه از SSRF و نحوه محافظت از خود در برابر آنها
حملات SSRF طی چندین دهه اپلیکیشن ها را تحت تأثیر قرار داده است زیرا عملکرد آنها به گونه ای می باشد که می توانند اقدامات امنیتی سنتی برنامه های تحت وب را دور زده و داده های حساس را در معرض خطر قرار دهند. در ادامه چند نمونه از SSRF معرفی شده و نحوه محافظت در برابر آنها شرح داده می شود.
1. دسترسی به منابع داخلی
در یک حمله SSRF که منابع داخلی را هدف قرار می دهد، عوامل مخرب، اپلیکیشن تحت وب را دستکاری می کنند تا درخواست های آنها جهت دسترسی به منابع حساس در شبکه داخلی یک سازمان که معمولاً برای کاربران خارج از شبکه ممنوع است، تایید شود.
برای محافظت از اپلیکیشن خود در برابر مهاجمانی که به دنبال خواندن داده های داخلی هستند، ابتدا باید تأیید اعتبار ورودی سختگیرانه ای را برای URL های ارائه شده توسط کاربر پیاده سازی کنید. این فرآیند تأیید اعتبار، تضمین می کند که URL ها با فرمت مورد انتظار مطابقت دارند و حاوی عناصر مخرب قابل سوء استفاده نیستند. علاوه بر این، میتوانید ابزارهایی را جهت جلوگیری از نقض داده ها برای محافظت از منابع داخلی خود مستقر کنید. این ابزارها میتوانند در شناسایی و جلوگیری از انتقال دادههای حساس به خارج از شبکه، کمک کنند.
2. پورت اسکن
حملات SSRF میتوانند برای اسکن پورتهای یک سرور استفاده شوند. این امر به مهاجمان اجازه میدهد تا پورتهای باز سرور را شناسایی کنند. این اطلاعات میتواند برای اهداف مختلفی، همچون شناسایی آسیبپذیریهای امنیتی، استفاده شوند. جهت محافظت از اپلیکیشن خود در برابر پورت اسکن، نباید از ورودی ارائه شده توسط کاربر برای ایجاد URL استفاده کنید. همچنین URL ها را به دقت اعتبارسنجی نمایید تا مطمئن شوید که حاوی عناصر مخرب نیستند.
3. گنجاندن فایل از راه دور (RFI)
حملات RFI زمانی رخ میدهند که یک مهاجم بتواند از یک اپلیکیشن تحت وب برای اجرای فایلی مخرب از راه دور، استفاده کند. این فایل ممکن است حاوی کد مخرب باشد که میتواند برای سرقت دادهها، تخریب سیستم یا حمله به سایر سیستمها به کار رود. یک حمله RFI موفق، عواقب گستردهای همچون افشای اطلاعات حساس و اجرای کد از راه دور، برای اپلیکیشن تحت وب، به همراه خواهد داشت.
اولویت بندی اعتبارسنجی و بررسی ورودی، اولین قدم در ایمن سازی داده ها و سازمان در برابر حملات SSRF است. علاوه بر این، باید یک لیست سفید از مکان فایلهای قابل اعتماد و اسکریپتهای خارجی تهیه کنید و صرفا به مواردی که کاملا قابل اعتماد هستند اجازه ارسال درخواست بدهید و هر گونه ارجاع تأیید نشده یا احتمالا مخرب را رد نمایید.
در نهایت، هدرهای امنیتی مانند Content Security Policy (CSP) را برای کنترل منابع خارجی که اپلیکیشن تحت وب میتواند بارگذاری کند، پیادهسازی کنید.
تصویر(2)
4. سرقت داده
استخراج داده (گاهی اوقات با عنوان خروج داده یا سرقت داده نیز شناخته می شود) یک حمله SSRF است که در آن مهاجم از آسیب پذیری موجود برای دسترسی به API های داخلی یا سرویس ها استفاده می کند. سپس داده های حساس را استخراج کرده و آن را به مکان دیگری ارسال می نماید و محرمانگی داده ها را به خطر می اندازد.
علاوه بر مراحلی که در بخشهای قبلی برای کاهش خطرات مورد بحث قرار گرفت، باید اقدامات بیشتری جهت جلوگیری از سرقت داده انجام دهید. به عنوان مثال، میتوانید کنترل دسترسی سختگیرانهای را اعمال کنید، دادههای حساس را رمزگذاری نموده و ترافیک خروجی را برای یافتن هر گونه نشانه از انتقال داده غیرعادی یا غیرمجاز، مانیتور نمایید.
5. حملات XML External Entity یا XXE
XXE یک آسیب پذیری امنیتی در وب است که به مهاجم اجازه می دهد در پردازش داده های XML اپلیکیشن تحت وب، دخالت کند. همچنین از این طریق مهاجم می تواند فایل ها را در "سیستم فایل" سرور اپلیکیشن مشاهده و با هر دستگاه پشتیبان یا خارجی که صرفا خود اپلیکیشن به آن دسترسی دارد، تعامل داشته باشد.
در برخی شرایط، مهاجم میتواند با استفاده از آسیبپذیری XXE برای انجام حملات جعل درخواست سمت سرور (حملات SSRF)، حمله XXE را تشدید کند تا سرور اصلی یا دیگر زیرساختهای بکاند را به خطر بیندازد.
6. Server-Side Cache Poisoning
Server-Side Cache Poisoning، از آسیبپذیریهای موجود در مکانیزم حافظه کش یک اپلیکیشن تحت وب، سوءاستفاده میکند. این حمله با وارد کردن اطلاعات جعلی به حافظه کش سیستم نام دامنه (DNS) یا حافظه کش وب برای آسیب رساندن به کاربران، انجام میشود.
برای دفاع در برابر آلودگی حافظه کش سمت سرور، میتوانید اقدامات زیر را انجام دهید:
- ورودی کاربر را با حساسیت بسیار بالا اعتبارسنجی و کنترل کنید.
- تنظیمات کش را برای حذف داده های حساس پیکربندی نمایید.
- یکپارچگی محتوای کش را بررسی کنید.
- اپلیکیشن ها را با آخرین پچ های امنیتی بروز نگه دارید.
تصویر(3)
7. Cloud Metadata API Abuse
Cloud Metadata API Abuse زمانی رخ میدهد که مهاجم بتواند اطلاعات حساس را از ابرداده یک ارائهدهنده ابری واکشی کرده و بخواند. این ابرداده ها معمولاً اطلاعات مهمی مانند مشخصات دسترسی را در خود دارند.
چندین مرحله وجود دارد که میتوانید برای دفاع در برابر Cloud Metadata API Abuse انجام دهید، از جمله:
• تنظیم فایروال ها و محدودیت های شبکه برای محدود کردن دسترسی API
• استفاده از rate limiting و مانیتورینگ
• آموزش تیم ها در مورد شیوه های کدگذاری امن
• استفاده از ویژگی های امنیتی ارائه دهنده خدمات ابری مانند گواهی های موقت
نتیجه گیری: پیشگیری همیشه بهتر از درمان است
Server-side request forgery یا SSRF یک تهدید مخرب است که در فضای امنیت سایبری رایج می باشد. همانطور که در این مقاله توضیح داده شد، حملات SSRF می توانند به اشکال مختلف ظاهر شوند، از نقض داده گرفته تا اجرای کد از راه دور که سازمان ها و داده های حساس آنها را در معرض خطر قرار می دهد.
با این حال، می توانید با اتخاذ اقدامات حفاظتی و امنیتی پیشگیرانه، از خطرات SSRF جلوگیری کنید. این اقدامات شامل اعتبار سنجی دقیق ورودی، rate limiting، هدرها و توکن های امنیتی است.