Skip to content

Запуск сканирований

С помощью команды scan вы можете заускать на сканирование репозитории (--repository) и продукты (--products)

Vampy автоматически запустит сканер или группу сканеров, а после завершения сканирования загрузит результаты в Vampy

Запуск сканирования дефолтным профилем сканирования

vampy-cli scan --repository vmp/product/vampy-engine --details

--------
Scan process for repository "vmp/product/vampy-engine" ...
--------
✅ Scanning added to the queue and will be executed soon
Repository:  [CRITICAL]Vampy Engine
Link: https://vampy.hexway.io/repositories/123d4494-738c-404b-aa1b-14a8959de52d/
ScanProfile "Default" | RunMode: "CONCURRENT"
Commands:
---------
╭─ Semgrep
│  ├─ Scanner: SEMGREP
│  ├─ DockerImage: regestry.hexway.io/hexway/vampy-scan-images/semgrep:latest
│  ╰─ Command: semgrep scan --json --output "${RESULTS_FILE}" --config=p/owasp-top-ten --metrics=off "${CURRENT_DIR}"
╰─ Trivy: FileSystem
   ├─ Scanner: TRIVY_FS
   ├─ DockerImage: regestry.hexway.io/hexway/vampy-scan-images/trivy:latest
   ╰─ Command: trivy fs --scanners vuln,secret,misconfig -f json --output "${RESULTS_FILE}" --cache-dir "${CACHE_DIR}" --db-repository "${HW_REGISTRY}/trivy/trivy-db:2" --no-progress "${SRC_DIR}"

Task: https://vampy.hexway.io/admin/bgTasks?23=3df2a2f5-2dfd-4445-89c5-6328b6b375a8
Status: PENDING

Запуск сканирования дефолтным профилем сканирования с ожиданием результатов

Если вы просто запускаете сканирование, то необходимо периодически проверять его состояние, так как сканирование запускается не сразу, а в порядке очереди.

Для того чтобы вам этого не делать мы реализовали параметр --check-task

vampy-cli scan --repository vmp/product/vampy-engine --check-task --details
--------
Scan process for repository "vmp/product/vampy-engine" ...
--------
✅ Scanning added to the queue and will be executed soon
Repository:  [CRITICAL]Vampy Engine
Link: https://vampy.hexway.io/repositories/1234494-738c-404b-aa1b-14a8959de52d/
ScanProfile "Default" | RunMode: "CONCURRENT"
Commands:
---------
╭─ Semgrep
│  ├─ Scanner: SEMGREP
│  ├─ DockerImage: regestry.hexway.io/hexway/vampy-scan-images/semgrep:latest
│  ╰─ Command: semgrep scan --json --output "${RESULTS_FILE}" --config=p/owasp-top-ten --metrics=off "${CURRENT_DIR}"
╰─ Trivy: FileSystem
   ├─ Scanner: TRIVY_FS
   ├─ DockerImage: regestry.hexway.io/hexway/vampy-scan-images/trivy:latest
   ╰─ Command: trivy fs --scanners vuln,secret,misconfig -f json --output "${RESULTS_FILE}" --cache-dir "${CACHE_DIR}" --db-repository "${HW_REGISTRY}/trivy/trivy-db:2" --no-progress "${SRC_DIR}"

Task: https://vampy.hexway.io/admin/bgTasks?id=30994826-d818-482c-aea5-8715d1db3c28
Status: PENDING

--------
Checking Background Task 30994826-d818-482c-aea5-8715d1db3c28 for repository 'vmp/product/vampy-engine'
--------

✅ Background Task: 'Scan repository 'Vampy Engine''
Link: https://vampy.hexway.io/admin/bgTasks?id=30994826-d818-482c-aea5-8715d1db3c28
Status: SUCCESS
SubTasks:
┌──────────────────────────────────────┬─────────────────────────────┬─────────────────────────────┬─────────┐
│ NAME                                 │ STARTED                     │ FINISHED                    │ STATUS  │
├──────────────────────────────────────┼─────────────────────────────┼─────────────────────────────┼─────────┤
│ Prepare data for orchestration       │ 2024-12-18T04:49:56.612932Z │ 2024-12-18T04:49:57.436367Z │ SUCCESS │
│ Execute orchestration task           │ 2024-12-18T04:49:57.463707Z │ 2024-12-18T04:49:57.485577Z │ SUCCESS │
│ Await orchestration service callback │ 2024-12-18T04:50:44.098105Z │                             │ SUCCESS │
└──────────────────────────────────────┴─────────────────────────────┴─────────────────────────────┴─────────┘

