محققان دانشگاه های هامبورگ و کلن
مشکل به این دلیل است که CDN ها نه تنها درخواست هایی را با موفقیت تکمیل کرده اند، بلکه موقعیت هایی را که سرور http یک خطا برمی گرداند نیز در حافظه پنهان می کند. به عنوان یک قاعده، اگر مشکلی در شکلدهی درخواستها وجود داشته باشد، سرور یک خطای 400 (درخواست بد) صادر میکند؛ تنها استثنا IIS است که برای هدرهای خیلی بزرگ خطای 404 (یافت نشد) صادر میکند. استاندارد فقط به خطاهای دارای کدهای 404 (Not Found)، 405 (Method Not Allowed)، 410 (Gone) و 501 (Not Implemented) اجازه می دهد تا در حافظه پنهان شوند، اما برخی از CDN ها همچنین پاسخ های با کد 400 (درخواست بد) را در حافظه پنهان ذخیره می کنند. در مورد درخواست ارسال شده
مهاجمان میتوانند با ارسال درخواستی با سرصفحههای HTTP که به روشی خاص قالببندی شدهاند، باعث شوند منبع اصلی خطای «400 Bad Request» را برگرداند. این سرصفحهها توسط CDN در نظر گرفته نمیشوند، بنابراین اطلاعات مربوط به عدم امکان دسترسی به صفحه در حافظه پنهان ذخیره میشود و تمام درخواستهای معتبر دیگر کاربر قبل از انقضای مهلت زمانی ممکن است منجر به خطا شود، علیرغم اینکه سایت اصلی محتوا را ارائه میکند. بدون هیچ مشکلی.
سه گزینه حمله پیشنهاد شده است تا سرور HTTP را مجبور به بازگرداندن خطا کند:
- HMO (HTTP Method Override) - یک مهاجم می تواند روش درخواست اصلی را از طریق هدرهای "X-HTTP-Method-Override"، "X-HTTP-Method" یا "X-Method-Override" که توسط برخی از سرورها پشتیبانی می شود، لغو کند، اما در CDN در نظر گرفته نشده است. به عنوان مثال، می توانید روش اصلی "GET" را به روش "DELETE" که در سرور ممنوع است یا روش "POST" که برای استاتیک قابل استفاده نیست تغییر دهید.
- HHO (HTTP Header Oversize) - یک مهاجم می تواند اندازه سرصفحه را طوری انتخاب کند که از حد مجاز سرور منبع فراتر رود، اما در محدوده محدودیت های CDN قرار نگیرد. به عنوان مثال، Apache httpd اندازه هدر را به 8 کیلوبایت محدود می کند و Amazon Cloudfront CDN اجازه می دهد تا هدرها تا 20 کیلوبایت باشد.
- HMC (HTTP Meta Character) - یک مهاجم می تواند کاراکترهای خاصی را در درخواست (\n، \r، \a) وارد کند، که در سرور منبع نامعتبر تلقی می شوند، اما در CDN نادیده گرفته می شوند.
مستعدترین مورد حمله، CloudFront CDN بود که توسط خدمات وب آمازون (AWS) استفاده می شد. آمازون اکنون با غیرفعال کردن حافظه پنهان خطا، مشکل را برطرف کرده است، اما بیش از سه ماه طول کشید تا محققان بتوانند حفاظت را اضافه کنند. این مشکل بر روی Cloudflare، Varnish، Akamai، CDN77 و
به سرعت، اما حمله از طریق آنها محدود به سرورهای هدفی است که از IIS، ASP.NET،
به عنوان یک راه حل برای جلوگیری از حمله در سمت سایت، می توانید از هدر "Cache-Control: no-store" استفاده کنید که ذخیره پاسخ را ممنوع می کند. در برخی از CDN ها، به عنوان مثال.
CloudFront و Akamai، میتوانید ذخیره خطا را در سطح تنظیمات نمایه غیرفعال کنید. برای محافظت، میتوانید از فایروالهای برنامههای وب (WAF، Web Application Firewall) نیز استفاده کنید، اما آنها باید در سمت CDN در مقابل میزبانهای کش پیادهسازی شوند.
منبع: opennet.ru