SOT

Security Orchestration Tools

Напишите нам на sales@securityvision.ru или закажите демонстрацию

Динамический анализ исходного кода

Динамический анализ исходного кода

  |  Слушать на Google Podcasts  |   Слушать на Mave  |   Слушать на Яндекс Музыке  |  


Роман Душков, Security Vision


Мы уже разбирали продукты и методики анализа исходного кода приложений путём поиска в содержимом уязвимых мест и сравнения с базой знаний экспертов, а сегодня разберем динамический анализ (Dynamic Application Security Testing, DAST). Он проводится в уже существующих платформах после компиляции исходного кода и может быть совмещён с предыдущими методами. Такой подход позволяет сделать анализ живым и постоянным, эффективно внедряясь в сам процесс разработки (DevSecOps) и при этом не нарушая скорость выхода новых версий продуктов, обновления сайта или миграции базы данных.


Основа динамического анализа – осуществление атак на приложение и поиск уязвимостей, который можно проводить без специальных продуктов. Такой подход является достаточно распространенным: многие компании объявляют награды за найденные уязвимости, вовлекая таким образом белых хакеров в обеспечение своей собственной безопасности. Все, что для этого нужно – иметь в публичном доступе свой сервис (например, сайт для онлайн-банкинга) или просто выдать лицензии на своё программное обеспечение интересующимся. Сам процесс можно назвать тестированием в режиме «чёрного ящика» (его так называют, поскольку доступа к исходному коду нет, а приложение используется в режиме «как есть»). Угадать, что внутри и как этим воспользоваться, предстоит пользователям. Такой процесс называется bounty hunting (охота за наградой) и похож на поиск сокровища без карты или охоту на покемонов. К слову, в 2022 году в рамках программ Bug Bounty корпорация Google выплатила 12 миллионов долларов (самая крупная выплата составила 605 000 долларов).


Несмотря на популярность и доступность такого метода, на рынке стали востребованы также автоматические системы, которые «атакуют» приложение без участия людей.


2023-02-28_19-53-43.png

Рис. 1 – Механизмы динамического анализа кода


Инструментам DAST все равно, где в вашей архитектуре произошли изменения. Еще одна особенность DAST заключается в том, что это единственный метод тестирования безопасности, который не зависит от языка программирования. DAST не просматривает исходный код, байт-код или ассемблерный код; он просто проверяет готовый продукт. Базовый модуль DAST присутствует в open-source и коммерческих решениях по анализу уязвимостей, более продвинутые механизмы существуют в  w3af или sqlmap. Работа таких инструментов похожа на проверку газовых труб на утечку, только вместо мыльного раствора и труб – искусственные атаки и ваше приложение.


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


Более того, некоторые DAST-решения позволяют не только обнаруживать уязвимости, проводя атаки-«пустышки» на приложение, но и организовать эффективную защиту на лету. Такой процесс называется патчингом и чем-то похож на блокировку дороги во время ремонта или проезда кортежа. Уязвимое место найдено (в нашем примере это определенная дорога) и должно быть временно закрыто, пока уязвимость не устранена. Закрыть уязвимость можно вручную и автоматически, запустив новый процесс, когда заплатка помещается в уязвимое место до выпуска обновлённой версии приложения. Есть вендоры, которые комбинируют несколько продуктов, совмещая DAST со средствами зашиты (например, WAF), но при желании такой процесс можно настроить и автоматизировать самостоятельно, применяя средства для интеграции «разношёрстных» продуктов.


Начать проверку кода можно с применением бесплатных решений, одно из которых – продукт OWASP ZAP (Zed Attack Proxy). Продукт имеет расширения для различных инструментов CI/CD. Его функциональность не очень обширна и глубока, но её можно дописать и улучшить, если привлечь свои ресурсы или партнёров. Применение коммерческих инструментов позволит модифицировать и упростить процесс проверки. Его можно условно разделить на несколько частей:

· Построение дерева приложения, когда сканер кликает на все кнопки и открывает все возможные интерфейсы, как будто сенсорный экран «заглючило» после намокания под дождём. Только приложение делает этот краулинг умышленно, чтобы понять все взаимосвязи и возможности для получения доступа к данным.

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

· Осуществление атаки на приложение, когда DAST в зависимости от интерфейса, определенного ранее, пытается «простукать» систему своими атаками. Атаки обычно безвредны и не несут реальной угрозы (часто не несут даже смысла, а только пустые заголовки), поэтому ущерба работе приложения быть не должно.

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


