7. Denial of Service

Веб додатки можуть мати Denial of Service уразливості, що можуть використовуватися для проведення DoS атак. Які можуть призвести до перенавантаження сервера, аж до його повної відмови в обслуговуванні. Також DoS уразливості можуть бути у браузерах.

7.1. Класифікація DoS уразливостей у веб додатках.

Denial of Service уразливості бувають наступних видів:

1. Класичні DoS.

  • Повної відмови.
  • Перенавантаження.

2. Recursive File Include.

3. Зациклений DoS (Looped DoS).

7.2. Класичні DoS.

Дані класичні DoS уразливості у веб додатках розподіляються на DoS повної відмови та DoS перенавантаження.

У випадку DoS повної відмови, уразливість призводить до підвисання веб сервера, коли потрібне його перезавантаження. Або вибивання процесу, веб сервера (наприклад, Apache) чи СУБД (наприклад, MySQL), коли сам сервер продовжує працювати, але частина його функцій стає недоступною (до перезапуску відповідного процесу). А також до даного типу DoS відносяться атаки на веб додатки, що призводять до зміни налаштувань веб додатів (наприклад, через доступ до файлової системи і зміни файлів конфігурації), які повністю зупиняють їх роботу.

У випадку DoS перенавантаження, уразливість призводить до сильного перенавантаження веб сервера. Подібне трапляється при виконанні ресурсоємних операцій (наприклад, запит до БД і виведення інформації), коли відсутні обмеження на об’єми виконуємих операцій, або дані обмеження задаються користувачем і вони не перевіряються (тобто ними можна буде довільно маніпулювати). Що призводить до того, що користувач навмисно чи ненавмисно може послати на виконання тяжкий запит, який перенавантажить сервер.

7.3. Recursive File Include.

Уразливості Recursive File Include, про які я розповідав в своїй статті, це один з нових видів Denial of Service.

Recursive File Include - це Local file include уразливість, що використовується для проведення DoS атаки. Тобто це локальне включення файлів (скриптів), що призводить до DoS атаки за рахунок рекурсії, коли файли інклюдяться нескінченно.

Для PHP додатків атака з використанням даної уразливості буде мати наступний вигляд:

http://site/page.php?include=page.php

Як видно з прикладу, веб додаток підключає сам себе (якщо власноруч задати виклик файла з іменем основного веб додатку). За рахунок нескінченного рекурсивного включення даний запит призведе до перенавантаження сервера.

7.4. Зациклений DoS.

Зациклений DoS (Looped DoS) - це уразливості в редиректорах, що призводять до зацикленної редирекції. Це відбувається коли редиректор перенаправляє клієнта (браузер користувача) на самого себе, що призводить до нескінченної редирекції.

У випадку якщо клієнт, який відвідав даний редиректор на сайті, не має обмежень на редирекцію, то він може тривалий час звертатися до даного веб додатку (який буде весь час перенаправляти його на себе), що призведе до перенавантаження серверу. Деякі браузери, зокрема Mozilla і Firefox, мають обмеження на циклічну редирекцію, а деякі інші браузери такого обмеження не мають (також подібна ситуація має місце і у ботів пошукових систем).

7.5. Класифікація DoS уразливостей в браузерах.

Окрім DoS у веб додатках (серверних уразливостей), варто також звернути увагу на DoS в браузерах (клієнтських уразливостей). Про що, я детально розповів у відповідній статті.

Denial of Service уразливості в браузерах бувають наступних видів:

1. Вибиваючі DoS (crashing DoS).

2. Блокуючі DoS (blocking DoS).

  • Зависання (freezing).
  • Блокування (blocking).

3. DoS через споживання ресурсів (resources consumption DoS).

  • Споживання ресурсів CPU (CPU overload).
  • Споживання ресурсів RAM (memory consumption).

Нерідко зустрічаються дірки в браузерах, які поєднують симптоми декількох видів DoS. Це комбіновані DoS уразливості, коли одначасно мають місце дві DoS атаки. Наприклад, зависання і споживання ресурсів, або блокування і споживання ресурсів. Також трапляються дірки, що відносяться до виду DoS через споживання ресурсів, коли відбувається споживання обох ресурсів (CPU і RAM).

У випадку Вибиваючих DoS, браузер повністю вибиває (додаток закривається), що може призвести до втрати незбережених даних.

У випадку Блокуючих DoS, браузер блокується (його не вибиває). При зависанні браузер не реагує на дії користувача і з ним не можна продовжити працювати. При блокуванні браузер не підвисає, але робота з ним повністю блокується. В обох підвидах даного виду DoS уразливостей, робота з браузером стає неможливою і користувач змушений сам закрити його.

У випадку DoS через споживання ресурсів, браузер починає забирати основні ресурси комп’ютера. Це можуть бути ресурси CPU, або RAM, або обидва ресурси одночасно. Дані DoS атаки призводять до зменшення швидкодії усього комп’ютера користувача, тобто впливають на весь комп’ютер і всі запущені додатки. І змушують користувача браузера самому закрити його.

7.6. Атака на сайт через атаку на користувачів.

Розповідаючи про небезпеки DoS атак на браузери, я зокрема розповів про різновид DoS атаки, коли відбувається атака на сайт через атаку на його користувачів. Тобто DoS атака на користувачів (через DoS уразливість в браузерах) перетворюється на DoS атаку на сайт.

Цю атаку я назвав зворотня DDoS атака (reverse DDoS attack). В даному випадку атакується не сам сайт з метою вибити його з Мережі, щоб він стан недоступний для користувачів, а атакуються користувачі сайта (через взлом сайта і розміщення на ньому DoS-експлоіта). Які не зможуть його нормально переглянути, бо в них при відвідуванні сайта буде вілітати браузер - тобто сайт стане недоступним для користувачів.

7.7. Захист від DoS уразливостей.

Щоб захиститися від Denial of Service уразливостей у веб додатках, потрібно виявляти та виправляти подібні уразливості. Як безпосередні DoS уразливості, так і DoS через інші уразливості, такі як DoS через SQL Injection та DoS через Abuse of Functionality (тому варто проводити комплексний аудит безпеки сайта для виявлення всіх можливостей DoS атак). Це стосується усіх видів DoS уразливостей: Класичних DoS, Recursive File Include та Зациклених DoS, кожен з яких несе загрозу роботі веб сайта, тому всіх їх потрібно виправляти.

Щоб захиститися від Denial of Service уразливостей у браузерах, потрібно використовувати браузери де відсутні DoS уразливості. Але враховуючи, що у всіх браузерах є подібні уразливості, то потрібно вибирати браузери, де їх найменше. Зокрема в останніх версіях браузерів, за звичай, менше DoS уразливостей ніж в попередніх версіях, тому оновлення браузерів дозволить підняти безпечність користування Інтернетом, як за рахунок виправлення DoS, так і виправлення інших уразливостей.

 

Перейти до Змісту