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

Состав платформы
Security Gate позволяет анализировать безопасность несколькими способами.
SAST: статический анализ кода
Сервис помогает находить потенциально опасные паттерны с помощью сигнатурных правил и межфайлового taint-анализа.
SAST может выявлять:
SQL-инъекции;
XSS;
RCE;
неправильную обработку данных;
отсутствие санитайзеров;
и другие антипаттерны, связанные с безопасностью кода.
SCA: анализ зависимостей
С помощью сервиса мы проверяем используемые в проектах open-source библиотеки на уязвимости и признаки компрометации. Он не ограничивается простым сопоставлением зависимостей с фидами. Сервис анализирует достижимость уязвимых методов по коду: проверяет явность вызовов и учитывает отношение зависимость к dev- или prod-реализации.
Поиск protestware и malware
Protestware — это зависимости и уязвимости, нацеленные на определённые страны или группы пользователей. Они активируются только при выполнении конкретных условий, например при заданной локали или диапазоне IP-адресов. Круг атаки может быть узким, поэтому сообщество Open Source не всегда быстро обнаруживает такие угрозы. Для поиска protestware мы используем собственные фиды, формируемые на основе анализа open-source проектов.
Поиск секретов
Если секрет попадает в репозиторий в открытом виде — это проблема. Платформа учитывает специфику таких находок и помогает отделять значимые секреты от dev-, локальных и других подобных значений.
Сканирование контейнеров
Сервис Fast Scanner автоматически проверяет изменения в момент создания merge request и сигнализирует о проблемах прямо в GitLab до того, как код куда-либо попал. Платформа также умеет сканировать контейнеры в Kubernetes и One-cloud. Подробнее о Fast Scanner расскажем ниже.
При обнаружении уязвимости платформа может оповещать через бота в VK WorkSpace. Его можно добавить в свой чат, указать проекты или продукты для мониторинга и настроить условия уведомлений — например, получать сообщения только по High и Critical или только по Critical SAST.
Поддерживаемые языки и технологии
Платформа поддерживает широкий набор языков и технологий, но уровень поддержки зависит от языка и доступных инструментов анализа. Среди поддерживаемых — Python, TypeScript, JavaScript, Go, Java, Ruby, Rust, Elixir, Dart, Swift, PHP, HTML и C/C++.
Для некоторых языков поддержка ограничена. Например, для Swift статический анализ работает только по правилам, без taint-анализа, а C/C++ сложнее анализировать из-за особенностей сборки и окружений. Поиск секретов покрывает все языки.
Приоритизация уязвимостей
Одна из ключевых задач платформы — не просто найти проблему, а помочь понять, насколько она важна. Сырые инструменты анализа часто переоценивают критичность найденных дефектов. Из-за этого в категории High и Critical попадает много срабатываний, которые не всегда требуют такого уровня внимания. Чтобы этого избежать, мы внедрили в Security Gate собственный механизм приоритизации.
Приоритизация правил SAST
По всем правилам статического анализа, на платформе накапливается статистика. Команда безопасности анализирует её, оценивает качество работы правил и определяет их итоговую значимость. Также команда готовит для правил собственные описания, примеры и рекомендации, чтобы разработчикам было проще понять, о чём говорит срабатывание и как с ним работать.
Динамическая приоритизация
В Security Gate она работает на основе метаданных кода. Если платформа определяет, что код похож на тесты, автотесты, моки, фейки или другие реализации, не относящиеся к эксплуатации, то срабатывание не закрывается, но его критичность автоматически понижается. Такое срабатывание не попадает в SLA и не требует внимания в обычных процессах разработки.
Собственный калькулятор критичности CVE
Для CVE платформа использует собственный калькулятор критичности. При оценке учитываются не только стандартные CVSS-векторы: один из основных факторов — вероятность эксплуатации уязвимости в реальной среде в ближайшие 30 дней.
Модель учитывает несколько параметров:
наличие эксплойта;
наличие эксплойта в открытом доступе;
возможность автоматизировать эксплуатацию;
информацию об уязвимости в профильных каталогах;
обязательность зависимости для проекта;
вызов методов зависимости в коде;
принадлежность зависимости к dev- или prod-сборке.
Если Security Gate видит, что методы уязвимой зависимости явно вызываются в коде, то такая зависимость считается более значимой для проекта.
Данные о публичных эксплойтах не всегда бывают полными: помимо открытых баз с общедоступными эксплойтами, существуют закрытые форумы, где такие эксплойты продают, и эта информация в базы не попадает. Поэтому итоговая оценка критичности всегда складывается из совокупности факторов, а не из одного показателя.
Приоритизация секретов
Для секретов тоже используется механизм динамической приоритизации. Отдельно для них работает LLM-триаж — подробнее о нём расскажем ниже.
Интерфейс Security Gate
Security Gate — инфраструктурный сервис, доступный штатным сотрудникам VK. После входа пользователь попадает на страницу со списком проектов. Для каждого проекта отображаются:
название;
ссылка на репозиторий;
дата последнего сканирования;
количество найденных уязвимостей;
распределение находок по уровням критичности.
В интерфейсе доступны фильтры: можно учитывать архивные проекты, экспериментальные правила, статусы срабатываний, нужные инструменты и другие параметры. Значения в разделах Critical, High, Medium и Low показывают количество срабатываний соответствующего уровня в проекте.
Также в интерфейсе есть механизм переопределения критичности. Если команда считает, что критичность срабатывания нужно изменить, то можно указать новый статус. Это касается SAST, SCA и секретов.
Анализ зависимостей
В разделе SCA отображаются компоненты, в которых найдены уязвимости. Для каждой зависимости приводятся связанные CVE и дополнительная информация о срабатывании.
Итоговая оценка критичности формируется на основе разных метрик и параметров, чтобы разработчику не приходилось самостоятельно разбираться, какие из них важнее в конкретном случае.
В карточке срабатывания отображаются:
влияние;
информация о срабатывании;
инструменты, которые обнаружили срабатывание.
Дедупликация срабатываний
Платформа объединяет результаты, полученные при помощи разных инструментов анализа. Если одну и ту же проблему нашли несколько сканеров, то она отображается как одно срабатывание. Это помогает сократить количество дублей и работать с единым представлением проблемы.
Статический анализ кода
В разделе SAST отображаются найденные срабатывания, их критичность, путь до файла и сниппет кода, в котором обнаружена проблема.
Для некоторых срабатываний доступен просмотр потока данных.
Поток данных
Функция раскрытия потока данных показывает не только место срабатывания, но и путь данных в программе.
Security Gate учитывает источники, промежуточные участки и санитайзеры, которые встречаются по пути. Это помогает понять, как именно данные доходят до потенциально опасного места. Если до одного и того же участка можно дойти несколькими путями, то эти потоки отображаются отдельно.
Подробности срабатывания
В карточке срабатывания можно посмотреть дополнительную информацию:
путь до проекта;
дату обнаружения;
последние изменения строк кода;
сотрудника, который вносил последние изменения;
ссылку на конкретный сниппет в GitLab;
описание проблемы;
рекомендации;
примеры уязвимого кода;
примеры исправления.
Статусы, комментарии и история изменений
В Security Gate можно подтверждать или отклонять срабатывания, возвращать их в необработанное состояние и оставлять комментарии. При отклонении можно указать причину. В комментариях видно, кто и когда оставил сообщение. Доступна и история изменений: кто, когда и какие действия выполнял со срабатыванием.
Интеграция с Jira
Платформа интегрируется с Jira: можно связывать срабатывания с задачами и работать с находками в привычном для команды процессе.
Кросс-веточный триаж
Security Gate поддерживает кросс-веточный триаж. Если одно и то же срабатывание появляется в нескольких ветках, то не нужно решать по каждой отдельно — достаточно один раз выставить вердикт, и он учтётся для связанных случаев.
Фильтрация
Результаты можно фильтровать по:
веткам;
тегам;
хешам;
статусам срабатываний;
уровню критичности;
наличию задачи в Jira;
пользователям, которые меняли статус;
инструментам;
правилам инструмента;
пути до файла;
экспериментальным правилам.
Экспериментальные правила по умолчанию не показываются пользователям платформы и не учитываются при подсчёте SLA.
Экспорт отчётов
Из Security Gate можно скачать отчёт в XLSX или CSV. При выгрузке можно указать нужные фильтры и поля. Платформа также работает с SBOM-отчётами.
Триаж: LLM для разбора срабатываний
В Security Gate интегрирован механизм VK Triage. Он помогает разбирать срабатывания: отделять ложноположительные от значимых, дополнительно объяснять проблему и предлагать пример исправления. Это не агентская система — в триаж передаются данные, которыми уже располагает сама платформа.

