
Привет, меня зовут Владислав Феофилактов, я разработчик команды интеграции продукта PT Application Inspector. В этой статье вместе с коллегой Даниилом Бакиным мы расскажем о безопасной разработке приложений, подходе shift left и о том, как сделать жизнь разработчиков и AppSec-специалистов проще, а продукты — более защищенными.
Мы разберем основные проблемы безопасной разработки и расскажем, как плагины для IDE помогают решать эти проблемы. Если вы хотите узнать, как упростить работу с уязвимостями и ускорить процесс разработки, это статья для вас!
Многие из вас наверняка знакомы с подходом Application Security (AppSec) и его основными принципами, поэтому лишь кратко напомним, что имеется в виду. AppSec — это комплекс мер для обеспечения безопасности приложений. Он включает автоматизацию процессов, стандарты проектирования, ревью кода и пентесты. Цель — контроль безопасности на всех этапах разработки.
AppSec придерживается подхода shift left: находить проблемы как можно раньше. Чем позже обнаруживается ошибка, тем дороже ее исправить. Уязвимости — это тоже дефекты, и их раннее обнаружение экономит время и ресурсы.
Роль AppSec в разработке
Теперь поговорим о том, как AppSec встраивается в процесс CI/CD и с каким сложностями обычно сталкиваются команды. Жизненный цикл разработки ПО часто изображают в виде бесконечной восьмерки. Когда мы добавляем безопасность, эта восьмерка обрастает дополнительными процессами, поскольку безопасность должна учитываться на каждом этапе.

Поскольку мы сами бывшие разработчики, сконцентрируемся главным образом на этапе реализации, он же code на нашей схеме. Чтобы обеспечить безопасность приложения на этой стадии, используют инструменты, которые можно разделить на четыре группы:
-
Внешние инструменты. Линтеры и анализаторы кода, которые проверяют код на соответствие стандартам и выявляют уязвимости.
-
Анализаторы, встраиваемые в CI. Инструменты, которые интегрируются в CI/CD-пайплайны для автоматической проверки кода.
-
Анализаторы эксплуатации. Программы, которые тестируют приложение на этапе эксплуатации, выявляя уязвимости в работающей системе.
-
Инструменты в интегрированной среде разработки, IDE. Решения, которые встраиваются в среду разработки и позволяют находить и исправлять уязвимости прямо в редакторе кода.
Наш PT Application Inspector — это универсальный инструмент, который может относиться сразу к нескольким категориям. Например, если вы загружаете проект через веб-интерфейс, анализируете его и работаете с результатами, вы пользуетесь им как внешним инструментом. Но мы считаем, что главное преимущество — это интеграция в IDE, которая позволяет разработчикам находить и исправлять уязвимости прямо в редакторе кода. Давайте попробуем разобраться, какие проблемы решает подобный подход.
Почему AppSec становится головной болью разработчиков
-
Неосведомленность. Представьте: в команду добавляют AppSec-чемпиона. Он говорит о триаже, поверхностях атаки, называет другие термины. Разработчики сначала слушают, но быстро теряют интерес — потому что не понимают, о чем речь. В итоге команда начинает работать разрозненно.
-
Сложные процессы. Специалист по безопасности добавляет новые этапы и усложняет ревью, что раздражает команду и снижает эффективность работы.
-
Результата ждать слишком долго. Анализ кода, даже автоматизированный, занимает много времени, что тормозит процесс разработки.
-
Время на безопасность не закладывается заранее. Временные затраты на безопасность часто не учитываются при планировании спринтов, что приводит к срыву сроков.
Проблем много, но мы предлагаем решить их, добавив инструменты AppSec в саму среду разработки. Если мы интегрируем что-то в IDE, то постоянно напоминаем о себе: изменения в интерфейсе, новые кнопки — все это привлекает внимание разработчика. Рано или поздно он сам захочет нажать на них, что-то просканировать или проанализировать. Кроме того, так мы упрощаем процесс для программистов: они часто используют IDE и хорошо знакомы с этими инструментами.
Находясь в знакомой среде, разработчик быстрее поймет, как пользоваться этими инструментами, и научится учитывать AppSec при планировании задач. Помните про shift left? С помощью плагинов для IDE можно сканировать код еще до ревью, в результате мы получаем ускорение и удешевление всего процесса без ущерба для безопасности.
Как плагины для IDE делают безопасность доступнее
Перейдем к самому интересному: что умеют наши плагины? Основная фича — сканирование кода прямо на машине разработчика с подсветкой уязвимостей. После этого можно детально изучить каждую проблему, а AppSec-специалисты могут провести триаж прямо из плагина. Еще одна крутая функция — генерация эксплойтов, которая позволяет сразу же протестировать уязвимость, например через Postman или другой популярный инструмент для тестирования API.
Кроме того, плагин открывает дополнительные возможности благодаря интеграции с PT Application Inspector. Хотя и без нее плагин остается мощным инструментом, она, интеграция, значительно облегчает командную разработку благодаря синхронизации результатов сканирования. А главное, плагины доступны абсолютно бесплатно: просто введите в поиск магазина расширений вашей IDE запрос PT Application Inspector — и скачивайте. Например, вот странички наших плагинов для JetBrains и Visual Studio Code, а еще их можно скачать с GitHub:
https://github.com/POSIdev-community/AI.Plugin.IntelliJ
https://github.com/POSIdev-community/ai.Plugin.VSCode/
Сканирование
Для начала поговорим о ключевой функции плагина — сканировании. Вот что он умеет:
-
Статический анализ (SAST). Проверяет код на уязвимости.
-
SCA-модуль. Интегрирует OWASP Dependency Check для анализа уязвимых зависимостей.
-
Анализ конфигураций. Находит секреты в коде и опасные параметры в конфигурационных файлах.

