База знань

Тестування безпеки (Security testing)

Тестування безпеки (Security testing) – оцінка уразливості програмного забезпечення до різних атак. Це комплекс досліджень програмного продукту, спрямований на виявлення та виправлення дефектів, пов’язаних з збереженням призначених для користувача даних.

В процесі тестування, найчастіше, тестувальник грає роль зломщика використовуючи різні способи:

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

Secur_Test

Стратегія безпеки програмного забезпечення грунтується на 3-ох основних принципах

Конфіденційність. Приховування певних ресурсів або інформації. Це обмеження доступу до ресурсу деякої категорії користувачів, тобто визначення умов, при яких користувач авторизований отримати доступ до даного ресурсу.

Цілісність. Існує два основних критерії при визначенні поняття цілісності:

  • Довіра. Очікується, що ресурс буде змінений тільки відповідним способом певною групою користувачів.
  • Пошкодження і відновлення. Визначення наскільки важливою є процедура відновлення даних в разі їх пошкодження або неправильних змін авторизованим або неавторизованих користувачем.

Доступність. Являє собою вимоги про те, що ресурси повинні бути доступні авторизованому користувачеві, внутрішньому об’єкту або пристрою. Як правило, чим більш критичний ресурс, тим вище рівень доступності повинен бути.

Де необхідно тестування безпеки:

  • web-додатки;
  • додатки з важливою комерційною або особистою інформацією;
  • платіжні системи;
  • додатки, що вимагають цілісності інформації;
  • соціальні програми;
  • додатки з комерційним ліцензуванням.

Вимоги до безпеки програмного забезпечення:

  • додаток не повинен зламуватись;
  • додаток не повинен «падати»;
  • доступ по мережі повинен бути безпечним.

Продовжуючи тему, можна виділити кілька основних видів вразливості в безпеці програмного забезпечення.

XSS (Cross-Site Scripting – «Міжсайтовий скриптинг») – це вид уразливості програмного забезпечення (web-додатків), при якій на генерованій сервером сторінці виконуються шкідливі скрипти, з метою атаки клієнта.

CSRF / XSRF (Сross Site Request Forgery – «міжсайтова підробка запиту», також відомий як XSRF) – це вид уразливості, що дозволяє використовувати недоліки HTTP-протоколу. Зловмисники працюють за такою схемою:

  1. Посилання на шкідливий сайт встановлюється на сторінці, що користується довірою у користувача.
  2. При переході по шкідливому посиланні виконується скрипт, який зберігає особисті дані користувача (паролі, платіжні дані і т.д.), або відправляє СПАМ повідомлення від особи користувача, або змінює доступ до облікового запису користувача для отримання повного контролю над ним.

Code Injection (SQL, PHP, ASP і т.д.) – це вид уразливості, при якому стає можливо здійснити запуск виконуваного коду з метою отримання доступу до системних ресурсів, несанкціонованого доступу до даних або виведення системи з ладу.

Server-Side Includes (SSI) Injection – це вид уразливості, що використовує вставку серверних команд в HTML-код або запуск їх безпосередньо з сервера.

Authorization Bypass – це вид уразливості, при якому можливо отримати несанкціонований доступ до облікового запису або документів іншого користувача.

Набагато більше інформації на курсі базовий модуль тестування