Для секретов LLM-триаж решает две задачи:
Отклонять очевидные ложные срабатывания, которые нашли анализаторы. Поиск секретов не всегда строится только на понятных паттернах: иногда применяют методы энтропии, которые помогают находить строки, похожие на секреты, но способные вызывать ложные срабатывания
Определять, насколько секрет относится к prod-реализации. Например, часть значений относится к локальной отладке, dev-установке или служебным сценариям — такие находки не всегда критичны
Главная цель — не допустить, чтобы скомпрометированные секреты открывали доступ к данным пользователей или инфраструктуре.

После доработок первый промпт для автоотклонения показал на внутреннем бенчмарке результат F1 score 0,981. Это позволило автоматически отклонять часть мусорных срабатываний.

Насколько можно доверять LLM-триажу? Результаты зависят от типа срабатывания. Для секретов первая задача — определить, секрет это или нет, — дала хорошие результаты, мы перевели её в автоотклонение. Для SAST всё сложнее: модели может не хватать контекста, например журналов и конфигураций, поэтому результаты не используются как финальное автоматическое решение. Для SCA триаж может рекомендовать статус, но финальное решение не принимает.
Интеграция с GitLab
Security Gate встроена в процесс разработки и интегрирована с корпоративным GitLab. На страницах репозиториев автоматически отображается бейдж Security Gate — он показывает количество проблем по ключевым направлениям: критические SAST-срабатывания, SCA High+ и Secrets High+.
По клику на бейдж можно сразу перейти к нужному проекту в Security Gate и не искать его вручную на платформе.
Автоматическое подключение проектов
Проекты в корпоративном GitLab автоматически подключаются к Security Gate. Если репозиторий ещё не зарегистрирован на платформе, то Security Gate инвентаризирует его, создаёт проект и запускает сканирование.
Автоматически сканируется только default branch, заданный настройками GitLab. Если изменений в коде не было, то проект принудительно пересканируется раз в 30 дней. Если изменения были, то проект встаёт в очередь на сканирование, а затем результаты возвращаются на платформу.
В таком сценарии Security Gate работает как инструмент ретроспективного анализа кода. Если нужно проверить изменения здесь и сейчас, то можно отправлять код на анализ через CI/CD или использовать Fast Scanner.
Если сотрудник зарегистрирован в корпоративном GitLab и имеет доступ к репозиторию с правами Developer или выше, то права в Security Gate он получит автоматически. Сейчас к автосканированию подключено более 40 000 репозиториев.
Просканировать отдельную ветку можно двумя способами:
Настроив отправку на анализ через CI/CD: job упаковывает архив с кодом и отправляет его на сканирование, результаты появляются в Security Gate. Это целевой вариант, он работает автоматически
Запустив вручную через интерфейс (для пользователей с расширенными правами)
Работа с malware в open-source зависимостях
Отдельная задача Security Gate — работа с рисками в open-source зависимостях, которые используются в проектах. При новой malware-проблеме не нужно вручную проверять всю кодовую базу в поисках пакета: можно быстро определить затронутые проекты и обратиться к нужным продуктовым командам.
С такими рисками работает отдельный модуль — SG Malware Protector. Он мониторит новые данные о malware-уязвимостях, сопоставляет их с инвентаризацией зависимостей и сообщает о найденных совпадениях.
Модуль также интегрирован с корпоративным артефакторием: проверяет, есть ли проблемные пакеты среди запроксированных, актуализирует чёрный список и помогает не пропустить вредоносную зависимость в процесс разработки. Есть и полуавтоматизированный механизм удаления malware из артефактория.

Fast Scanner
Fast Scanner — сервис, который автоматически подключается к merge request в корпоративном GitLab и проверяет безопасность кода. Security Gate сканирует глубже, но дольше, а Fast Scanner нужен для быстрых проверок прямо в процессе разработки. Если в merge request появляется проблема, то Fast Scanner пишет об этом в комментарии. Можно исправить проблему до того, как изменения попадут в основную или релизную ветку.

В Fast Scanner компоненты группируются по версиям. Уязвимости можно раскрывать и смотреть их описание, критичность и статус.

Если проблему исправили в рамках merge request, то Fast Scanner автоматически пересканирует изменения и переведёт срабатывание в статус исправленного.
Срабатывания бывают трёх типов:
Новые или изменённые в текущем MR.
Уже существовавшие в проекте и не относящиеся к текущему MR.
Исправленные.
Такое разделение помогает понять, какие проблемы связаны с текущими изменениями, а какие уже были в проекте.
Для секретов Fast Scanner показывает файл, строку, тип секрета и статус. Если секрет исправлен, то отображается коммит с исправлением.

Работа с мобильными приложениями
Для мобильных приложений Security Gate находит секреты в артефактах в открытом виде. Если есть lock-манифесты, то платформа автоматически обнаруживает их, формирует SBOM и ищет уязвимые зависимости.
Для Android есть результаты анализа даже без сборки: некоторые инструменты умеют строить межфайловый taint-анализ без компиляции. Для Swift поддержка тоже есть, но ограничена особенностями платформы и механизмов сборки.
Развитие платформы
Покрытие в Security Gate отличается от покрытия тестами. Платформа может оценивать количество файлов, покрытых проверками при статическом анализе, но эта метрика скорее внутренняя. Куда полезнее — количество уязвимостей и скорость их устранения. В ближайшей версии Security Gate появится отображение SLA по критичностям в рамках тиров: речь о SLA на реакцию — сколько времени срабатывание находится в статусе «Не обработано».
Сейчас мы разрабатываем механизм автоматического создания MR на обновление зависимостей. Однако здесь есть сложность: автоматические инструменты обновления могут предложить версию, которая сама содержит другие уязвимости, а это ведёт к каскадным обновлениям и новым проблемам. Поэтому мы уже внедрили механизм Safe Version: он собирает доступные версии компонента, сопоставляет их с известными уязвимостями и показывает, какие версии можно считать безопасными.
Карантин новых версий open-source зависимостей. Идея в том, что новая версия компонента после появления в registry «отстаивается» — её анализируют и проверяют — и только потом становится доступной при проксировании. Дело в том, что не все вредоносные пакеты можно выявить сигнатурным анализом артефакта: иногда проблема становится заметна только по поведению или после информации о реальных атаках.
Также в разработке собственный аналог Nexus IQ — файрвол, интегрированный с Nexus. Он будет собирать метаинформацию о пакетах в публичных registry и учитывать паттерны, связанные с безопасностью.
Резюме
Security Gate объединяет в себе несколько направлений AppSec: статический анализ кода, проверку зависимостей, поиск секретов, работу с malware и protestware, Fast Scanner и другие механизмы интеграции в разработку.
Платформа не только собирает результаты сканирования, но и помогает работать с ними: приоритизирует находки, объединяет дубли, показывает поток данных, даёт рекомендации, поддерживает триаж, интеграцию с GitLab и уведомления.
Главная идея Security Gate — сделать безопасность частью обычного процесса разработки, чтобы проблемы можно было увидеть, разобрать и исправить до того, как они пойдут дальше.

