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

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

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

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