logo
Ещё

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

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

Для чего нужно тестирование безопасности

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

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

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

Результатом становится испорченная деловая репутация и имидж. Причем не только и не сколько компании-разработчика ПО, столько конечного пользователя программного продукта. Который с высокой степенью вероятности попытается компенсировать ущерб посредством предъявления претензий к программистам.

Самый простой способ не допустить развития событий по такому малопривлекательному сценарию предусматривает проведение тестирования на безопасность перед выводом ПО на рынок.

Виды тестов на безопасность

Современное тестирование безопасности ПО – это комплекс мероприятий. Он предусматривает проведение проверки сразу по нескольким направлениям. Чаще всего к ним относятся следующие виды тестирования:

  1. На проникновение (Penetration Testing). В сегодняшних условиях считается одним из самых востребованных тестов программного обеспечения. Поэтому специалистов по тестированию безопасности нередко называют пентестерами. Фактически, проверяет защиту ПО от хакеров, так как имитирует их массовую атаку посредством попытки взлома системы извне.
  2. Сканирование уязвимостей (Vulnerability Scanning) и сканирование безопасности (Security Scanning). Два схожих вида проверки, имеющих несколько разную направленность. Первый ориентирован на обнаружение в приложении точек для несанкционированного входа. Второй – на выявление слабых мест в информационных системах. Оба предусматривают задействование специализированных сервисов.
  3. Оценка рисков (Risk Assessment). Предусматривает выявление и определение уровня существующих угроз безопасности ПО с точки зрения негативного влияния на бизнес-процессы в предприятии. Важной особенностью этого вида тестирования выступает тесная взаимосвязь с коммерческими составляющими работы компании.
  4. Оценка положения (Posture Assessment). Менее распространенный вид проверки. Включает определение соответствия имеющихся процессов безопасности действующим стандартам и правилам. Позволяет установить степень готовности системы к потенциальным угрозам информационной безопасности.
  5. Аудит безопасности (Security Auditing). Комплексная проверка текущего уровня безопасности программного обеспечения. Применяется в отношении как новых продуктов, так и уже используемого ПО.
  6. Этический взлом (Ethical Hacking). Современная разновидность тестирования, которая во многом аналогична проверке на проникновение. Предусматривает имитацию действий хакера с целью взлома информационной системы.

Что входит в тестирование на проникновение

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

В настоящее время активно применяется три вида пентестов, различающихся уровнем доступа к проверяемой информационной системе. Традиционно он обозначается в качестве ящика с разной степенью прозрачности:

  1. Белый (внутренний). Пентестеру доступна вся информация о программном продукте и системе. Что упрощает их взлом и усложняет защиту. Результатом становится полноценная проверка, требующая соответствующей подготовки и трудозатрат.
  2. Черный (внешний). Тестировщик самостоятельно ищет интересующую информацию. Поэтому атака хакера точно имитирует реальные условия. Что дает на выходе объективность результатов, которые могут быть искажены из-за отсутствия учета всех возможных уязвимостей.
  3. Серый (смешанный). Комбинация двух первых методов. Считается универсальным способом тестирования, удачно совмещающим плюсы и нивелирующим минусы предыдущих.

Процедура проверки ПО на проникновение предусматривает последовательное выполнение нескольких этапов:

  1. Сбор исходных данных. Их комплектность зависит от вида пентеста и задач, поставленных заказчиком.
  2. Оценка уязвимостей. Сначала осуществляется их поиск, после чего определяется потенциальная опасность каждой.
  3. Проверка обнаруженных слабых мест. Предполагает имитацию хакерской атаки. При этом задействуются различные инструменты, частично описанные в следующем разделе статьи.
  4. Пролонгация доступа к данным и информационной системе. Уровень безопасности зависит от того, как быстро будет обнаружена и устранена утечка конфиденциальной информации или потеря контроля над системой. Поэтому пентестер пытается удержать доступ как можно дольше.
  5. Зачистка. Предусматривает устранение следов несанкционированного присутствия «хакера». Что позволяет повторить взлом в случае необходимости.
  6. Составление отчета. Итоговый документ, в котором содержатся результаты пентеста. Включая перечень уязвимостей, потенциальные риски и угрозы, а также рекомендации по устранению слабых мест, разработанные тестировщиком (пентестером).

