Перейти к содержанию

Утилита wave-cli

Описание

В состав Системы как отдельный Docker-образ входит wave-cli – утилита командной строки, позволяющая:

  • Проводить сканирование проектов, для которых объектом сканирования является репозиторий с исходным кодом.
  • Осуществлять интеграцию сканирования с пайплайнами CI/CD.

Для интеграции с пайплайном CI/CD необходимо добавить вызов wave-cli в пайплайн как отдельную задачу (job).  Пример вызова утилиты:

python/app/src/wave_cli.py -id ${CLI_PROJECT_ID} -u ${CLI_USERNAME} -p ${CLI_PASSWORD} -b ${CI_DEFAULT_BRANCH} -f ${CLI_FOLDER} -rn ${CI_PROJECT_NAME} -rl ${CI_PROJECT_URL} --blocked --wave-url http://xxx.xx.xx.xx --severity-status error=5 --severity-status critical=1

Параметры утилиты:

  • −id ${CLI_PROJECT_ID} – идентификатор проекта в Системе, для которого проводится сканирование.
  • -u ${CLI_USERNAME} – имя пользователя для авторизации в Системе.
  • −p ${CLI_PASSWORD} – пароль пользователя для авторизации в Системе.
  • -b ${CI_DEFAULT_BRANCH} – ветка репозитория, для которой проводится сканирование.
  • −f ${CLI_FOLDER} – опциональный параметр, задающий путь до папки с исходным кодом внутри репозитория. Если параметр не задан, используется значение по умолчанию (текущая папка).
  • -blocked – опциональный флаг. Если флаг установлен, выполнение пайплайна блокируется до конца сканирования. Если флаг не установлен, сканирование запускается, а задача завершается без ожидания его результатов.
  • --wave-url – URL-адрес Системы.
  • --severity-status – минимальное количество уязвимостей определенного уровня при котором происходит остановка пайплайна. Возможно множественное использование для разных уровней - critical, error, warning, info.
  • −rn – опциональный параметр, в котором можно указать имя репозитория. Если этот параметр был задан при сканировании, на странице проекта имя репозитория будет отображено в поле Сканируемый репозиторий.
  • −rl – опциональный параметр, в котором можно указать ссылку на репозиторий. Если этот параметр был задан при сканировании, на странице проекта ссылка на репозиторий будет отображена в поле Сканируемый репозиторий.

Пример пайплайна:

stages:
    - cli
CODE:cli:
    stage: cli
    image: ${WAVE_CLI_IMAGE}
    script:
        - python /app/src/wave_cli.py -id ${CLI_PROJECT_ID} -u ${CLI_USERNAME} -p ${CLI_PASSWORD} -b ${CI_DEFAULT_BRANCH} -f ${CLI_FOLDER} -rn ${CI_PROJECT_NAME} -rl ${CI_PROJECT_URL} --wave-url https://example.wave.com --blocked --severity-status error=5 --severity-status critical=1
    when: manual 

В ходе сканирования wave-cli логирует информацию о ходе выполнения. Конечный результат работы утилиты определяется выводом сообщения:

  • FINISHED – при успешном завершении сканирования.
  • CRASHED – при неуспешном завершении.

Также утилита выводит краткую сводку о результатах сканирования, включающую следующую информацию:

  • scan_status – конечный результат работы утилиты.
  • scanSummary – статистика завершившегося сканирования:

    • infoVulnerabilityCount – количество найденных уязвимостей уровня критичности Info (информационный).
    • warningVulnerabilityCount – количество найденных уязвимостей уровня критичности Warning (предупреждение).
    • errorVulnerabilityCount – количество найденных уязвимостей уровня критичности Error (ошибка).
    • criticalVulnerabilityCount – количество найденных уязвимостей уровня критичности Critical (критический).

Подготовка к запуску

Перед встраиванием в пайплайн и запуском утилиты в Системе должен быть создан проект, идентификатор которого используется при запуске как параметр CLI_PROJECT_ID.

Чтобы определить идентификатор проекта в Системе, откройте страницу проекта и скопируйте идентификатор из адресной строки веб-браузера.

Например, для проекта с адресной строкой, приведенной ниже, идентификатор – 15:

https://wave.demo.appsec.global/project/15

Результаты запуска утилиты в Системе

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

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