Skip to content

Список поддерживаемых сканеров

Инструкция по загрузке результатов сканирования.

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) дефекта по следующему приоритету:

  1. result.level — уровень, указанный непосредственно в результате
  2. rule.properties.security-severity — числовой CVSS-подобный скоринг
  3. rule.properties["problem.severity"] или rule.properties.severity
  4. rule.defaultConfiguration.level — уровень по умолчанию из определения правила
  5. Если ни одно из полей не найдено — присваивается 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:

{
    "scan": {
        "scanner": {
            "id": "gitlab-semgrep",
            "name": "Semgrep"
        }
    }
}

Добавьте (или дополните существующий) конфиг:

{
  "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-Trackdependency-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.

Проверка

  1. В расширенных фильтрах списка дефектов в блоке Инструмент должен появиться новый сканер (например, My Vendor: SARIF).
  2. Загрузите отчёт как обычный базовый формат: для примера выше — Sarif, для GitLab — GitLab SAST.
  3. В списке дефектов и в карточке дефекта в поле Инструмент отображается ваш сканер (slug вида SARIF_MY_SCANNER_VENDOR), а не только общий тип отчёта.