Тестирование безопасности

Один из видов Quality Assurance – это тестирование безопасности. Давайте познакомимся с ним поближе.

Тестировщик » QA-блог » Методы » Тестирование безопасности

Security Testing: проверяем защиту ПО от взлома

Иногда проскакивают новости о том, что в какой-то IT-системе выявили утечку данных. Или вредоносный код, проникший в программу, привел к огромному ущербу для бизнеса. Чтобы таких случаев становилось меньше, ПО следует тестировать в том числе и с точки зрения его безопасности.

На изображение тестирование безопасности.

Что это такое и как это делается – об этом в нашей статье.

Что такое тестирование безопасности

Тестирование безопасности (Security Testing) – это вид нефункционального тестирования ПО, который проверяет IT продукт на возможность его взлома и потери информации. Оно выявляет уязвимости, угрозы и риски для случаев, когда условный злоумышленник захочет получить контроль над самой программой или данными пользователей.

Цель Security Testing

Целью тестов безопасности является выявление всех возможных лазеек в ПО, которые при злом умысле пользователей могут привести к:

  • потере информации, содержащейся в продукте;
  • разрушению репутации компании-разработчика как допустившей утечку данных;
  • снижению доходов вследствие падения продаж из-за утечек;
  • ущербу для бизнеса клиентов-пользователей;
  • негативным последствиям для стейкхолдеров.

Тестирование безопасности требуется, чтобы обеспечить реноме компании как надежного поставщика ПО. Для этого следует заранее выявить и ликвидировать потенциальные «дыры» в безопасности IT продукта.

Три аспекта тестирования безопасности

В ходе тестирования безопасности QA специалисты обследуют IT продукт на предмет наличия в нем слабых мест. Считается, что программное обеспечение должно обеспечить три основных аспекта безопасности:

  1. Конфиденциальность – чтобы данные пользователя не попали в чужие руки;
  2. Целостность – чтобы изменения в ПО мог вносить только пользователь/администратор, имеющий на это полномочия;
  3. Доступность – чтобы ресурсы ПО были доступны пользователю только тогда, когда он надлежащим образом авторизовался.

Кто и как выполняет тестирование безопасности

Проверять безопасность ПО может как тестировщик, так и сам разработчик (если имеет соответствующие навыки). В процессе такой проверки исследователь играет роль злоумышленника. Он пытается «взломать» программу и тем самым нарушить один из аспектов безопасности. 

Для этого он может использовать разные приемы, например:

  • Анализировать уже известные (неконфиденциальные) сведения, чтобы с их помощью вычислить пару логин-пароль;
  • Специально вводить в ПО некорректные данные, чтобы спровоцировать ее ошибку;
  • Попытаться проникнуть в систему в ходе процедуры восстановления пароля;
  • Попробовать перехватить пароль с помощью внешних устройств;
  • Атаковать систему с помощью специальных утилит для взлома;
  • Обеспечить перегрузку системы запросами (DDOS), чтобы она отказалась обслуживать всех или часть клиентов.

Считается, что если у злоумышленника есть неограниченные ресурсы, то он может взломать любую систему. Поэтому тестирование безопасности, по сути, проверяет, что затраты на взлом окажутся существенно выше, чем выгода злоумышленника.

Что надо проверить в первую очередь при тестировании безопасности:

Исходя из текущей практики взломов ПО, можно определить компоненты продукта с наибольшим риском с точки зрения безопасности. Их и нужно тестировать в первую очередь. К таким потенциально слабым местам относятся:

  • Ошибка в процедуре авторизации. Система может позволить зарегистрироваться в системе постороннему пользователю. Еще хуже – если после этого он сможет увидеть данные других пользователей. Это тестируется с помощью проверки работы ПО под разными учетными записями.
  • Уязвимость перед SQL-инъекциями. Есть специальные команды SQL, которые при их вводе в поля системы могут собрать конфиденциальную информацию. Чтобы этого не произошло, надо протестировать невозможность ввода некоторых символов и ограничение длины вводимых данных.
  • Управление правами пользователей. Если там будет ошибка, доступ к данным может получить человек, которому он не положен. Тестируется через исследование работы ПО под учетками с разными правами и ролями.
  • Отсутствие шифрования ключевых данных. Например, реквизиты банковской карты. Надо проверять, что самые важные данные хранятся в зашифрованном виде.
  • Передача данных. Надо проверить, что конфиденциальные данные передаются не по HTTP, а по HTTPS, защищенному с помощью SSL.
  • Уязвимость перед атакой грубой силы (Brute Force Attack). Есть специальные утилиты, которые генерируют пароли (методом перебора) и пытаются их применить для входа в систему. Естественно, они порождают огромный поток запросов на авторизацию. Поэтому здесь надо проверить, что после определенного количества некорректных попыток авторизации система блокирует данную учетную запись, например, на сутки.

Резюме

Тестирование безопасности – один из нефункциональных видов Quality Assurance. Оно проверяет устойчивость ПО к взломам и утечкам данных. В процессе тестирования безопасности QA специалист проверяет уязвимые места IT продукта.

на изображение автор Михаил Кулешов

Автор Михаил Кулешов

Михаил, профессиональный партнерский маркетолог, является основателем компании South Media OÜ, которая была создана в 2018 году и базируется в Таллинне. С 2016 года Михаил уехал из Финляндии и жил как настоящий «цифровой кочевник» в IT-индустрии, путешествуя по миру только с ноутбуком. Михаил работает и пишет статьи, связанные с IT-индустрией.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *