حمله DDoS Memcached نوعی حمله سایبری است که در آن مهاجم تلاش میکند قربانی مورد نظر خود را با ارسال حجم انبوهی از درخواستها و بالا بردن بار بر روی سرویس تحت شبکه قربانی تحت فشار قرار میدهد، تا جایی که در نهایت باعث از دسترس خارج شدن سرویس او خواهد شد. مهاجم درخواستهای جعلی را به یک سرور آسیبپذیر که از Memcached تحت پروتکل UDP استفاده میکند، ارسال خواهد کرد که به طور بالقوه منابع سرویس قربانی مورد نظر را با این درخواستهای جعلی تحت الشعاع قرار میدهد. در حالی که زیرساخت اینترنت با درخواستهای جعلی ارسال شده به شدت مشغول شده است، درخواستهای جدید نمیتوانند پردازش شوند و ترافیک معمولی نمیتواند به منبع اینترنت دسترسی پیدا کند که منجر به انکار سرویس (DoS) میشود. Memcached یک سیستم کش پایگاه داده برای افزایش سرعت وب سایت ها و شبکهها است.
در تصویر بالا دیتاسنترهای Cloudflare در شبکه جهانی را مشاهده میکنید. همچنین مقدار نسبی ترافیک حمله Memcached که در طول حمله اخیر دریافت کردهاند نیز آمده است.
حمله Memcached چگونه کار میکند؟
حملات Memcached مشابه سایر حملات که از نوع DDoS هستند(مانند NTP Amplification و DNS Amplification) عمل میکند. این حمله با ارسال درخواستهای جعلی به یک سرور آسیبپذیر عمل میکند، که آن سرور با حجم بیشتری از داده نسبت به درخواست اولیه پاسخ داده و حجم ترافیک را چندبرابر میکند.
سناریوی حمله سایبری از نوع Memcached Amplification را اگر بخواهیم در قالب یک مثال ساده بیان کنیم، میتوان یک نوجوان بدخواه در نظر گرفت که با یک رستوران تماس گرفته و میگوید: “من از کل منو یک عدد میخواهم، لطفاً با من تماس بگیرید و کل سفارشم را به من بگویید.” هنگامی که رستوران شماره تماس میخواهد، شماره داده شده شماره تلفن قربانی مورد نظر است. سپس هدف تماسی از رستوران دریافت میکند که حاوی اطلاعات زیادی است که آنها را درخواست نکرده است.
این روش حمله تقویتی امکان پذیر است، زیرا سرورهای Memcached این گزینه را دارند که با استفاده از پروتکل UDP کار کنند. UDP یک پروتکل شبکه است که امکان ارسال دادهها را بدون دریافت چیزی که به عنوان دست دادن (Handshake) شناخته میشود را دارا میباشد که یک فرآیند شبکه است و در آن هر دو طرف با ارتباط موافقت میکنند. UDP در چنین شرایطی مورد استفاده قرار میگیرد، زیرا با میزبان هدف هرگز در مورد این که آیا آن ها مایل به دریافت داده هستند یا خیر، مشورت نمیشود و این امکان را میدهد تا حجم عظیمی از دادهها بدون رضایت به هدف ارسال شود.
حمله Memcached در 4 مرحله انجام میشود:
- یک مهاجم حجم عظیمی از دادهها را روی یک سرور Memcached در معرض قرار میدهد.
- سپس مهاجم یک درخواست HTTP GET را با آدرس IP قربانی هدف جعل میکند.
- سرور Memcached آسیبپذیری که درخواست را دریافت میکند و سعی میکند با پاسخ دادن مفید باشد، پاسخ بزرگی را به هدف ارسال میکند.
- سرور مورد نظر یا زیرساخت اطراف آن قادر به پردازش حجم زیادی از دادههای ارسالشده از سرور Memcached نیست و در نتیجه باعث بالا رفتن بار روی سرور و انکار سرویس یا DoS برای درخواستهای غیرجعلی میشود.
این یک حمله 260 گیگابایت بر ثانیه Memcached علیه شبکه Cloudflare است که در حال کاهش است.
یک حمله Memcached چقدر میتواند بزرگ باشد؟
ضریب بزرگنمایی این نوع حمله واقعاً خیرهکننده است. تا جایی که در عمل ما شاهد فاکتورهای تقویت تا 51,200 برابر بودهایم! این بدان معناست که برای یک درخواست 15 بایتی، یک پاسخ 750 کیلوبایتی میتواند ارسال شود. این یک عامل تقویت عظیم و خطر امنیتی برای ویژگیهای وب است که قادر به تحمل وزن این حجم از ترافیک حمله نیستند. داشتن چنین ضریب تقویت بزرگ همراه با سرورهای آسیبپذیر، Memcached را به یک مورد اصلی برای مهاجمانی تبدیل میکند که به دنبال راهاندازی DDoS علیه اهداف مختلف هستند.
چگونه میتوان از یک حمله Memcached جلوگیری کرد؟
UDP را غیرفعال کنید :
برای سرورهای Memcached، اگر به آن نیاز ندارید، مطمئن شوید که پشتیبانی UDP را غیرفعال کنید. بهطور پیشفرض، Memcached پشتیبانی UDP را فعال میکند که احتمالاً منجر به آسیبپذیرشدن سرور خواهد شد.
فایروالکردن سرور Memcached :
با فایروالکردن سرورهای Memcached از اینترنت، مدیران سیستم میتوانند از UDP برای Memcached در صورت لزوم بدون مواجهه استفاده کنند.
جلوگیری از جعل آیپی (IP Spoofing) :
تا زمانی که آدرسهای IP میتوانند جعل شوند، حملات DDoS امکان استفاده از آسیبپذیری برای هدایت ترافیک به شبکه قربانی را دارد. جلوگیری از جعل IP راه حل بزرگتری است که توسط هیچ مدیر سیستم خاصی قابل پیاده سازی نیست و به ارائهدهندگان ترانزیت نیاز دارد که اجازه ندهند هیچ بستهای از شبکه خود خارج شود که آدرس IP منبع آن خارج از شبکه است. به عبارت دیگر، شرکتهایی مانند ارائهدهندگان خدمات اینترنتی (ISP) باید ترافیک را به گونهای فیلتر کنند که بستههایی که از شبکه آنها خارج میشوند، اجازه نداشته باشند وانمود کنند که از یک شبکه دیگر در جای دیگری هستند. اگر همه ارائهدهندگان اصلی حمل و نقل این نوع فیلتر را اجرا کنند، حملات مبتنی بر جعل یک شبه ناپدید میشوند.
نرمافزاری به گونهای طراحی شوند که پاسخی برابر با درخواست ارسال کنند:
راه دیگر برای از بین بردن حملات تقویتشونده یا Amplification ، حذف ضریب تقویت برای هر درخواست ورودی است. اگر دادههای پاسخ ارسالشده در نتیجه درخواست UDP کوچکتر یا برابر با درخواست اولیه باشد، دیگر تقویت امکان پذیر نیست.