Skip to content

Версия 2026.10.1

Кратко: в релизе появилась оценка приоритета дефектов, которая учитывает данные внешних CVE-каталогов. Для трекеров задач добавлены шаблоны задач, для Azure Boards - внешние справочники значений полей. Образы сканеров можно загружать из приватного registry, добавлен импорт отчётов Nessus.

Перед обновлением

У Vampy BRO появилась собственная база PostgreSQL. В Kubernetes на больших инсталляциях остановите engine на время обновления. Если используется внешний PostgreSQL или Argo CD, до обновления выполните шаги из раздела Подготовка к обновлению. При обновлении с 2026.9.1 и ниже в Kubernetes выполните также подготовку из заметок к 2026.9.2.


Что нового

Дефекты и приоритизация

  • Оценка приоритета (0-100) для дефектов: отдельные формулы для SAST, SCA и DAST, учёт внешних данных (EPSS, CISA KEV, БДУ ФСТЭК, NVD) и критичности объектов. Настройка в Админ > Оценка приоритета. Подробнее: Оценка приоритета дефекта, Настройки оценки приоритета.
  • Новая карточка дашборда Проблемы для разбора в первую очередь - пять незакрытых дефектов с наибольшей оценкой: Карточки дашбордов.
  • Новые права ролей: чтение и запись настроек оценки приоритета, а также чтение и запись шаблонов задач трекера. См. Стандартные роли.
  • Внешние каталоги загружает и обновляет Vampy BRO, он же рассчитывает оценки приоритета. Каталоги скачиваются из registry Hexway (репозитории external-db/*), поэтому сервису нужен доступ к registry.
  • На карточке дефекта: Поток данных для SAST-находок из отчётов PT AI: Поток данных.
  • В PDF-отчёте закрытые дефекты, попавшие в фильтр выгрузки, учитываются в сводке и графиках: Отчеты в PDF.

Трекеры задач

  • Шаблоны задач на Jinja для заголовка и описания задачи в Jira, Kaiten, Azure Boards и EvaTeam: Шаблоны задач.
  • Azure Boards: значения полей задачи можно брать из внешнего HTTP-справочника с проверкой источника из мастера интеграции: Внешние источники значений полей.

Сканирование и оркестрация

  • Явное имя и тег образа при сканировании архива Docker-образа (REST API и vampy-cli --docker-image-slug, нужен vampy-cli 0.13.0 или новее): Запуск сканирований.
  • Загрузка образов сканеров из приватного registry: Приватный registry образа сканера.
  • Поддержка AICTL для PT AI в оркестрации (сканер PT AI (aictl)).
  • Импорт отчётов Nessus (XML-отчёт .nessus, тип DAST, VV_SCAN_TYPE=NESSUS): Поддерживаемые сканеры.
  • Semgrep: ошибки конфигурации больше не приводят к повторным попыткам запуска: Semgrep.

Интеграции со сканерами

Установка

  • Docker Compose: новые параметры встроенного PostgreSQL в user.ini: v.postgres.shared_buffers.mb (по умолчанию 256) и v.postgres.shm_size.mb (по умолчанию 512). Они устраняют ошибку could not resize shared memory segment.
  • У Vampy BRO собственная база PostgreSQL, см. Подготовка к обновлению.

Группы пользователей

  • Доступ группы к продукту или репозиторию можно назначить и снять прямо из карточки группы: Группы пользователей.

Интерфейс

  • Обновлена таблица дефектов: более плотные строки, путь к файлу открывается по ссылке.
  • Боковая панель с подробностями в списках продуктов и репозиториев.

Подготовка к обновлению

У Vampy BRO появилась собственная база PostgreSQL v_bro. По умолчанию она создаётся при обновлении на том же сервере PostgreSQL, что и база engine.

Если создать базу не удалось, в Docker Compose обновление прерывается до миграций основной базы, а в Kubernetes обновляется всё, кроме сервисов BRO.

Kubernetes: остановите engine на время обновления

Миграции добавляют колонки и индексы в таблицу дефектов. На больших инсталляциях это занимает время, а работающий engine может задерживать миграцию. В Kubernetes перед helm upgrade остановите engine вручную:

kubectl -n <namespace> scale deployment <release>-v-engine --replicas=0

После миграций Helm вернёт engine к числу реплик из vEngine.replicas. Если релиз управляется Argo CD с автоматической синхронизацией, приостановите её на время обновления.

Встроенный PostgreSQL

Дополнительных действий не требуется.

Внешний PostgreSQL

Базу BRO создаёт учётная запись engine. Права на создание нужны только на время обновления: дальше engine работает под своей ролью, а BRO под ролью v_bro. Перед обновлением выполните один из вариантов.

Вариант 1. Временно дать роли engine права на создание базы и роли. Подставьте имя роли engine:

ALTER ROLE v_server CREATEDB CREATEROLE;
-- только для PostgreSQL 16 и новее
ALTER ROLE v_server SET createrole_self_grant = 'set';

После успешного обновления права можно забрать:

ALTER ROLE v_server NOCREATEDB NOCREATEROLE;
ALTER ROLE v_server RESET createrole_self_grant;

Разрешите подключения с хостов Vampy в pg_hba.conf:

host    postgres    v_server    10.0.0.0/24    scram-sha-256
host    v_bro       v_bro       10.0.0.0/24    scram-sha-256

Если Vampy подключается через PgBouncer, добавьте в него базы postgres и v_bro.

В Kubernetes вместо прав для роли engine можно временно передать учётные данные администратора PostgreSQL в broDatabase.adminSecretsKeyRefs (пример ниже). Они используются только Job обновления, после обновления их можно удалить из values.

Вариант 2. Создать базу и пользователя BRO заранее под администратором PostgreSQL:

CREATE ROLE v_bro LOGIN PASSWORD '<пароль>';
CREATE DATABASE v_bro OWNER v_bro;

Разрешите роли v_bro подключение к базе v_bro в pg_hba.conf и PgBouncer и укажите пароль в конфигурации Vampy (примеры ниже). Пароль в конфигурации должен совпадать с паролем роли в PostgreSQL, иначе обновление остановится.

Отдельный сервер PostgreSQL для BRO

Базу и пользователя BRO администратор создаёт заранее, как в варианте 2, и указывает адрес сервера в конфигурации (примеры ниже).

Docker Compose: пример user.ini

Параметры задаются в /opt/hw-vmp/config/user.ini, секция [main]. Для варианта 1 ничего добавлять не нужно.

Вариант 2:

[main]
v.bro.pg.password = <пароль v_bro>

Отдельный сервер:

[main]
v.bro.pg.mode = custom
v.bro.pg.host = bro-postgres.example.internal
v.bro.pg.port = 5432
v.bro.pg.password = <пароль v_bro>

Kubernetes: пример values

Для варианта 1 блок broDatabase менять не нужно.

Временные учётные данные администратора вместо прав для роли engine:

broDatabase:
  adminSecretsKeyRefs:
    username:
      name: vampy-pg-admin
      key: username
    password:
      name: vampy-pg-admin
      key: password

Вариант 2, пароль в отдельном Secret:

broDatabase:
  secretsKeyRefs:
    password:
      name: vampy-bro-db
      key: password

Отдельный сервер:

broDatabase:
  mode: custom
  host: bro-postgres.example.internal
  port: "5432"
  secretsKeyRefs:
    password:
      name: vampy-bro-db
      key: password

Если на отдельном сервере базу должен создать Job обновления, добавьте к этому блоку adminSecretsKeyRefs, как в примере выше.

Argo CD. Новый ключ BRO_POSTGRES_PASSWORD сам в Secret $RELEASE_NAME-vampy-secrets не попадёт. Перед синхронизацией добавьте его вручную:

kubectl patch secret "${RELEASE_NAME}-vampy-secrets" -n "${RELEASE_NAMESPACE}" --type merge \
  -p "{\"stringData\":{\"BRO_POSTGRES_PASSWORD\":\"$(openssl rand -hex 16)\"}}"

Если Secret создаёт оператор (Vault, External Secrets, Sealed Secrets), добавьте этот ключ в его описание. Подробнее: Развёртывание через Argo CD.

Выделенные узлы. Если поды Vampy запускаются только на выделенных узлах, задайте для задач обновления preUpgrade.nodeSelector, preUpgrade.tolerations и preUpgrade.affinity, иначе они могут не запуститься.

После обновления

Откройте Админ > Оценка приоритета и дождитесь, когда у всех внешних источников появится Последняя синхронизация. После этого расчёт включится автоматически, если лицензия позволяет использовать оценку приоритета, и оценки сразу рассчитаются для всех открытых дефектов.


Изменения REST API

Обратная совместимость по URL: удалённых paths и HTTP-методов нет. Ответы и тела запросов в основном расширены (новые поля, enum, коды ответов). Клиенты с жёсткой валидацией JSON должны обновить модели по актуальной OpenAPI.

Несовместимо изменилось тело запроса POST /integrations/task_tracker/{...}/{integrationID}/external_dict/probe/: fields теперь объект с настройками полей (url, displayPath, valuePath) вместо массива имён, поле token заменено на externalDictToken.

Сводка: 12 новых paths, 16 новых операций.

Новые возможности API

Внешние данные дефекта

Метод Path Назначение
GET /scan_issues/{scanIssueID}/external_data/ CVE-данные и статус синхронизации (CISA KEV, EPSS, ФСТЭК, NVD)

Оценка приоритета (настройки пространства)

Метод Path Назначение
GET /service/priority_score/{spaceID}/settings/ Получить настройки
PATCH /service/priority_score/{spaceID}/settings/ Включить или выключить расчёт
PATCH /service/priority_score/{spaceID}/settings/{scannerType}/ Изменить формулу типа сканирования
POST /service/priority_score/{spaceID}/settings/{scannerType}/reset/ Сброс формулы к умолчанию
POST /service/priority_score/{spaceID}/settings/recalculation/run/ Запустить пересчёт (ответ 202; при отсутствии запланированного пересчёта - 409)

Шаблоны Task Tracker

Метод Path
GET /service/templates/meta/task-trackers/
POST /service/templates/preview/task-trackers/
GET, POST /service/templates/task-trackers/
GET, PATCH, DELETE /service/templates/task-trackers/{templateID}/
POST /service/templates/task-trackers/{templateID}/duplicate/

Группы пользователей

Метод Path Назначение
POST /user_groups/{userGroupID}/relations/set/ Назначить доступ к продукту или репозиторию
POST /user_groups/{userGroupID}/relations/unset/ Снять прямой доступ

Обновлённые операции (кратко)

  • Сканирование и загрузка: imageSlug для архива образа в POST /ext/v1/scan/, POST /ext/v1/orchestration/run/ и POST /spaces/{spaceID}/orchestration/run/ (в CLI: --docker-image-slug). Новые значения enum: парсер NESSUS, сканер PT_AI_AICTL.
  • Дефекты: в списке и карточке дефекта новые поля priorityScore, priorityScoreCalculationInProgress и dataFlow; фильтр по диапазону priorityScore, сортировка по priorityScore и fpScore; в истории изменений новый тип изменения PRIORITY_SCORE.
  • Права: новые значения ADMIN_PRIORITY_SCORE_SETTINGS_* и ADMIN_TASK_TRACKER_TEMPLATE_*.
  • Bitbucket: externalID при импорте и связывании ограничен 256 символами, более длинные значения отклоняются с 400.
  • Task Tracker: PATCH интеграции - шаблоны, для Azure Boards также внешние словари; POST .../external_dict/probe/ - проверка источника словаря.

Исправления и улучшения

  • Временный статус дефекта снова откатывается по истечении срока, даже если у пользователя, который его установил, нет прав на целевой статус.
  • Удаление назначенной группы пользователей больше не приводит к ошибке на вкладке "Группы" продукта или репозитория.
  • Nexus 3.88 и новее: поиск образов по имени больше не завершается ошибкой: Интеграция с Nexus.
  • CodeScoring: исправлен порядок аргументов при запуске Johnny 2026.35.1 и новее; пустые SBOM-отчёты больше не прерывают разбор.
  • Ускорен список репозиториев при большом числе агрегаций.
  • Bitbucket VCS: длинный external_id при импорте и связывании.
  • Профиль пользователя при LDAP: сохранение языка и MFA для неадминистраторов.
  • Оркестрация: удаление scan profile из списка, правка ссылок на образы, ошибка при пустом scan ID AppScreener.
  • Активы: исправлена сортировка по endpoint.
  • Репозиторий без критичности снова создаётся без ошибки.
  • Большие значения счётчиков на графиках статусов отображаются корректно.
  • Снижено потребление CPU сервисом файлов.
  • Интерфейс Nexus и ряд мелких исправлений интерфейса.

Безопасность

Обновлены базовые образы Python в компонентах платформы с устранением CVE-2026-7210.

Обновлены зависимости backend: Flask 3.1.3, Werkzeug 3.1.8, connexion 3.3.0, SQLAlchemy 2.0.54, gunicorn 26.2.0, requests 2.34.2.