Список поддерживаемых сканеров
Инструкция по загрузке результатов сканирования.
Secret Scan
| Название сканера | VV_SCAN_TYPE | Поддерживаемые языки | Ссылка |
|---|---|---|---|
| Trufflehog3 | TRUFFLEHOG3 | All | Github |
| Gitlab Secret detection | GITLAB_SECRET_DETECT | All | Gitlab |
| Trufflehog | TRUFFLEHOG | All | Github |
| GitLeaks | GITLEAKS | All | Github |
SAST
| Название сканера | VV_SCAN_TYPE | Поддерживаемые языки | Ссылка |
|---|---|---|---|
| Semgrep | SEMGREP | C#, Go, Java, JavaScript, JSX, JSON, PHP, Python, Ruby, Scala, Terraform, TypeScript, TSX | Github |
| ESLint | ESLINT | ECMAScript, JavaScript | Github |
| Checkmarx | CHECKMARX | C#, Go, Java, JavaScript, JSX, JSON, PHP, Python, Ruby, Scala, Terraform, TypeScript, TSX | Checkmarx |
| GitLab SAST | GITLAB_SAST | .NET Core, .NET Framework, Go, Java, Python, React, JavaScript, TypeScript | Gitlab |
| Snyk Code | SNYK_CODE | .NET, Apex, Bazel, C/C++, Elixir, Go, Java, Kotlin, JavaScript, PHP, Python, Ruby, Scala, Swift, TypeScript, VB.NET | Snyk.io |
| SARIF | SARIF | все | SarifWeb |
| SonarQube | SONAR_QUBE | все | SonarSource |
| PT AI | PT_AI | все | PT AI |
| Solar AppScreener | APP_SCREENER_SAST | все | RT Solar |
| SASTAV | SARIF | все | - |
| Svace | SARIF | все | Svace |
| PVS-Studio | PVS_STUDIO | C, C++, C#, Java | PVS-Studio |
| SpotBugs | SPOTBUGS | Java | Github |
Software Composition Analysis (SCA)
| Название сканера | VV_SCAN_TYPE | Тип сканируемых объектов | Ссылка |
|---|---|---|---|
| Trivy Image | TRIVY_IMAGE | OS packages, software dependencies | Github |
| Trivy File system | TRIVY_FS | OS packages, software dependencies | Github |
| Dependency Check | DEPENDENCY_CHECK | software dependencies | Github |
| Grype | GRYPE | OS packages, software dependencies | Github |
| Snyk SCA | SNYK_SCA | OS packages, software dependencies | Snyk.io |
| GitLab Container Security | GITLAB_CONTAINER_SECURITY | OS packages, software dependencies | GitLab |
| GitLab Dependency | GITLAB_DEPENDENCY | OS packages, software dependencies | GitLab |
| SBOM | SBOM | OS packages, software dependencies | CycloneDX |
| CodeScoring | SBOM | OS packages, software dependencies | CodeScoring |
| Luntry | LUNTRY | OS packages, software dependencies | Luntry |
| PT AI | PT_AI | software dependencies | PT AI |
| Solar AppScreener | APP_SCREENER_SCA | software dependencies | RT Solar |
DAST
| Название сканера | VV_SCAN_TYPE | Тип сканируемых объектов | Ссылка |
|---|---|---|---|
| Nuclei | NUCLEI | Network, Web | Github |
| ZAP | ZAP | Network, Web | ZAP |
| GitLab DAST | GITLAB_DAST | Network, Web | GitLab |
| Acunetix | ACUNETIX | Network, Web | Acunetix |
| Burp Suite | BURP_SUITE | Web | Burp Suite |
| PT AI | PT_AI | Web | PT AI |
| Solar AppScreener | APP_SCREENER_DAST | Web | RT Solar |
IaC
| Название сканера | VV_SCAN_TYPE | Тип сканируемых объектов | Ссылка |
|---|---|---|---|
| KICS | SARIF | IaC | Github |
| Checkov | SARIF | IaC | Github |
Сканеры для оркестрации
| Название сканера | SLUG | Тип | Поддерживаемые цели |
|---|---|---|---|
| Semgrep | SEMGREP | SAST | Продукт, Репозиторий |
| Trivy: FileSystem | TRIVY_FS | SCA | Продукт, Репозиторий |
| Trivy: Image | TRIVY_IMAGE | SCA | Продукт, Версия артефакта |
| Trufflehog | TRUFFLEHOG | SAST | Продукт, Репозиторий |
| Gitleaks | GITLEAKS | SAST | Продукт, Репозиторий |
| PT AI | PT_AI | SAST | Продукт, Репозиторий |
| CodeScoring: Repository | CODE_SCORING_REPOSITORY | SCA | Продукт, Репозиторий |
| CodeScoring: Artifact | CODE_SCORING_ARTIFACT | SCA | Продукт, Версия артефакта |
| AppScreener: SAST | APP_SCREENER_SAST | SAST | Продукт, Репозиторий |
| AppScreener: SCA Repository | APP_SCREENER_SCA_REPOSITORY | SCA | Продукт, Репозиторий |
| SASTAV | SASTAV | SAST | Продукт, Репозиторий |
| ZAP | ZAP | DAST | Актив, Продукт |
Особенности обработки SARIF
Определение серьёзности
При загрузке результатов в формате SARIF (включая SARIF-based сканеры: Svace, KICS, Checkov) платформа определяет серьёзность (severity) дефекта по следующему приоритету:
result.level— уровень, указанный непосредственно в результатеrule.properties.security-severity— числовой CVSS-подобный скорингrule.properties["problem.severity"]илиrule.properties.severityrule.defaultConfiguration.level— уровень по умолчанию из определения правила- Если ни одно из полей не найдено — присваивается None
Маппинг SARIF level → Vampy severity:
| SARIF level | Vampy severity |
|---|---|
| critical | Critical |
| error | High |
| warning | Medium |
| recommendation | Low |
| note | Low |
| none | None |
Пользовательские сабпарсеры
Несколько инструментов могут выгружать результаты в одном базовом формате (SARIF, SBOM, GitLab SAST, GitLab DAST), но с разным id внутри отчёта. Пользовательские сабпарсеры сопоставляют этот id отдельному сканеру в Vampy: он отображается в UI и API отдельно (фильтр Инструмент), а дедупликация и авторезолв затрагивают только дефекты этого инструмента, а не все загрузки того же формата в ветке (подробнее).
В конфиге в ids перечисляют идентификаторы как в отчёте — значения должны совпадать на каждой загрузке.
Поддерживаемые ключи верхнего уровня в JSON: SARIF, SBOM, GITLAB_SAST, GITLAB_DAST.
Каждый элемент массива описывает сопоставление:
| Поле | Описание |
|---|---|
type |
Тип сканера для Vampy: SAST, SCA, DAST и др. |
vendor |
Имя вендора (используется для идентификации инструмента) |
ids |
Список идентификаторов сканера как в отчёте |
displayName |
Необязательно: как сканер отображается в фильтре Инструмент (по умолчанию {базовый сканер}: {vendor}) |
Подробнее о параметрах — в
справочнике
(custom_sub_parsers.enabled, custom_sub_parsers.config_json).
Пример: SARIF
Допустим, сканер выгружает результаты в SARIF. В отчёте в секции runs → tool → driver указано имя инструмента:
{
"$schema": "https://json.schemastore.org/sarif-2.1.0.json",
"version": "2.1.0",
"runs": [
{
"tool": {
"driver": {
"name": "my_vendor_id"
}
}
}
]
}
Нас интересует поле runs[].tool.driver.name — по нему Vampy выбирает сабпарсер.
Сформируйте JSON-конфиг:
{
"SARIF": [
{
"type": "SAST",
"vendor": "My Scanner Vendor",
"ids": ["my_vendor_id"],
"displayName": "My Vendor: SARIF"
}
]
}
где:
my_vendor_id— значениеnameиз SARIF;vendor— наименование вендора;type— подсказка Vampy о типе сканера (SAST,SCAи т.д.);displayName— подпись в фильтре Инструмент.
Пример: GitLab SAST
В отчёте GitLab SAST идентификатор сканера находится в scan.scanner.id:
Добавьте (или дополните существующий) конфиг:
{
"GITLAB_SAST": [
{
"type": "SAST",
"vendor": "Corporative Gitlab Semgrep",
"ids": ["gitlab-semgrep"]
}
]
}
В ids укажите значение scan.scanner.id из отчёта (в примере — gitlab-semgrep). Отчёт загружайте с типом
GitLab SAST, не как отдельный произвольный формат.
Пример: SBOM
В CycloneDX идентификатор инструмента берётся из metadata.tools[].name. Vampy использует первое
совпадение и нормализует id: первое слово до пробела, в нижнем регистре (например, Dependency-Track →
dependency-track).
{
"bomFormat": "CycloneDX",
"metadata": {
"tools": [
{
"vendor": "OWASP",
"name": "Dependency-Track",
"version": "4.11.5"
}
]
}
}
Конфиг:
{
"SBOM": [
{
"type": "SCA",
"vendor": "Corporate Dependency Track",
"ids": ["dependency-track"]
}
]
}
Загружайте отчёт как SBOM. Если в name есть суффикс после пробела (Codescoring (https://...)), в ids
укажите только первую часть — codescoring.
Включение и применение конфигурации
Помимо JSON нужно включить работу с пользовательскими сабпарсерами.
Docker (config/user.ini):
v.common_config.parsing.custom_sub_parsers.enabled = on
v.common_config.parsing.custom_sub_parsers.config_json = {"SARIF":[{"type":"SAST","vendor":"My Scanner Vendor","ids":["my_vendor_id"],"displayName":"My Vendor: SARIF"}]}
Kubernetes (values.yaml):
commonConfig:
parsing:
customSubParsersEnabled: "on"
customSubParsersConfigJson: '{"SARIF":[{"type":"SAST","vendor":"My Scanner Vendor","ids":["my_vendor_id"],"displayName":"My Vendor: SARIF"}]}'
После изменения примените конфигурацию: в Docker — /opt/hw-vmp/bin/reconfig (после правки config/user.ini), в Kubernetes —
helm upgrade с тем же release и обновлённым values.yaml.
Проверка
- В расширенных фильтрах списка дефектов в блоке Инструмент должен появиться новый сканер (например, My Vendor: SARIF).
- Загрузите отчёт как обычный базовый формат: для примера выше — Sarif, для GitLab — GitLab SAST.
- В списке дефектов и в карточке дефекта в поле Инструмент отображается ваш сканер (slug вида
SARIF_MY_SCANNER_VENDOR), а не только общий тип отчёта.