Подробнее о SAST и других технологиях можно почитать в наших статьях на Хабре. Мы поддерживаем такие языки программирования, как C#, Go, Java, JavaScript, Kotlin, PHP, Python, Ruby, SQL, Solidity и TypeScript, а также популярные фреймворки для них. Если нужного вам языка нет в списке — дайте знать.
Информация об уязвимостях
После сканирования проекта плагин PT Application Inspector показывает уязвимости и дает подробную информацию: что это за проблема, как ее исправить, ссылки на CVE и так далее.
Ручной и автоматизированный триаж
Следующий шаг — триаж. Это процесс классификации и приоритизации уязвимостей, который помогает команде понять, что исправлять в первую очередь. Плагин позволяет проводить триаж как вручную, так и автоматизированно.

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

Генерация эксплойтов
Если уязвимость найдена и удалось сгенерировать эксплойт, его можно показать разработчику. Это позволит ему поднять свой сервер или отправить запрос через Postman и проверить, реализуется ли угроза.

Нажав кнопку Create Exploit, вы получите редактируемый файл, где можно указать хост, сервер и порт вашего приложения. Затем можно отправить REST-запрос через плагин для VS Code или скопировать его в Postman, чтобы убедиться, что уязвимость действительно существует.
Интеграция с PT Application Inspector
Теперь поговорим про интеграцию с нашим решением — PT Application Inspector. Что это дает?
Вместе с плагинами и PT Application Inspector вы сможете:
-
Создавать проекты прямо из IDE. Загружайте локальные проекты на сервер, чтобы продолжить с ними работать или подключить коллег.
-
Загружать проекты с сервера в IDE. Если проект уже есть на сервере, его можно скачать и открыть локально через плагин.
-
Синхронизировать исходный код. Загружайте проекты на сервер для изучения исходников без необходимости настраивать систему контроля версий. Также вы можете обновлять исходники существующих проектов.
Эти функции бесплатны, но для их использования нужен сервер PT Application Inspector.
Синхронизация результатов сканирования
Реализована возможность загружать результаты с сервера на локальную машину или отправлять их из локальной IDE на сервер. Это относительно новая функция, которая решает проблему повторного сканирования проекта: раньше каждый член команды должен был сканировать проект заново, что занимало много времени.
Плагин поддерживает два способа синхронизации: уведомление о завершении удаленного сканирования или автоматическая загрузка актуальных результатов сразу на локальную машину.
Синхронизация триажа
Процесс обработки уязвимостей тоже можно синхронизировать для совместной работы. Для этого нужно создать связь (маппинг) между локальным проектом в IDE и проектом на сервере PT Application Inspector.

После сканирования локального проекта результаты можно отправить на сервер с помощью функции Push scan result, что позволяет команде видеть уязвимости и работать с ними. Если AppSec-специалист изменил статус уязвимости, это сразу отобразится на сервере и в IDE других участников команды.
Например, если уязвимость помечена как требующая исправления, разработчик увидит это в своем проекте. Помимо того, он получит рекомендации по их исправлению от плагина, например best place to fix — в какой части кода лучше всего внести изменения, чтобы устранить проблему.
Удаленное сканирование на мощностях PT Application Inspector
Сканировать проекты можно не только локально, но и на мощностях PT Application Inspector. Это полезно, если разработчик не хочет нагружать свою машину. Запускать сканирование можно через агенты PT Application Inspector прямо из плагина.

Есть два режима:
-
С сохранением результатов на сервере: исходники автоматически загружаются на сервер, сканирование выполняется агентами, а результаты возвращаются в IDE.
-
Без сохранения результатов: сканирование выполняется на сервере, но исходники и результаты не сохраняются.
Пробуйте и делитесь мнением
Мы сами хорошо знаем, что разработка с учетом безопасности зачастую превращается в испытание: уязвимости копятся, триаж затягивается, а сроки горят. Команды теряют время на рутину, вместо того чтобы сосредоточиться на коде. Плагины для IDE помогают переломить ситуацию — они ускоряют поиск и анализ багов, упрощают совместную работу и встраиваются в привычный процесс. Попробуйте сами: такие инструменты доступны в магазинах расширений для большинства сред разработки. Это не панацея, но хороший шаг к тому, чтобы AppSec стал удобным и понятным для всех.

Владислав Феофилактов
Программист группы разработки средств интеграции, Positive Technologies

Даниил Бакин
Программист группы разработки средств интеграции, Positive Technologies
ссылка на оригинал статьи https://habr.com/ru/articles/892696/
Добавить комментарий