اسلولوریس یک حمله منع سرویس است که به مهاجم اجازه میدهد با باز کردن همزمان چندین ارتباط HTTP و حفظ کردن این ارتباط بین مهاجم و قربانی، باعث از پا درآمدن سرور قربانی میشود.
حمله Slowloris چگونه کار می کند؟
اسلولوریس یک حمله در لایه کاربرد(Application layer) است که با استفاده از درخواستهای خرد HTTP عمل میکند. عملکرد حمله با باز کردن ارتباط با وب سرور قربانی شروع میشود و تا حداکثر زمانی که میتواند این ارتباط را حفظ میکند.
اسلولوریس یک ابزار حمله است که به مهاجم اجازه میدهد بدون استفاده از پهنای باند زیاد، سرور قربانی را از کار بیاندازد. برخلاف حملات DDoS که مبتنی بر مصرف پهنای باند هستند مانند NTP amplification ، این نوع حمله از پهنای باند کمی استفاده میکند و در عوض با درخواستهای که کندتراز حالت عادی به نظر میرسند اما از ترافیک معمولی تقلید میکنند منابع سرور را اشغال میکند.
این حمله در دستهبندی حملات low and slow قرار میگیرد.
سرورها توانایی مدیریت ارتباطات(threads) همزمان زیادی را دارند و به طور معمول تلاش میکنند یک ارتباط را هرچند کند باشد زنده نگه دارند. در این حمله سرور منتظر تکمیل درخواست کند مهاجم است که قرار نیست کامل شود. وقتی از حداکثر ظرفیت ارتباطات سرور استفاده میشود، سرور قربانی به ارتباطات جدید پاسخ نمیدهد و حمله منع سرویس رخ میدهد.
حمله Slowloris در 4 مرحله رخ می دهد:
مهاجم ابتدا چندین ارتباط با سرور قربانی ایجاد میکند، این کار را به صورت ارسال درخواستهای خرد headers انجام میدهد.
سرور قربانی برای هر درخواست ورودی یک ارتباط باز میکند، با این هدف که پس از اتمام ارتباط آن را ببندد. همچنین به منظور کارآمدی سرور، در صورتی که یک ارتباط بیش ازحد طول بکشد، سرور به صورت خودکار این ارتباط را میبندد و thread را آزاد میکند.
برای جلوگیری از قطع ارتباط توسط قربانی، مهاجم به طور دورهای درخواستهای خرد header را برای قربانی ارسال میکند تا ارتباط زنده نگه داشته شود. در اصل به قربانی میگوید: "من هنوز اینجا هستم! من فقط کند هستم، لطفا منتظر من باشید."
سرور قربانی هرگر نمیتواند هیچ یک از این ارتباطات ناقص را در حالی که منتظر خاتمه درخواست است، آزاد کند. هنگامی که همه thread ها موجود در حال استفاده هستند، سرور قادر به پاسخگویی به درخواستهای جدید که از ترافیک معمولی ایجاد میشود، نخواهد بود و در نتیجه درخواست رد میشود.
نکته کلیدی در پشت حمله اسلولوریس توانایی آن در ایجاد اختلال گسترده با مصرف بسیار کم پهنای باند است.
چگونه اثر یک حمله Slowloris کاهش می یابد؟
برای سرورهای وب که در برابر حمله اسلولوریس آسیبپذیر هستند، راههایی برای کاهش برخی از تاثیرات وجود دراد. گزینههای کاهش اثر برای سرورهای آسیبپذیر را میتوان به 3 دسته کلی تقسیم کرد:
افزایش در دسترس بودن سرور - افزایش حداکثر تعداد پذیرش درخواست کلاینت به طوری که که تعداد ارتباطات که مهاجم ایجاد میکند باعث اتمام ظرفیت سرور نشود. البته به طور واقعبینانه، یک مهاجم میتواند تعداد درخواستها را برای غلبه بر ظرفیت سرور افزایش دهد.
اعمال محدودیت در نرخ درخواستهای ورودی - محدود کردن دسترسی بر اساس فاکتورهای استفاده خاص به کاهش حمله Slowloris کمک می کند. تکنیک هایی مانند محدود کردن حداکثر تعداد ایجاد ارتباطات مجاز برای یک آدرس IP، محدود کردن سرعت انتقال آهسته، و محدود کردن حداکثر زمانی که کلاینت مجاز است متصل بماند، همگی رویکردهایی برای محدود کردن اثربخشی حملات low and slow هستند.
حفاظت مبتنی بر ابر - از سرویسی استفاده کنید که می تواند به عنوان یک پروکسی معکوس(reverse proxy) عمل کند و از سرور مبدا محافظت کند.