Запуск сканирования дефолтным профилем сканирования с одновременной проверкой SQG

Так же вы можете сразу после выполнения сканирования автоматически проверять репозиторий или продукт на соответствие выбранным критериям качества (Security Quality Gates)

Для этого запустите vampy-cli с параметрами --check-qg или --check-full

vampy-cli scan --repository vmp/product/vampy-engine --check-full --details
--------
Scan process for repository "vmp/product/vampy-engine" ...
--------
✅ Scanning added to the queue and will be executed soon
Repository:  [CRITICAL]Vampy Engine
Link: https://vampy.hexway.io/repositories/12344494-738c-404b-aa1b-14a8959de52d/
ScanProfile "Default" | RunMode: "CONCURRENT"
Commands:
---------
╭─ Semgrep
│  ├─ Scanner: SEMGREP
│  ├─ DockerImage: regestry.hexway.io/hexway/vampy-scan-images/semgrep:latest
│  ╰─ Command: semgrep scan --json --output "${RESULTS_FILE}" --config=p/owasp-top-ten --metrics=off "${CURRENT_DIR}"
╰─ Trivy: FileSystem
   ├─ Scanner: TRIVY_FS
   ├─ DockerImage: regestry.hexway.io/hexway/vampy-scan-images/trivy:latest
   ╰─ Command: trivy fs --scanners vuln,secret,misconfig -f json --output "${RESULTS_FILE}" --cache-dir "${CACHE_DIR}" --db-repository "${HW_REGISTRY}/trivy/trivy-db:2" --no-progress "${SRC_DIR}"

Task: https://vampy.hexway.io/admin/bgTasks?id=ae898310-ed27-42d1-b076-498322ced2f0
Status: PENDING

--------
Checking Background Task ae898310-ed27-42d1-b076-498322ced2f0 for repository 'vmp/product/vampy-engine'
--------

✅ Background Task: 'Scan repository 'Vampy Engine''
Link: https://vampy.hexway.io/admin/bgTasks?id=ae898310-ed27-42d1-b076-498322ced2f0
Status: SUCCESS
SubTasks:
┌──────────────────────────────────────┬─────────────────────────────┬─────────────────────────────┬─────────┐
│ NAME                                 │ STARTED                     │ FINISHED                    │ STATUS  │
├──────────────────────────────────────┼─────────────────────────────┼─────────────────────────────┼─────────┤
│ Prepare data for orchestration       │ 2024-12-18T04:56:00.537908Z │ 2024-12-18T04:56:01.167007Z │ SUCCESS │
│ Execute orchestration task           │ 2024-12-18T04:56:01.190371Z │ 2024-12-18T04:56:01.207312Z │ SUCCESS │
│ Await orchestration service callback │ 2024-12-18T04:56:47.906176Z │                             │ SUCCESS │
└──────────────────────────────────────┴─────────────────────────────┴─────────────────────────────┴─────────┘

--------
Checking SQG for repository 'vmp/product/vampy-engine' ...
--------

⛔ QualityGate: 'Critical'
Repository: 'Vampy Engine'
Link: https://vampy.hexway.io/repositories/1efd4494-738c-404b-aa1b-14a8959de52d/
Status: FAILED
Results:
┌────────┬──────────────┬────────────┬───────────┬───────────────┐
│ STATUS │ SCANNER TYPE │ SEVERITIES │ MAX VALUE │ CURRENT VALUE │
├────────┼──────────────┼────────────┼───────────┼───────────────┤
│ PASSED │ SAST         │ CRITICAL   │         0 │             0 │
│ PASSED │ DAST         │ CRITICAL   │         0 │             0 │
│ PASSED │ SCA          │ CRITICAL   │         0 │             0 │
│ FAILED │ SAST         │ HIGH       │         0 │             1 │
│ PASSED │ DAST         │ HIGH       │         0 │             0 │
│ PASSED │ SCA          │ HIGH       │        10 │            10 │
│ PASSED │ SAST         │ MEDIUM     │         5 │             0 │
│ PASSED │ DAST         │ MEDIUM     │         5 │             0 │
│ PASSED │ SCA          │ MEDIUM     │        40 │            36 │
│ PASSED │ SAST         │ LOW        │        10 │             0 │
│ PASSED │ DAST         │ LOW        │        10 │             0 │
│ PASSED │ SCA          │ LOW        │       100 │            67 │
└────────┴──────────────┴────────────┴───────────┴───────────────┘

