Утилита wave-cli¶
Описание и параметры¶
В состав Системы как отдельный Docker-образ входит wave-cli – утилита командной строки, позволяющая:
- Проводить сканирование проектов, для которых объектом сканирования является репозиторий с исходным кодом.
- Осуществлять интеграцию сканирования с пайплайнами CI/CD.
Для интеграции с пайплайном CI/CD необходимо добавить вызов wave-cli в пайплайн как отдельную задачу.
Пример пайплайна с вызовом wave-cli - фрагмент файла .gitlab-ci.yml:
stages:
- cli
CODE:cli:
stage: cli
image: ${WAVE_CLI_IMAGE}
script:
- |
python /app/src/wave_cli.py \
--id "${CLI_PROJECT_ID}" \
--username "${CLI_USERNAME}" \
--password "${CLI_PASSWORD}" \
--wave-url "${WAVE_URL}" \
--branch "${CI_DEFAULT_BRANCH}" \
--folder "${CLI_FOLDER}" \
--repository-name "${CI_PROJECT_NAME}" \
--repository-link "${CI_PROJECT_URL}" \
--blocked \
--report-format json --report-format html --report-format sarif \
--severity-status error=5 --severity-status critical=1
tags:
- wave
Параметры утилиты wave-cli:
- --id – идентификатор проекта в Системе, для которого проводится сканирование.
- --username – имя пользователя для авторизации в Системе.
- --password – пароль пользователя для авторизации в Системе.
- --wave-url – URL-адрес Системы.
- --branch – ветка репозитория, для которой проводится сканирование.
- --folder – опциональный параметр, задающий путь до папки с исходным кодом внутри репозитория. Если параметр не задан, используется значение по умолчанию (текущая папка).
- --repository-name – опциональный параметр, в котором можно указать имя репозитория. Если этот параметр был задан при сканировании, на странице проекта имя репозитория будет отображено в поле Сканируемый репозиторий.
- --repository-link – опциональный параметр, в котором можно указать ссылку на репозиторий. Если этот параметр был задан при сканировании, на странице проекта ссылка на репозиторий будет отображена в поле Сканируемый репозиторий.
- --blocked – опциональный флаг. Если флаг установлен, выполнение пайплайна блокируется до конца сканирования. Если флаг не установлен, сканирование запускается, а задача завершается без ожидания его результатов.
- --report-format – формат отчета о результатах выполненного сканирования. Возможно множественное использование параметра для разных форматов (json, html, sarif) в любом порядке.
- --severity-status – минимальное количество уязвимостей определенного уровня при котором происходит остановка пайплайна. Возможно множественное использование параметра для разных уровней (critical, error, warning, info).
Переменная WAVE_CLI_IMAGE в приведенном выше примере – ссылка на актуальную версию wave-cli, например, cr.yandex/abc123/wave/wave-cli:26.2.3, где 26.2.3 – номер версии.
Подготовка к запуску¶
Перед встраиванием в пайплайн и запуском утилиты в Системе должен быть создан проект, идентификатор которого используется при запуске как параметр CLI_PROJECT_ID.
Чтобы определить идентификатор проекта в Системе, откройте страницу проекта и скопируйте идентификатор из адресной строки веб-браузера.
Например, для проекта с адресной строкой, приведенной ниже, идентификатор – 15:
https://wave.demo.appsec.global/project/15
Результаты запуска в CLI¶
В ходе сканирования wave-cli логирует информацию о ходе выполнения. Конечный результат работы утилиты определяется выводом сообщения:
- FINISHED – при успешном завершении сканирования.
- CRASHED – при неуспешном завершении.
Также утилита выводит краткую сводку о результатах сканирования, включающую следующую информацию:
- id_scan – идентификатор сканирования в Системе.
- scan_status – конечный результат работы утилиты.
-
scanSummary – статистика завершившегося сканирования:
- infoVulnerabilityCount – количество найденных уязвимостей уровня критичности Info (информационный).
- warningVulnerabilityCount – количество найденных уязвимостей уровня критичности Warning (предупреждение).
- errorVulnerabilityCount – количество найденных уязвимостей уровня критичности Error (ошибка).
- criticalVulnerabilityCount – количество найденных уязвимостей уровня критичности Critical (критический).
Отчеты в CLI¶
Утилита wave-cli предоставляет возможность формировать отчеты о результатах сканирования.
Для этого необходимо:
- Обновить wave-cli до версии 26.2.3.
- При запуске утилиты wave-cli указать параметр --report-format и задать формат отчета - json, html, sarif, см. раздел «Описание и параметры».
При успешном завершении сканирования в консоли после сообщения Reports будут приведены ссылки на сформированные отчеты:

Ссылки на скачивание отчетов действительны 24 часа.
Результаты запуска в Системе¶
После завершения сканирования, выполненного с помощью wave-cli, на странице проекта вновь завершившееся сканирование будет представлено в виде отдельной строки, детали см. в разделе «Результаты сканирования».
Результаты сканирования проекта, выполненного с помощью wave-cli, полностью идентичны результатам, которые можно получить при сканировании с использованием пользовательского интерфейса Системы.