Supply Chain Security
Узнать большеБольше 80% приложений содержат как минимум одну критическую уязвимость. Слабые места в коде приложений позволяют хакерам совершать кражи персональных, платежных данных и других конфиденциальных сведений. Чтобы минимизировать подобные риски, важно на каждом этапе разработки контролировать безопасность разрабатываемого ПО и как можно раньше выявлять уязвимости и ошибки, чтобы устранить их до запуска ПО. Таким образом удастся сэкономить время и ресурсы и получить на выходе качественный безопасный продукт.
Среди других методов проверки кода часто используют DAST — динамический анализ кода. Это сканирование, подразумевающее моделирование реальных атак на приложение с целью поиска уязвимостей, которые могут быть проэксплуатированы злоумышленниками. Это эффективный метод тестирования, способный выявить слабые места в готовом работающем приложении. Обсудим подробнее, как он работает и как его внедрить в цикл SSDLC.
Что такое динамическое тестирование DAST
Dynamic Application Security Testing — проверка ПО на наличие уязвимостей путем моделирования реальных атак с попыткой использования уязвимостей ПО. Анализ происходит с помощью специальных инструментов, позволяющих автоматизировать процесс. Например, сканеры могут имитировать случайные или пользовательские действия.
Динамический анализ программного кода относится к тестированиям методом «черного ящика», поскольку не предполагает детального погружения в структуру программного обеспечения и доступа к исходному коду приложения. Несмотря на это, такая проверка позволяет обнаружить уязвимости и ошибки, которые могут возникнуть при эксплуатации приложения в реальной рабочей среде. Также в ходе динамического анализа выявляются недостатки кода ПО, эксплуатируемые злоумышленниками для проведения различных инъекций кода (например, command injection и SQL-инъекций).
Цели DAST
С помощью динамического анализа программного кода можно выявить проблемы, которые сложно обнаружить другими видами сканирований, и подтвердить уязвимости, найденные другими инструментами анализа. В частности, речь о недочетах и ошибках, проявляемых только после запуска программного обеспечения в рабочей среде.
Во-вторых, тестирование помогает повысить уровень защищенности ПО от атак киберпреступников. Одним видом проверки не обойтись, однако DAST играет важную роль в цикле безопасной разработки программных продуктов.
В-третьих, динамическое тестирование позволяет сократить временные и материальные затраты на разработку. С его помощью создателям ПО удается вовремя обнаружить и исправить проблемы, в результате релиз продукта происходит с минимальными задержками при высоком уровне безопасности ПО.
Как работает динамический анализ кода программы
Проверка выполняется в процессе работы проверяемого ПО. Это происходит по следующей схеме:
- Инструмент определяет API сервиса, отправляет проверочные запросы с подставными неверными данными.
- Запускается алгоритм, анализирующий ответы на смоделированные запросы и сравнивающий их с ответами на обычные пользовательские действия.
- На основании сравнения ответов сканеры обрабатывают обнаруженные уязвимости и выдают отчеты по результатам проверки.
Динамическое тестирование необходимо запускать несколько раз в процессе разработки и сборки программного обеспечения. Поэтому следует интегрировать его в цикл безопасной разработки и выбрать анализатор, который будет решать поставленные задачи по автоматизации динамического анализа.
Преимущества и недостатки динамического анализа кода
Первая и главная сильная сторона анализа — тестирование программного обеспечения без исходного кода. Второй плюс — возможность понять, как готовый продукт будет «раскрываться» в рабочей среде. И третье преимущество — минимальное количество ложных срабатываний, которые часто возникают в ходе статического анализа. Здесь подобных проблем не будет, поскольку ПО проверяется на уязвимости в процессе эксплуатации.
Теперь о минусах:
- Необходимость максимальной имитации рабочей среды. Полностью воспроизвести ее не получится, чтобы не скомпрометировать настоящие клиентские данные, а тестовая установка может иметь нюансы, которые влияют на точность проверки.
- Невозможность стопроцентного покрытия кода, поскольку некоторые его компоненты могут быть недоступны при эксплуатации программы с «подставным» набором данных. Важно учитывать, что часть уязвимостей все же может быть упущена – полное покрытие требует использования комплексного подхода.
Чтобы эффективнее проводить динамический анализ кода, невзирая на минусы этого метода, необходимо правильно выбрать анализатор. Инструмент должен поддерживать ручные настройки, своевременно обновляться с учетом передовых технологий в программировании, легко интегрироваться в цикл безопасной разработки. Решение Solar appScreener на 100% отвечает этим требованиям.
Динамический анализ кода в составе комплексной проверки программного обеспечения на уязвимости
Для полноценного контроля безопасности приложений рекомендуем встраивать в цикл разработки ПО несколько видов анализа кода, помимо динамического. В частности, SAST — статический анализ, SCA — проверку состава программного обеспечения и SCS — анализ безопасности цепочки поставок ПО. Все эти виды анализа можно выполнять с помощью одного инструмента — Solar appScreener.
Динамический анализ в Solar appScreener также поддерживает корреляцию результатов двух модулей – SAST и DAST. Это позволяет верифицировать уязвимости, которые нашел статический анализ, с помощью DAST, и приступить к их устранению в первую очередь.