Запуск сканирования выбранным профилем сканирования

vampy-cli scan --repository vmp/product/vampy-engine --profile my-sast-sca-profile --details

--------
Scan process for repository "vmp/product/vampy-engine" ...
--------
✅ Scanning added to the queue and will be executed soon
Repository:  [CRITICAL]Vampy Engine
Link: https://vampy.hexway.io/repositories/123d4494-738c-404b-aa1b-14a8959de52d/
ScanProfile "Default" | RunMode: "CONCURRENT"
Commands:
---------
╭─ Semgrep
│  ├─ Scanner: SEMGREP
│  ├─ DockerImage: regestry.hexway.io/hexway/vampy-scan-images/semgrep:latest
│  ╰─ Command: semgrep scan --json --output "${RESULTS_FILE}" --config=p/owasp-top-ten --metrics=off "${CURRENT_DIR}"
╰─ Trivy: FileSystem
   ├─ Scanner: TRIVY_FS
   ├─ DockerImage: regestry.hexway.io/hexway/vampy-scan-images/trivy:latest
   ╰─ Command: trivy fs --scanners vuln,secret,misconfig -f json --output "${RESULTS_FILE}" --cache-dir "${CACHE_DIR}" --db-repository "${HW_REGISTRY}/trivy/trivy-db:2" --no-progress "${SRC_DIR}"

Task: https://vampy.hexway.io/admin/bgTasks?23=3df2a2f5-2dfd-4445-89c5-6328b6b375a8
Status: PENDING

Запуск выбранного сканера

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

Запуск выбранного сканера с параметрами по умолчанию

Запустим semgrep с параметрами по-умолчанию (--config=p/owasp-top-ten --metrics=off), дождемся завершения сканирования и сразу проверим SQG

vampy-cli scan --repository vmp/product/vampy-engine --scanner SEMGREP --check-task --details
--------
Scan process for repository "vmp/product/vampy-engine" | scanner "SEMGREP"...
--------
✅ Scanning added to the queue and will be executed soon
Repository:  [CRITICAL]Vampy Engine
Link: https://vampy.hexway.io/repositories/1efd1234-738c-404b-aa1b-14a8959de52d/
ScanProfile "Specific Scanners" | RunMode: "CONCURRENT"
Commands:
---------
── Semgrep
   ├─ Scanner: SEMGREP
   ├─ DockerImage: registry.hexway.io/hexway/vampy-scan-images/semgrep:latest
   ╰─ Command: semgrep scan --json --output "${RESULTS_FILE}" --config=p/owasp-top-ten --metrics=off "${CURRENT_DIR}"

Task: https://vampy.hexway.io/admin/bgTasks?id=123fd3b9-fb21-487b-bf61-ca1a62bc89e3
Status: PENDING

--------
Checking Background Task 968fd3b9-fb21-487b-bf61-ca1a62bc89e3 for repository 'vmp/product/vampy-engine')
--------

✅ Background Task: 'Scan repository 'Vampy Engine''
Link: https://vampy.hexway.io/admin/bgTasks?id=123fd3b9-fb21-487b-bf61-ca1a62bc89e3
Status: SUCCESS
SubTasks:
┌──────────────────────────────────────┬─────────────────────────────┬─────────────────────────────┬─────────┐
│ NAME                                 │ STARTED                     │ FINISHED                    │ STATUS  │
├──────────────────────────────────────┼─────────────────────────────┼─────────────────────────────┼─────────┤
│ Prepare data for orchestration       │ 2024-12-18T05:05:44.636376Z │ 2024-12-18T05:05:45.298836Z │ SUCCESS │
│ Execute orchestration task           │ 2024-12-18T05:05:45.321419Z │ 2024-12-18T05:05:45.339013Z │ SUCCESS │
│ Await orchestration service callback │ 2024-12-18T05:06:18.484481Z │                             │ SUCCESS │
└──────────────────────────────────────┴─────────────────────────────┴─────────────────────────────┴─────────┘

