Анализ достижимости уязвимостей¶
Что такое достижимость
Достижимость уязвимости — это проверка того, действительно ли потенциально уязвимый участок кода может быть выполнен при использовании приложения. Такой анализ позволяет отфильтровать «шум» и сосредоточиться на реально эксплуатируемых проблемах.
Консольный агент Johnny умеет анализировать уязвимости на достижимость из исходного кода. Для использования данной функции необходимо задать два параметра:
cg-path— путь к графу вызовов формата Svace;cg-lang— язык программирования, для которого был построен граф вызовов. На данный момент поддерживаются значенияjava,python,go,kotlinиcsharp(C#).
Построение графа вызовов¶
С использованием инструмента Svace¶
- Скачать модуль Svace
https://REGISTRY_USERNAME:REGISTRY_PASSWORD@REGISTRY_URL/#browse/browse:files:codescoring%2Fsvace-callgraph - Получить токен пользователя в CodeScoring (по ссылке
{platform-url}/cabinet/profile) - Запустить Svace на исходном коде проекта. Этот этап лучше делать в рамках или после шага сборки в конвейере.
- Инициализация
- Контролируемая сборка Пример для проектов на языке Java: Пример на языке Go: Пример на языке Python: Пример на языке Kotlin: Пример на языке C#:
- Анализ результатов и построение графа вызовов
-
В случае успешного выполнения всех шагов в директории проекта появится файл
.svace-dir/analyze-res/call-graph-results/<project_name>-graph-order.json, содержащий граф вызовов.Сохранение файла
До версии Svace 5.0.260311 файл с графом вызовов сохранялся в папку
.svace-dir/analyze-res/call-graph -
Запустить сканирования с помощью Johnny, например:
Удаленный анализ¶
В версии Svace 5.0.260311 появилась возможность использования сервера удалённого анализа. Это позволяет вынести построение графа вызовов за пределы CI/CD пайплайна, снизить нагрузку на сборочные серверы и оптимизировать процесс непрерывной интеграции.
Этапы настройки сервера¶
- Указать переменные окружения
- Инициализация
- Запустить сервер
-
Отправить проект на анализ. После настройки сервера не нужно указывать параметры лицензии
--license-server-urlи--license-server-token.При необходимости можно добавить параметры
--port,--login,--passи т.д.
Подробнее с настройками сервера удалённого анализа можно ознакомиться в документации Svace.
Получение результатов¶
В таблице уязвимостей с найденными достижимыми вызовами будет проставлена отметка в соответствующем столбце:

В конце будет доступна ещё одна таблица с перечислением деревьев вызовов для уязвимостей:

Пример для более крупного проекта:

Если был указан флаг --save-results, то результаты достижимости будут в колонке "Достижимо" таблицы уязвимостей:
