Для проведения тестирования безопасности приложения существуют различные *AST инструменты. Прежде всего это средства для статического тестирования безопасности приложений (SAST), а также средства динамического анализа (DAST). В этой статье мы рассмотрим еще один способ анализа приложений — IAST. Мы сравним этот способ со статическим и динамическим анализом и поговорим о его достоинствах и недостатках.
Зачем нужен анализ кода
Каждое сколько‑нибудь серьезное приложение содержит ошибки. Это аксиома. Современные системы слишком сложны, зависят от множества компонентов и очень часто возникают проблемы как с используемыми зависимостями, так и собственной реализацией кода.
Исправление ошибок в коде стоит денег, и чем раньше они будут обнаружены, тем дешевле нам обойдется их исправление. Если ошибка осталась неисправленной в артефакте, который ушел в продуктив, то последующее исправление потребует не только модификации кода, но и проведения всех необходимых тестов. Также не стоит забывать о репутационных издержках.
Статический анализ
Если мы выявим ошибку на этапе анализа исходного кода, то исправить ее можно будет гораздо быстрее. Инструменты SAST используются для защиты программного обеспечения путем анализа его исходного кода с целью выявления уязвимостей. В отличие от инструментов динамического тестирования безопасности приложений (DAST), предназначенных для тестирования функциональности приложений методом «черного ящика», инструменты SAST фокусируются на содержании кода приложения, выполняя тестирование методом «белого ящика». Решения SAST сканируют исходный код приложений и их компонентов для выявления потенциальных уязвимостей безопасности в их программном обеспечении и архитектуре.
И, хотя инструменты статического анализа могут обнаружить до 50% существующих уязвимостей безопасности в проверяемом коде, у них также имеются определенные недостатки. Во‑первых, решения из коробки могут генерировать большое количество ложных срабатываний, когда безопасный код помечается как опасный.
А во‑вторых, решения SAST видят только исходный код и не видят то, как программа работает в реальности. В результате некоторые уязвимости в коде могут остаться незамеченными для этих решений.
В жизненном цикле разработки программного обеспечения (SDLC) SAST выполняется на ранних этапах процесса разработки и на уровне анализа кода, а также после того, как все фрагменты кода и компоненты собираются в единообразной среде тестирования.
Динамический анализ
Для того, чтобы выявить уязвимости в работающем приложении используется динамический анализ безопасности приложений DAST (Dynamic Application Security Testing). Это метод тестирования, который выполняется на работающем приложении, имитирующий реальные атаки. Также этот метод известен как тестирование по принципу «чёрного ящика», так как анализ проводится извне, без доступа к исходному коду приложения.
Очевидным недостатком DAST является то, что этот метод не обнаруживает уязвимости на уровне исходного кода. Также, анализ методом черного ящика может приводить к большому количеству ложных срабатываний, что тоже затрудняет процесс анализа результатов и создает дополнительную работу для разработчиков.
К тому же, использование инструментов DAST для поиска уязвимостей безопасности во время тестирования/контроля качества или при выпуске приложений в эксплуатацию неэффективно и потенциально затратно, поскольку DAST не может идентифицировать уязвимые строки кода.
Интерактивное тестирование
Логичным решением было попытаться совместить оба метода в один. Для этого предлагается использовать средства программного инструментирования, то есть использования инструментов для мониторинга приложения во время его работы и сбора информации о его действиях и способах работы.
Решения IAST (Interactive Application Security Testing) инструментируют приложения, развертывая агенты и датчики в работающем коде и непрерывно анализируя все взаимодействия, инициированные ручными и автоматизированными тестами, или их комбинацией, для выявления уязвимостей в режиме реального времени.
Так, работая внутри приложения IAST может анализировать его код, потоки данных, конфигурации, поступающие запросы и ответы, взаимодействие с библиотеками и многое другое.
Кроме того, некоторые решения интегрируют инструменты анализа состава программного обеспечения (SCA) для устранения известных уязвимостей в компонентах и фреймворках с открытым исходным кодом.

