Пентест веб-приложений: инвестиция в безопасность и защиту информации

Деятельность разработчика веб-приложений связана с различными архитектурными проблемами: от выбора компонентов и оптимизации работы сайта до аудита соответствия требованиям. Кроме того, на различных стадиях создания программных продуктов необходимо «отлавливать» и закрывать разнообразные проблемы безопасности. Согласно статистике Positive Technologies доля веб-приложений, содержащих уязвимости высокой степени риска, составила 66% в 2020 году, а в 2021 году — 62%.

Пентест веб-приложений: инвестиция в безопасность и защиту информации

Незакрытые проблемы безопасности могут спровоцировать серьезные инциденты, привести к финансовым и репутационным потерям. В качестве примера одного таких событий можно привести массовый дефейс веб-сайтов, разработанных на CMS «Битрикс» (весной этого года), в результате чего компании понесли огромные убытки. В данном материале Кристина Гук, консультант по информационной безопасности RTM Group, объясняет, почему важно заниматься безопасностью веб-приложений и регулярно проводить пентест.

Рис 1. Доли уязвимых веб-приложений в зависимости от максимальной степени риска уязвимостей 
Рис 1. Доли уязвимых веб-приложений в зависимости от максимальной степени риска уязвимостей 

Защиты много не бывает

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

Поддержание безопасности серверной инфраструктуры, «хоста», а также веб-сервера является базовой задачей обеспечения защищенности приложения, и обеспечивается посредством защиты от атак типа «отказ в обслуживании», межсетевого экранирования, систем обнаружения и предотвращения вторжений, резервного копирования и защиты событий безопасности.

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

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

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

Что бывает с компаниями, которые пренебрегают правилами безопасности веб-приложений?

Исследование Positive Technologies, посвященное данной теме, содержит несколько важных цифр, иллюстрирующих ситуацию. По данным специалистов этой компании, утечки важных данных имели место в 91% веб-приложений. Чаще всего раскрывались идентификаторы пользователей (в 84% случаев). Две трети приложений оказались подвержены раскрытию персональных данных, а около половины — утечкам учетных данных пользователей.

Общемировая статистика также показывает, что ущерб от утечек в разных странах растет. По данным отчета IBM, в 2022 году средняя стоимость утечки данных достигла рекордно высокого уровня — 4,35 млн долларов, что на 2,6% больше, чем в 2021 году.

Одним из громких взломов веб-ресурсов стала утечка данных с сайта российской ИБ-компании BI.ZONE в мае 2023 года. Злоумышленники получили доступ к резервным копиям сервера с лендинговыми страницами: были опубликованы SQL-дампы, содержащие данные их пользователей, включая имена, телефоны, адреса электронной почты, места работы.

Рис.2 Данные, которые удалось получить злоумышленникам в ходе взлома компании BI.ZONE 
Рис.2 Данные, которые удалось получить злоумышленникам в ходе взлома компании BI.ZONE 

Согласно комментариям BI.ZONE, скорее всего, злоумышленники смогли получить доступ к FTP-серверу хостинг-провайдера через панель управления из-за нарушений в мерах его защиты (вспомним про требования к защите среды функционирования).

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

Так для чего же нужен пентест?

Тестирование на проникновение — это имитация действий потенциального злоумышленника («хакера»), но не с целью навредить, а с целью выявить и исправить найденные изъяны в безопасности. Специалисты по тестированию на проникновение — пентестеры — выполняют свою работу в соответствии с договором и соглашением о неразглашении конфиденциальной информации, а потом формируют отчет, в котором детально описывают все предпринятые ими действия, выполненные проверки, использованный инструментарий, а также достигнутые результаты в поиске слабостей и уязвимостей веб-ресурса.

Чаще всего процесс тестирования на проникновение происходит так: пентестеры, после подписания всех необходимых документов, используя различные специализированные утилиты и инструменты, проводят исследование веб-приложения с целью найти все возможные векторы атак — например, устаревшие и уязвимые модули, ошибки в логике работы, способные привести к нарушению защищенности информации, недостатки в протоколах и защите среды функционирования, а также иные альтернативные пути «взлома». В дальнейшем, с помощью собранной информации, они предпринимают попытки воздействия и эксплуатации выявленных недостатков, чтобы верифицировать и задокументировать найденные изъяны в безопасности ресурса.

Используются различные методы тестирования: сигнатурный, трассировочный и эвристический. Сигнатурный анализ основан на использовании заранее известных «сигнатур» или идентификаторов, характерных для уязвимого программного обеспечения. В то время как эвристический анализ рассматривает логику приложения и использует паттерны для идентификации потенциально уязвимого кода. Трассировочный анализ применяется для отслеживания хода выполнения программы, когда тестировщик может самостоятельно контролировать весь процесс сетевого взаимодействия с приложением.

Рассмотрим работу пентестеров детальнее

Существуют международные классификации наиболее распространенных и опасных недостатков веб-приложений, которых придерживаются пентестеры при проведении тестирования. Одним из таких перечней является OWASP TOP 10.

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

Помимо OWASP TOP 10, существует и общепризнанная методология – OWASP WSTG. В ней описываются приёмы, методики, инструменты и ресурсы для тестирования уязвимостей веб-приложений. WSTG охватывает следующие области тестирования:

  • Сбор информации
  • Тестирование управления конфигурациями и развёртыванием
  • Тестирование управления идентификацией
  • Тестирование аутентификации
  • Тестирование авторизации
  • Тестирование управления сессиями
  • Тестирование контроля входных данных
  • Тестирование обработки ошибок
  • Тестирование криптографии: TLS и шифрование
  • Тестирование бизнес-логики
  • Тестирование на стороне клиента
  • Тестирование API

Для того, чтобы помочь разработчику в устранении выявленных недостатков, в отчет по результатам пентеста включают идентификаторы CWE (MITRE Common Weakness Enumeration) для каждой выявленной уязвимости. Это позволяет лучше понять первопричину возникновения, возможные негативные воздействия и варианты устранения изъянов в исходном коде веб-приложения, конфигурациях веб-сервера или среды функционирования.

Кроме того, существует три основных сценария проведения тестирования на проникновение:

Рис. 3 Классификация видов пентеста по исходным данным 
Рис. 3 Классификация видов пентеста по исходным данным 
  • Черный ящик — это случай, когда Исполнителю известно минимальное количество данных для проведения пентеста (IP адреса или домен веб-приложения);
  • Серый ящик — Исполнителю предоставляются ограниченные знания о системе и учетные записи непривилегированных пользователей в различные сервисы: например, к личному кабинету на сайте;
  • Белый ящик — когда Исполнитель получает полную и детальную информацию о системе, включая исходный код, архитектуру и техническую документацию.

Что в итоге?

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

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

Начать дискуссию