Close
Software Test Studio logo

Software Test Studio

Назад Далее

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

image

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

Что же может подвергаться атакам? Да практически всё что связано с проникновением в инфраструктуру, с безопасностью веб-приложений или мобильных приложений, с проникновением в беспроводные сети (wi-fi) либо физические устройства (IoT - “умные” устройства).

Главной задачей для тестировщика это понять что же представляет ценность в программном обеспечении, по сути начать думать как не этичный хакер.

Тестирование безопасности - это область тестирования, направленная на оценку уязвимости программного обеспечения к различным взломам.

Можно выделить три области тестирования безопасности:

- обеспечение внутренней безопасности в компаниях. Комплекс действий, направленный на защиту информации о персонале, проектах и иных данных, потеря которых повлечет потерю репутации компании;
- безопасная разработка (soft security);
- безопасная работа программного обеспечения.

Учитывая данные области существуют следующие виды тестирования:

1. Penetration testing (Пин-тестинг) - тестирование на проникновение. Целью такого тестирования является проникнуть в систему. Необходимо отметить, что цели предварительно согласовываются с заказчиком, при этом иная активность может быть расценена, как незаконная.
2. Security auditing - тестирование направленное на подтверждение того, что безопасность программного обеспечения соответствует принятым требованиям (требованиям регуляторов, политики безопасности, внутренним требованиям безопасности и прочие).
3. Vulnerability assessment - попытка найти все возможные уязвимости в программном обеспечении.

Цикл тестирования безопасности состоит из указанный ниже этапов

image

Подготовка. На данном этапе требуется обсудить с заказчиком цели и задачи тестирования, оговорить объем работ, время проведения тестирования, кроме того сразу определить круг лиц, которые смогут восстановить работу системы в случае нештатных ситуаций, предупредить команду.

Сбор информации. Выясните какие языки программирования использовались при написании программного обеспечения, frameworks, и их версии (при наличии данной информации может быть составлен перечень уязвимостей характерный для определенных версий frameworks).

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

Анализ и эксплуатация. После сбора информации производим поиск характерных особенностей применяемых технологий (особенностей работы баз данных, типичные ошибки конфигурации аппаратной части и ПО, ошибки возникающие при внедрении алгоритмов безопасности SDL (Security Development Lifecycle), уязвимости известных версий frameworks). По результатам анализа начинаем эксплуатировать имеющиеся “дыры”. Кроме того, подтвердите что ошибки, возникающие в процессе эксплуатации программного обеспечения, не обеспечивают доступ к базам данным или html-коду.

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

Все о тестировании