Преимущества IAST
По сути, IAST переносит тестирование на более ранний этап жизненного цикла разработки SDLC, например, на этап тестирования/контроля качества (QA), что позволяет выявлять проблемы раньше, тем самым сокращая затраты на их устранение и задержки. При этом, многие инструменты IAST можно интегрировать в конвейер CI/CD. Инструменты последнего поколения возвращают результаты сразу после перекомпиляции изменённого кода и повторного тестирования работающего приложения, помогая разработчикам выявлять уязвимости быстрее.
IAST выполняет анализ изнутри приложений и имеет доступ к его коду, данным о времени выполнения и потоках, данным о памяти и трассировке стека, HTTP‑запросам и ответам, а также библиотекам, фреймворкам и другим компонентам (через интеграцию с инструментами SCA). Этот анализ позволяет разработчикам точно определить источник выявленной уязвимости и быстро её устранить.
Как можно наиболее эффективно использовать решения IAST
Для эффективной работы решения IAST необходимо интегрировать в конвейер CI/CD, так как совместное использование данных решений с инструментами автоматического тестирования позволяет существенно ускорить обнаружение уязвимостей.
Еще одним важным моментом является выбор инструментов IAST. Выберите инструмент, который может выполнять проверку кода приложений, написанных на используемых вами языках программирования, и совместимый с базовой платформой, используемой вашим программным обеспечением.
Здесь основной проблемой является то, что в России сейчас доступно не так много решений IAST. По сути если не рассматривать зарубежные решения, то по факту функционал IAST поддерживается только в PT Application Inspector (поправьте меня в комментариях, если есть что‑то еще, поддерживающее именно IAST функциональность, а не чистые SAST и DAST).
В целом же, на что следует обратить внимание при выборе инструмента IAST:
Наличие Веб‑API, позволяющих инженерам DevOps интегрировать тестирование в конвейер CI/CD.
Наличие возможности взаимодействия с инструментами, аналогичными Jira для отслеживания ошибок и интеграции с другими средствами разработки, контроля качества и тестирования.
Совместимость с любым методом тестирования — существующими автоматизированными тестами, ручными тестами QA/dev, автоматизированными веб‑сканерами, модульным тестированием и т. д.
Результаты анализа должны предоставляться в режиме реального времени с низким уровнем ложных срабатываний «из коробки».
Возможность масштабирования в условиях крупной корпоративной среды.
Полностью автоматизированные модели развертывания, модели на основе Docker или ручные.
Поддержка приложений на основе микросервисов, облачных и стандартных архитектур
После того, как вы определились с инструментом, важно его правильно настроить, для того, чтобы избежать ложных срабатываний. Большое количество ложных срабатываний подорвет доверие разработчиков и в итоге они будут скептически относиться даже к реальным уязвимостям, найденным системой.
Для развертывания инструмента IAST необходимо подготовить инфраструктуру. Настройте контроль доступа, авторизацию и любые необходимые интеграции, например, с Jira для отслеживания ошибок, для развертывания инструмента.
Для того, чтобы избежать отрицательного отношения к системе со стороны разработчиков и тестировщиков было бы полезным обучить их работе с системой. Прежде всего необходимо, чтобы они научились эффективно использовать ы своей работе отчеты системы IAST.
Заключение
Подводя итог рассмотрению принципов работы IAST стоит отметить, что эта технология изменила подход разработчиков к поиску и устранению уязвимостей в системе безопасности. Сочетая статическое и динамическое тестирование, IAST обеспечивает обратную связь в режиме реального времени и помогает разработчикам устранять проблемы с безопасностью по мере их возникновения. Это сокращает количество ложных срабатываний и повышает общий уровень безопасности, что делает IAST незаменимым инструментом для современной разработки.
Со временем решения IAST, вероятно, частично вытеснят DAST по двум причинам: IAST обеспечивает значительные преимущества, быстро и на ранних этапах SDLC сообщая информацию об уязвимостях и рекомендации по их устранению. Также его можно интегрировать в рабочие процессы CI/CD и DevOps, в отличие от DAST.
Эффективная работа с инструментами защиты требует системного подхода и практических навыков. Для того чтобы глубже разобраться в методах защиты, подходах к анализу кода и работе с уязвимостями, вы можете пройти курс «Информационная безопасность. Professional».

Все актуальные программы собраны в каталоге курсов — переходите, выбирайте программу под свои задачи и качайте скиллы.