Поскольку анализ проходит на уже развёрнутой системе, появились два подхода:

1. Чтобы не повредить продукту и его развитию, лучше иметь отдельный стенд для тестирования. Физически это выглядит как копия приложения в изолированной среде, с которой работает динамический сканер. При таком подходе нужно продумать о дополнительном «железе», зато будет не страшно использовать DAST решения в первое время.

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


Если для динамического тестирования вместе с готовым приложением дополнительно выдать исходный код, процесс можно преобразить в интерактивный анализ (Interactive Application Security Testing, IAST). Применение методик также эффективно при публикации исходного кода, когда в публичные репозитории разработчик полностью выкладывает свои наработки. Это похоже на то, как если бы вы опубликовали собственные рецепты коктейлей и блюд, чтобы весь мир смог повторить ваш успех и порадовать гостей дома. Такой подход позволит широкому мировому сообществу участвовать в развитии, применять одновременно статические, динамические сканеры и их комбинации, но делать это необязательно – сканеры могут работать и on-premise, без транслирования ваших приложений и наработок за пределы компании. В любом случае, динамический сканер должен найти и подсветить уязвимые места, чтобы разработчики новой версии устранили проблему или чтобы ИТ-специалисты смогли поставить «заплатку» и просто не пропускать трафик в уязвимую сторону (обычно так делают, если это не влияет на функционирование приложения).


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

Аудит информационной безопасности Стандарты, ГОСТы и документы ИБ Управление ИБ Управление уязвимостями (VM) Подкасты ИБ

Похожие статьи

Deep Packet Inspection (DPI) - что это такое?
Deep Packet Inspection (DPI) - что это такое?
Управление инцидентами и оркестрацией различных СЗИ. Обзор NG SOAR
Управление инцидентами и оркестрацией различных СЗИ. Обзор NG SOAR
Как Zeek и Malcolm помогают не только пассивно анализировать сетевой трафик, но и своевременно реагировать на угрозы
Как Zeek и Malcolm помогают не только пассивно анализировать сетевой трафик, но и своевременно реагировать на угрозы
ARP-спуфинг (ARP spoofing, ARP poisoning): что это такое
ARP-спуфинг (ARP spoofing, ARP poisoning): что это такое
Что такое брутфорс и как от него защититься?
Что такое брутфорс и как от него защититься?
Расследование инцидентов и использование специализированных инструментов
Расследование инцидентов и использование специализированных инструментов
Как устроены вредоносные программы
Как устроены вредоносные программы
Взлом на заказ: кто и зачем это делает, что чаще всего взламывают
Взлом на заказ: кто и зачем это делает, что чаще всего взламывают
Security Vision NG SGRC, или Новые горизонты автоматизации процессов
Security Vision NG SGRC, или Новые горизонты автоматизации процессов
Деловые игры рыцарей круглого стола
Деловые игры рыцарей круглого стола
XSS, Межсайтовый скриптинг (Cross-Site Scripting)
XSS, Межсайтовый скриптинг (Cross-Site Scripting)

Похожие статьи

Deep Packet Inspection (DPI) - что это такое?
Deep Packet Inspection (DPI) - что это такое?
Управление инцидентами и оркестрацией различных СЗИ. Обзор NG SOAR
Управление инцидентами и оркестрацией различных СЗИ. Обзор NG SOAR
Как Zeek и Malcolm помогают не только пассивно анализировать сетевой трафик, но и своевременно реагировать на угрозы
Как Zeek и Malcolm помогают не только пассивно анализировать сетевой трафик, но и своевременно реагировать на угрозы
ARP-спуфинг (ARP spoofing, ARP poisoning): что это такое
ARP-спуфинг (ARP spoofing, ARP poisoning): что это такое
Что такое брутфорс и как от него защититься?
Что такое брутфорс и как от него защититься?
Расследование инцидентов и использование специализированных инструментов
Расследование инцидентов и использование специализированных инструментов
Как устроены вредоносные программы
Как устроены вредоносные программы
Взлом на заказ: кто и зачем это делает, что чаще всего взламывают
Взлом на заказ: кто и зачем это делает, что чаще всего взламывают
Security Vision NG SGRC, или Новые горизонты автоматизации процессов
Security Vision NG SGRC, или Новые горизонты автоматизации процессов
Деловые игры рыцарей круглого стола
Деловые игры рыцарей круглого стола
XSS, Межсайтовый скриптинг (Cross-Site Scripting)
XSS, Межсайтовый скриптинг (Cross-Site Scripting)