Изследователи от университетите в Хамбург и Кьолн
Проблемът се дължи на факта, че CDN кешират не само успешно изпълнени заявки, но и ситуации, когато http сървърът връща грешка. Като правило, ако има проблеми с формирането на заявки, сървърът издава грешка 400 (Bad Request), единственото изключение е IIS, който издава грешка 404 (Not Found) за твърде големи заглавки. Стандартът позволява да се кешират само грешки с кодове 404 (Не е намерен), 405 (Методът не е разрешен), 410 (Изчезнал) и 501 (Не е внедрен), но някои CDN също така кешират отговори с код 400 (Лоша заявка), което зависи по изпратената заявка.
Нападателите могат да накарат оригиналния ресурс да върне грешка „400 Bad Request“, като изпратят заявка с HTTP заглавки, форматирани по определен начин. Тези заглавки не се вземат предвид от 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 KB, а Amazon Cloudfront CDN позволява заглавки до 20 KB;
- HMC (HTTP Meta Character) - атакуващият може да вмъкне специални символи в заявката (\n, \r, \a), които се считат за невалидни на изходния сървър, но се игнорират в CDN.
Най-податливият на атака беше CloudFront CDN, използван от Amazon Web Services (AWS). Amazon вече коригира проблема, като деактивира кеширането на грешки, но на изследователите отне повече от три месеца, за да добавят защита. Проблемът също засегна Cloudflare, Varnish, Akamai, CDN77 и
Бързо, но атаката чрез тях е ограничена до целеви сървъри, които използват IIS, ASP.NET,
Като заобиколно решение за блокиране на атака от страна на сайта можете да използвате заглавката „Cache-Control: no-store“, която забранява кеширането на отговорите. В някои CDN, напр.
CloudFront и Akamai, можете да деактивирате кеширането на грешки на ниво настройки на профила. За защита можете също да използвате защитни стени за уеб приложения (WAF, Web Application Firewall), но те трябва да бъдат внедрени от страната на CDN пред кеширащите хостове.
Източник: opennet.ru