Пентест веб-приложений: инвестиция в безопасность и защиту информации
Деятельность разработчика веб-приложений связана с различными архитектурными проблемами: от выбора компонентов и оптимизации работы сайта до аудита соответствия требованиям. Кроме того, на различных стадиях создания программных продуктов необходимо «отлавливать» и закрывать разнообразные проблемы безопасности. Согласно статистике Positive Technologies доля веб-приложений, содержащих уязвимости высокой степени риска, составила 66% в 2020 году, а в 2021 году — 62%.
Незакрытые проблемы безопасности могут спровоцировать серьезные инциденты, привести к финансовым и репутационным потерям. В качестве примера одного таких событий можно привести массовый дефейс веб-сайтов, разработанных на CMS «Битрикс» (весной этого года), в результате чего компании понесли огромные убытки. В данном материале Кристина Гук, консультант по информационной безопасности RTM Group, объясняет, почему важно заниматься безопасностью веб-приложений и регулярно проводить пентест.
Защиты много не бывает
Лучшей практикой является обеспечение «эшелонированной» защиты сразу на нескольких уровнях: серверном, пользовательском, приложении и бизнес-логики. Вся среда функционирования и сам веб-ресурс должны быть устойчивы к компьютерным атакам, обеспечивать надежную защиту конфиденциальной информации и быть способными адаптироваться к меняющимся угрозам в течение времени.
Поддержание безопасности серверной инфраструктуры, «хоста», а также веб-сервера является базовой задачей обеспечения защищенности приложения, и обеспечивается посредством защиты от атак типа «отказ в обслуживании», межсетевого экранирования, систем обнаружения и предотвращения вторжений, резервного копирования и защиты событий безопасности.
Не менее важный аспект — это безопасность бизнес-логики, которая требует внимательного анализа и управления рисками, чтобы обеспечить защищенность хранимой информации. Необходимо уделить внимание не только программному коду и его функциональным конструкциям, но и логике информационных потоков.
Безопасность конечных пользователей веб-приложений требует обеспечения надежного и защищенного взаимодействия с продуктом: клиент должен быть уверен, что его данные надежно защищены от внешних посягательств, включая атаки “человек посередине”, недостатки криптографической защиты, утечки конфиденциальной информации, наличие уязвимостей межсайтового скриптинга и других уязвимостей.
Все эти требования считаются критически важными, когда речь идет об эффективной защите своих веб-приложений от потенциальных угроз, на которые может повлиять не только разработчик, но и пользователь.
Что бывает с компаниями, которые пренебрегают правилами безопасности веб-приложений?
Исследование Positive Technologies, посвященное данной теме, содержит несколько важных цифр, иллюстрирующих ситуацию. По данным специалистов этой компании, утечки важных данных имели место в 91% веб-приложений. Чаще всего раскрывались идентификаторы пользователей (в 84% случаев). Две трети приложений оказались подвержены раскрытию персональных данных, а около половины — утечкам учетных данных пользователей.
Общемировая статистика также показывает, что ущерб от утечек в разных странах растет. По данным отчета IBM, в 2022 году средняя стоимость утечки данных достигла рекордно высокого уровня — 4,35 млн долларов, что на 2,6% больше, чем в 2021 году.
Одним из громких взломов веб-ресурсов стала утечка данных с сайта российской ИБ-компании BI.ZONE в мае 2023 года. Злоумышленники получили доступ к резервным копиям сервера с лендинговыми страницами: были опубликованы SQL-дампы, содержащие данные их пользователей, включая имена, телефоны, адреса электронной почты, места работы.
Согласно комментариям BI.ZONE, скорее всего, злоумышленники смогли получить доступ к FTP-серверу хостинг-провайдера через панель управления из-за нарушений в мерах его защиты (вспомним про требования к защите среды функционирования).
Сознательность и периодическое проведение тестирования на проникновение внешних границ сетевой инфраструктуры помогли бы избежать этого досадного инцидента, но мало кто задумывается, что защищать свои ресурсы и информационные активы необходимо превентивно.
Так для чего же нужен пентест?
Тестирование на проникновение — это имитация действий потенциального злоумышленника («хакера»), но не с целью навредить, а с целью выявить и исправить найденные изъяны в безопасности. Специалисты по тестированию на проникновение — пентестеры — выполняют свою работу в соответствии с договором и соглашением о неразглашении конфиденциальной информации, а потом формируют отчет, в котором детально описывают все предпринятые ими действия, выполненные проверки, использованный инструментарий, а также достигнутые результаты в поиске слабостей и уязвимостей веб-ресурса.
Чаще всего процесс тестирования на проникновение происходит так: пентестеры, после подписания всех необходимых документов, используя различные специализированные утилиты и инструменты, проводят исследование веб-приложения с целью найти все возможные векторы атак — например, устаревшие и уязвимые модули, ошибки в логике работы, способные привести к нарушению защищенности информации, недостатки в протоколах и защите среды функционирования, а также иные альтернативные пути «взлома». В дальнейшем, с помощью собранной информации, они предпринимают попытки воздействия и эксплуатации выявленных недостатков, чтобы верифицировать и задокументировать найденные изъяны в безопасности ресурса.
Используются различные методы тестирования: сигнатурный, трассировочный и эвристический. Сигнатурный анализ основан на использовании заранее известных «сигнатур» или идентификаторов, характерных для уязвимого программного обеспечения. В то время как эвристический анализ рассматривает логику приложения и использует паттерны для идентификации потенциально уязвимого кода. Трассировочный анализ применяется для отслеживания хода выполнения программы, когда тестировщик может самостоятельно контролировать весь процесс сетевого взаимодействия с приложением.
Рассмотрим работу пентестеров детальнее
Существуют международные классификации наиболее распространенных и опасных недостатков веб-приложений, которых придерживаются пентестеры при проведении тестирования. Одним из таких перечней является OWASP TOP 10.
Основываясь на нашей практике, можем сказать, что в ходе проведения тестирования на проникновение веб-приложений чаще всего встречаются следующие типы уязвимостей: инъекции, межсайтовый скриптинг, межсайтовая подделка запроса, уязвимые или неподдерживаемые компоненты, непроверенные перенаправления, уязвимости с выходом за пределы директорий.
Помимо OWASP TOP 10, существует и общепризнанная методология – OWASP WSTG. В ней описываются приёмы, методики, инструменты и ресурсы для тестирования уязвимостей веб-приложений. WSTG охватывает следующие области тестирования:
- Сбор информации
- Тестирование управления конфигурациями и развёртыванием
- Тестирование управления идентификацией
- Тестирование аутентификации
- Тестирование авторизации
- Тестирование управления сессиями
- Тестирование контроля входных данных
- Тестирование обработки ошибок
- Тестирование криптографии: TLS и шифрование
- Тестирование бизнес-логики
- Тестирование на стороне клиента
- Тестирование API
Для того, чтобы помочь разработчику в устранении выявленных недостатков, в отчет по результатам пентеста включают идентификаторы CWE (MITRE Common Weakness Enumeration) для каждой выявленной уязвимости. Это позволяет лучше понять первопричину возникновения, возможные негативные воздействия и варианты устранения изъянов в исходном коде веб-приложения, конфигурациях веб-сервера или среды функционирования.
Кроме того, существует три основных сценария проведения тестирования на проникновение:
- Черный ящик — это случай, когда Исполнителю известно минимальное количество данных для проведения пентеста (IP адреса или домен веб-приложения);
- Серый ящик — Исполнителю предоставляются ограниченные знания о системе и учетные записи непривилегированных пользователей в различные сервисы: например, к личному кабинету на сайте;
- Белый ящик — когда Исполнитель получает полную и детальную информацию о системе, включая исходный код, архитектуру и техническую документацию.
Что в итоге?
В результате проведения тестирования на проникновение Заказчик получает комплексную информацию о защищенности веб-ресурса: какие потенциальные и реальные угрозы он содержит, какие ошибки в ходе разработки были допущены, какими методами это было обнаружено, а также рекомендации по устранению всех выявленных недостатков.
Однако, важно осознавать необходимость проведение пентестов на регулярной основе, особенно если речь идет о развивающихся продуктах либо о продуктах, использующих решения с открытым исходным кодом. Ведь если проверка сегодня не показала никаких критических уязвимостей, то далеко не факт, что через полгода-год энтузиасты не найдут в какой-нибудь используемой библиотеке новые недостатки, которые позволят «взломать» когда-то исследованное веб-приложение.