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