Запуск выбранного сканера с кастомными параметрами сканирования

Вы можете запустить выбранный вами сканер и сами определить параметры его запуска

Для этого запустите vampy-cli используйте опцию --scanner и --scanner-options

Запустим semgrep с параметрами --config=p/ai.python.detect-openai.detect-openai

vampy-cli scan --repository vmp/product/vampy-engine --scanner SEMGREP --scanner-options "--config=p/ai.python.detect-openai.detect-openai" --check-task --details
--------
Scan process for repository "vmp/product/vampy-engine" | scanner "SEMGREP"...
--------
✅ Scanning added to the queue and will be executed soon
Repository:  [CRITICAL]Vampy Engine
Link: https://vampy.hexway.io/repositories/1efd4123-738c-404b-aa1b-14a8959de52d/
ScanProfile "Specific Scanners" | RunMode: "CONCURRENT"
Commands:
---------
── Semgrep
   ├─ Scanner: SEMGREP
   ├─ DockerImage: regestry.hexway.io/hexway/vampy-scan-images/semgrep:latest
   ╰─ Command: semgrep scan --json --output "${RESULTS_FILE}" --config=p/ai.python.detect-openai.detect-openai "${CURRENT_DIR}"

Task: https://vampy.hexway.io/admin/bgTasks?id=3123225e-a41c-4950-a474-23c457638a16
Status: PENDING

--------
Checking Background Task 3b95225e-a41c-4950-a474-23c457638a16 for repository 'vmp/product/vampy-engine')
--------

⌛ Background Task: 'Scan repository 'Vampy Engine''
Link: https://vampy.hexway.io/admin/bgTasks?id=3123225e-a41c-4950-a474-23c457638a16
Status: PROGRESS | unable to finish after 121 seconds
SubTasks:
┌──────────────────────────────────────┬─────────────────────────────┬─────────────────────────────┬─────────┐
│ NAME                                 │ STARTED                     │ FINISHED                    │ STATUS  │
├──────────────────────────────────────┼─────────────────────────────┼─────────────────────────────┼─────────┤
│ Prepare data for orchestration       │ 2024-12-18T05:16:52.930801Z │ 2024-12-18T05:16:53.703553Z │ SUCCESS │
│ Execute orchestration task           │ 2024-12-18T05:16:53.727320Z │ 2024-12-18T05:16:53.745446Z │ SUCCESS │
│ Await orchestration service callback │                             │                             │ PENDING │
└──────────────────────────────────────┴─────────────────────────────┴─────────────────────────────┴─────────┘

Параметры команды scan

Параметр Описание Значение по умолчанию
--repository value SLUG или ID репозитория
--branch value Ветка репозитория
--product value SLUG или ID продукта
--scanner value Название сканера
--scanner-options value Специфические опции сканера (подставляются в команду сканирования)
--profile value Профиль сканирования
--dry-run Запустить команду без выполнения на удаленной стороне false
--check-qg Проверить Quality Gate после сканирования false
--check-task Проверить статус фоновой задачи false
--check-full Проверить полный процесс false

Получение списка поддерживаемых сканеров

Чтобы получить список поддерживаемых сканеров, выполните команду:

vampy-cli list scanners
--------
Getting list or scanners...
--------
Scanners (47):
┌───────────────────────────┬───────────────────────────┬──────┬───────────────────────┐
│ NAME                      │ SLUG                      │ TYPE │ SUPPORT ORCHESTRATION │
├───────────────────────────┼───────────────────────────┼──────┼───────────────────────┤
│ Acunetix                  │ ACUNETIX                  │ DAST │ ❌                    │
│ Burp Suite                │ BURP_SUITE                │ DAST │ ❌                    │
│ Checkmarx                 │ CHECKMARX                 │ SAST │ ❌                    │
│ DependencyCheck           │ DEPENDENCY_CHECK          │ SCA  │ ❌                    │
│ ESlint                    │ ESLINT                    │ SAST │ ❌                    │
│ GitLab Container Security │ GITLAB_CONTAINER_SECURITY │ SCA  │ ❌                    │
│ GitLab DAST               │ GITLAB_DAST               │ DAST │ ❌                    │
│ GitLab Dependency         │ GITLAB_DEPENDENCY         │ SCA  │ ❌                    │
│ GitLab SAST               │ GITLAB_SAST               │ SAST │ ❌                    │
│ GitLab Secret Detection   │ GITLAB_SECRET_DETECT      │ SAST │ ❌                    │
│ Gitleaks                  │ GITLEAKS                  │ SAST │ ✅                    │
│ Grype                     │ GRYPE                     │ SCA  │ ❌                    │
│ Nuclei                    │ NUCLEI                    │ DAST │ ❌                    │
│ PT AI                     │ PT_AI                     │ SAST │ ✅                    │
│ PVS-Studio                │ PVS_STUDIO                │ SAST │ ❌                    │
│ SBOM                      │ SBOM                      │ SCA  │ ❌                    │
│ Sarif                     │ SARIF                     │ SAST │ ❌                    │
│ Semgrep                   │ SEMGREP                   │ SAST │ ✅                    │
│ Snyk: Code                │ SNYK_CODE                 │ SAST │ ❌                    │
│ Snyk: SCA                 │ SNYK_SCA                  │ SCA  │ ❌                    │
│ SonarQube                 │ SONAR_QUBE                │ SAST │ ❌                    │
│ Trivy: FileSystem         │ TRIVY_FS                  │ SCA  │ ✅                    │
│ Trivy: Image              │ TRIVY_IMAGE               │ SCA  │ ✅                    │
│ Trufflehog                │ TRUFFLEHOG                │ SAST │ ✅                    │
│ Trufflehog3               │ TRUFFLEHOG3               │ SAST │ ❌                    │
│ Vampy                     │ VAMPY                     │ SAST │ ❌                    │
│ ZAP                       │ ZAP                       │ DAST │ ❌                    │
└───────────────────────────┴───────────────────────────┴──────┴───────────────────────┘

Получение списка профилей сканирования

Для того чтобы получить список существующих профилей сканирования выполните команду:

vampy-cli list scan-profiles
--------
Getting list or scan porfiles...
--------
Scanner Profiles (6 of 6):
┌──────────────────┬──────────────────────┬────────────┬─────────────────┬──────────────────────────────────────────────────────────────────────────────────────────────┐
│ NAME             │ SLUG                 │ RUN MODE   │ ACTIVE SCANNERS │ LINK                                                                                         │
├──────────────────┼──────────────────────┼────────────┼─────────────────┼──────────────────────────────────────────────────────────────────────────────────────────────┤
│ Initial profile  │ INITIAL_SCAN_PROFILE │ CONCURRENT │               4 │ https://vampy.corp.hexway.io/orchestration?profileId=cd4772a4-5041-4039-8d33-ba70f6c28514 │
│ Базовый скан     │ bazovyi-skan         │ CONCURRENT │               4 │ https://vampy.corp.hexway.io/orchestration?profileId=882d2036-5b40-43ef-a4ec-68fc55605623 │
│ SCA scan         │ sca-scan             │ CONCURRENT │               1 │ https://vampy.corp.hexway.io/orchestration?profileId=3776b652-8d4a-4bbe-9296-0d14546b7b87 │
│ Только PT AI     │ tol-ko-pt-ai         │ CONCURRENT │               1 │ https://vampy.corp.hexway.io/orchestration?profileId=1c9d231a-f326-4371-82c4-124121863f57 │
│ docker images    │ docker-images        │ CONCURRENT │               1 │ https://vampy.corp.hexway.io/orchestration?profileId=17a074a1-b4c7-4bae-89a3-869957cab149 │
│ Integration SAST │ integration-sast     │ CONCURRENT │               1 │ https://vampy.corp.hexway.io/orchestration?profileId=d3558820-1c80-4a6e-a5fd-648e2a5517d4 │
└──────────────────┴──────────────────────┴────────────┴─────────────────┴──────────────────────────────────────────────────────────────────────────────────────────────┘