Обзор инструментов и сервисов для тестирования

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

  1. Kali Linux и другие подобные программы. Специализированный инструмент, предназначенный для проведения комплексного тестирования ПО в разных аспектах безопасности.
  2. Nmap, Wireshark и т.д. Сервисы сканирования сетей. Определяют активные устройства, производят анализ открытых портов, собирают сведения о действиях пользователя и сетевой инфраструктуре.
  3. Dig, Whois-service, nslookup и т.п. Сервисы сбора данных о домене, владельце, хостинге и используемом IP.
  4. QARK, Vega, Burp Suite, OpenVAS и другие. Программы для анализа безопасности веб-сайтов и мобильных приложений. Ориентированы на диагностику уязвимостей, касающихся работы протоколов HTTP и HTTPS.
  5. Net-Creds (встроен в Kali Linux), Hydra, John The Ripper, Hashcat и т.д. Специализированные утилиты для перебора и восстановления паролей пользователей к различным информационным системам и программам.
  6. Cobalt Strike, Metasploit (встроен в Kali Linux). Сервисы для атаки на сетевые системы с целью обнаружения слабых мест и сбора данных о уязвимостях.
  7. GoPhish, Social-Engineer Toolkit (встроен в Kali Linux) и другие фреймворки. Программы для хакерской атаки информационных систем с использованием человеческого фактора. Например, посредством отправки фишинговых писем или применением методов социальной инженерии.
  8. Kismet, Aircrack-ng и т.п. Сервисы тестирования безопасности и паролей Wi-Fi или других беспроводных сетей.

Какие проблемы чаще всего обнаруживаются

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

  1. Ошибки программного кода.
  2. Неправильные настройки информационной системы или компьютерного оборудования.
  3. Старая версия прошивки.
  4. Недостатки конструкции.
  5. Низкий уровень квалификации персонала.

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

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

Анализ результатов и составление отчета

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

  1. Наименование и дата составления.
  2. Сведения об эксперте, проводившем тестирование и составившем отчет.
  3. Основание для проведения пентеста (и других тестов – при необходимости).
  4. Исходные данные, предоставленные заказчиком.
  5. Использованные для проверки инструменты.
  6. Условия проведения тестирования.
  7. Особенности процедуры (фактические).
  8. Полученные результаты (с перечислением и подробным описанием выявленных уязвимостей).
  9. Рекомендации по устранению слабых мест в системе безопасности ПО.
  10. Дополнительная информация или сопроводительная документация к отчету (приложения, ссылки, список литературы и других источников, расшифровки использованных аббревиатур, примечания и т.д.)

FAQ

Что понимается под тестированием безопасности программного обеспечения?

Это комплексная проверка ПО на предмет соблюдения базовых принципов информационной безопасности: конфиденциальности, целостности и доступности.

Каковы цели его проведения?

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

Кто такие пентестеры и чем они занимаются?

Это тестировщики, которые проводят проверку на проникновение (то есть хакерскую атаку). Такой вид тестирования является самым эффективным и распространенным. Поэтому специалистов в области информационной безопасности часто называют пентестерами.

Вывод

  1. Тестирование безопасности ПО – важная часть разработки и эксплуатации любого программного продукта.
  2. Цель проведения проверки – выявление уязвимостей, которыми могут воспользоваться злоумышленники для получения несанкционированного доступа к конфиденциальной информации.
  3. Самым распространенным и популярным считается так называемый пентест, то есть тест на проникновение.
  4. Он имитирует хакерскую атаку и проводится специализированным тестировщиком – пентестером.
  5. Результатом тестирования безопасности ПО становится отчет с перечислением обнаруженных уязвимостей и рекомендациями специалиста по их устранению.