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

Утилита 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} --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.

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

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} --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, на странице проекта вновь завершившееся сканирование будет представлено в виде отдельной строки, детали см. в разделе «Результаты сканирования».