SAST прямо в IDE: как Veai ищет уязвимости в Java/Kotlin-проекте и помогает их исправлять
Теперь можно одной кнопкой проверить весь проект на уязвимости — SQL-инъекции, XSS, SSRF и другие. Найденные проблемы можно сразу отправить агенту: он исправит код, объяснит, в чём проблема, или поможет оценить, стоит ли вообще с ней что-то делать.
Как запустить
В заголовке чата Veai нажмите на значок щита. Откроется меню с описанием функции — нажмите кнопку запуска. Плагин начнёт сборку проекта, а затем запустит анализ.
Как работает анализ
Проверка использует собственный движок статического анализа Veai. Он работает на скомпилированных исходниках, поэтому перед анализом плагин пытается собрать проект через Maven или Gradle.
Движок выполняет межпроцедурный анализ: отслеживает, как данные проходят через функции и методы, от точки, где они появляются (source), до точки, где их использование может привести к проблеме (sink). Это отличает его от большинства инструментов, которые ищут уязвимости только внутри одной функции.
После успешного анализа открывается панель с результатами. Дерево результатов можно фильтровать и группировать:
- по критичности;
- по файлам и папкам, где найдены уязвимости;
- по категориям (SQL-инъекции, XSS, SSRF и другие).
Для многих уязвимостей доступен трейс: он показывает, откуда приходят данные и как они проходят по коду от источника до опасной точки. Если нажать на шаг трейса, соответствующее место подсветится в редакторе.
Действия с найденными уязвимостями
Для каждой уязвимости доступны следующие действия:
- Исправить — агент прочитает код уязвимости и предложит изменения, которые устранят проблему.
- Прикрепить к чату — отправить уязвимость агенту, чтобы обсудить её: как она устроена, как воспроизвести, или попросить объяснить простым языком, если вы не специалист по безопасности.
- Пометить как ложное срабатывание — если вы уверены, что находка не воспроизводима в реальности, нажмите кнопку с восклицательным знаком. Уязвимость исчезнет из списка результатов.
- Оценить CVSS-скор — Оценка критичности уязвимости
Оценка критичности
Уязвимость можно прикрепить к чату и попросить агента посчитать CVSS-скор. Агент определит значения факторов, передаст их в калькулятор и объяснит результат.
CVSS — это числовая оценка от 0 до 10. Оценка 0 означает, что уязвимость не воспроизводима; оценка 10 — что эксплуатация может привести к критическому ущербу (утечка данных, потеря денег, разрушение инфраструктуры).
После расчёта CVSS-скор появляется рядом с уязвимостью в панели результатов.
Ложные срабатывания (false positives) — одна из главных проблем инструментов безопасности. Безопасники тратят до 90% времени на проверку находок, которые оказываются нереальными. Оценка CVSS помогает быстрее отделить реальные проблемы от ложных.
Поддержка IDE
Поиск уязвимостей работает в JVM-проектах в IntelliJ IDEA (OpenIDE, GigaIDE) и Android Studio — то есть для Java и Kotlin. Мы работаем над расширением на другие языки и IDE.
Анализ полностью работает оффлайн: код никуда не отправляется, подключение к серверам не требуется. Исключение — взаимодействие с агентом, которое использует LLM.
Новые типы уязвимостей добавляются вместе с обновлениями плагина: движок работает по набору правил, который поставляется вместе с обновлением. Сейчас добавить собственные правила нельзя, но в будущем агент сможет автоматически дописывать правила под ваш проект.
Когда использовать
- Проверка ИИ-сгенерированного кода. LLM неизбежно может написать код с уязвимостями. Кроме того, возможны целенаправленные атаки: хакеры изучают поведение конкретной LLM, используемой в компании, и подсовывают промпт-инъекции, заставляя модель генерировать уязвимый код. Поиск уязвимостей помогает выловить критичные проблемы безопасности перед коммитом.
- Аудит существующей кодовой базы. Любой тимлид может запустить проверку на всём репозитории, увидеть проблемы безопасности и быстро исправить их — например, сделать pull request, в котором устранены критические уязвимости.
- Нужно быстро понять, какие находки стоит исправлять в первую очередь.
Глубокая поддержка фреймворков
| Возможность | Veai SAST | CodeQL | Semgrep Pro | Checkmarx |
|---|---|---|---|---|
Spring DI: @Autowired, constructor injection | Полная | Частичная | Нет | Частичная |
Persistence layer: stored-инъекции, JPA save и find, persistent autowire/service | Полная | Нет | Нет | Полная |
Kotlin coroutines: suspend, async/await, Deferred | Полная | Нет | Нет | Нет |
Stored-инъекции: данные сохраняются в БД через один контроллер, читаются другим, попадают в шаблон. Veai SAST отслеживает taint через JPA persistence layer и persistent autowire/service с точностью до полей сущности.
Корутины: Veai SAST отслеживает taint через runBlocking, launch, async/await, Deferred и suspend.
Поддержка языков программирования
| Статус | Языки | Количество |
|---|---|---|
| Текущие | Java, Kotlin | 2 |
| В планах | Python, Go, C#, JavaScript, TypeScript | +5 |
Конкуренты поддерживают от 4 до 58 языков. Veai SAST — специализированный инструмент для JVM-экосистемы. Широта языков — область развития.