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

Описание релизов

Соответствие версий

Начиная с релиза 26.1.0 используется сквозная нумерация: продукт, helm chart, docker-compose template и все образы сервисов идут под одним тегом.

Релиз Helm chart Compose template Образы Migration guide
26.1.0 (текущий) 26.1.0 26.1.0 26.1.0 Миграция на 26.1.0
25.5.1 (legacy patch) 1.8.1 1.0.2 backend 1.8.1, остальное 1.8.0 Миграция на 26.1.0 — была migration_1_8
25.5.0 (legacy) 1.8.0 1.0.1 1.8.0 Миграция на 26.1.0 — была migration_1_8
25.4.x 1.7.x 1.0.0 1.7.x Миграция с v1.6 на v1.7
25.3.x 1.6.x 1.6.x Миграция с v1.5 на v1.6

Содержательно 26.1.0 идентичен 25.5.1 (chart 1.8.1) — это тот же набор бинарников под новым unified-тегом, чтобы убрать путаницу со скачущими версиями. Миграция с прошлых установок (25.5.x / 1.8.x) — нулевая, достаточно docker compose pull && up -d (compose) или helm upgrade --version 26.1.0 (k8s). Liquibase 003 применяется автоматически.


26.1.0

Соответствует helm chart appsec-copilot 26.1.0, compose template 26.1.0, образы всех сервисов 26.1.0. Унифицированная нумерация (boss directive — сквозная версия везде).

Содержание = 25.5.0 + три patch-фикса из 25.5.1, под одной маркой.

Новая функциональность и улучшения (было в 25.5.0)

  • Архитектура и каталог LLM-провайдеров

    • Catalog-owned model: каждая запись каталога LLM-провайдеров теперь представляет один валидированный набор (endpoint, ключ, модель). Исчезли неоднозначности при мульти-ролевых конфигурациях; для разных ролей с разной моделью каталог хранит независимые строки. Подробнее — Catalog-owned-model.
    • Multi-role auto-split: при переезде из v1.7, если в legacy конфигурации одна провайдер-запись использовалась и для prediction, и для explanation с разными моделями, миграция автоматически разделит её на две независимые строки. Существующие тесты подключения и привязки ролей сохраняются.
    • protocol=auto отклонён. При обновлении до 26.1.0 или попытке создать запись каталога с protocol=auto через REST API backend вернёт 400 Bad Request с Invalid protocol value: must be one of [ollama, openai_compatible]. Подробности валидации (включая protocol=auto rejection и точные коды ответов) смотрите в миграции на 26.1.0.

Изменения в требованиях к окружению

  • Новые обязательные переменные окружения (/opt/copilot/.env или helm values):
    • APPSECSOLUTIONS_COPILOT_INTERNAL_SECRET — обязательный (32+ chars random).
    • PROVIDER_CONFIG_TTL_SECONDS — необязательный (default 300).
    • FEEDBACK_ENABLED — необязательный (default true).

Исправления (были в 25.5.1, перенесены)

  • Корректировка сидинга Default LLM Provider (Liquibase changeset 1.8.0/003_fix_deepseek_default_endpoint). В версии 25.5.0 сидируемый DeepSeek-провайдер записывался с endpoint = https://api.deepseek.com/v1 и моделью deepseek-chat. OpenAI- совместимый клиент в llm-service добавляет собственный /v1 к адресу, поэтому при первом «Прогреве» провайдер возвращал HTTP 404. Патч выполняет идемпотентный UPDATE:

    • endpoint: https://api.deepseek.com/v1https://api.deepseek.com
    • model: deepseek-chatdeepseek-v4-pro

    Существующие инсталляции 25.5.x получают исправление автоматически при перезапуске backend образа 26.1.0. Если оператор уже скорректировал провайдер вручную (например через UI Settings → LLM-провайдеры), миграция оставит строку без изменений (условие WHERE endpoint='…/v1' AND model='deepseek-chat').

  • Тайм-аут предсказания по умолчанию увеличен с PT180S до PT300S (PredictionProperties.processingTimeout). Тяжёлые bulk-импорты через Hub (50+ находок за один проход) под DeepSeek-throttling выходили за 180 секунд и валились с HttpTimeoutException хотя llm-service успешно дорабатывал запросы. Для очень больших bulk-импортов (>100 находок) оператор может дальше увеличить значение через переменную окружения APPSECSOLUTIONS_COPILOT_PREDICTION_HTTP_PROCESSINGTIMEOUT=PT600S.

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

  • GET /api/users теперь доступен только пользователям с ролью ADMIN (closes B-D3.4-01). Раньше пользователи с ролью USER (аналитики) могли получить полный список учётных записей через прямой API, несмотря на то что UI прятал страницу. Метод UserController.list() помечен @PreAuthorize("hasRole('ADMIN')"); под пользователем без роли ADMIN endpoint возвращает HTTP 403 Access denied.

Подробности обновления: просто docker compose pull && up -d (compose) или helm upgrade --version 26.1.0 (k8s). Никаких дополнительных шагов или ручных правок .env не требуется. Миграция на 26.1.0 (если едете с 25.4.x/1.7.x).

25.5.1 (legacy)

Превратилась в 26.1.0 под унифицированной нумерацией — функционально идентична.

25.5.0 (legacy)

Соответствует helm chart appsec-copilot v1.8.0 и backend / llm-service image tag 1.8.0.

Новая функциональность и улучшения

  • Архитектура и каталог LLM-провайдеров

    • Catalog-owned model: каждая запись каталога LLM-провайдеров теперь представляет один валидированный набор (endpoint, ключ, модель). Исчезли неоднозначности при мульти-ролевых конфигурациях; для разных ролей с разной моделью каталог автоматически клонирует строку.
    • LLM для Prediction: администратор теперь может назначить LLM-провайдер для роли Prediction (Ollama / OpenAI-совместимые). Раньше — только RL Classifier; в v1.7.0 RL был удалён, теперь Prediction всегда работает через LLM.
    • Per-role health monitor: состояние prediction и explanation отслеживается независимо; warmup одной роли не сбрасывает другую.
  • Cache invalidation между backend и llm-service

    • При edit провайдера в UI backend публикует webhook на /admin/cache-invalidate в llm-service — конфиг обновляется без ожидания TTL. Защищено shared secret (APPSECSOLUTIONS_COPILOT_INTERNAL_SECRET).
  • Feedback loop end-to-end

    • Approve/reject в Feedback queue → AMQP внутри backend + HTTP forward в llm-service.
    • На approve запись копируется в few_shot_examples с source='user-feedback' и используется в следующих promptaх того же CWE/lang.
    • CWE prefix normalization: CWE-89, 89, cwe-89 → канонический CWE-89.
  • Admin REST API CRUD каталога

    • GET / POST / PUT / DELETE /api/settings/llm-providers
    • Усиленная валидация при создании / редактировании LLM-провайдера: запрещены неоднозначные конфигурации (например, провайдер должен явно указать протокол). Защита от удаления провайдера, ассоциированного с ролью (409 Conflict).
    • Probe endpoints: /test-connection, /llm-providers/{discover-models,test-credentials}.

    Подробности валидации (включая protocol=auto rejection и точные коды ответов) смотрите в миграции на v1.8.0.

Изменения в требованиях к окружению

  • Новые обязательные переменные окружения (/opt/copilot/.env или helm values):
    • APPSECSOLUTIONS_COPILOT_INTERNAL_SECRET — обязательный (32+ chars random).
    • PROVIDER_CONFIG_TTL_SECONDS — необязательный (default 300).
    • FEEDBACK_ENABLED — необязательный (default true).

Подробности миграции: Миграция на v1.8.0.


25.4.1

Новая функциональность и улучшения

  • Управление отчетами и сканированиями

    • Гибкие сценарии запуска проверок отчетов:

      • Только Predict: триаж уязвимостей с автоматическим определением статусов True Positive / False Positive.
      • Predict + Explain: триаж с последующим получением объяснений и рекомендаций по исправлению (CodeFix) от LLM для уязвимостей со статусом True Positive
      • Только Explain: получение объяснений и рекомендаций по исправлению (CodeFix) от LLM для отчетов с уже проставленными статусами.
    • Импорт отчетов: поддержка загрузки отчетов в формате SARIF от сканеров PT AI, AppScreener и AppSec.Wave.

    • Расширенная информация об уязвимостях: в интерфейсе отображаются уровень серьезности (severity), сработавшие правила (триггеры) и объект сканирования (scan target) из импортированных отчетов.
    • Экспорт результатов: возможность выгрузки отчетов о результатах сканирования в формате JSON.
    • Управление процессами: добавлена функция принудительной остановки ошибочно запущенных или долгих проверок.
  • Работа с уязвимостями и AI

    • Объяснение для любых статусов: возможность запросить объяснение у LLM не только для True Positive, но и для уязвимостей, помеченных как False Positive.
    • Контроль решений: пользователь имеет окончательное право принятия решения по статусу уязвимости. Интерфейс позволяет просматривать выводы модели и при необходимости вручную изменять статусы (True Positive / False Positive).
    • Дедупликация: автоматическое объединение дублирующихся уязвимостей в отчетах для упрощения анализа.
    • История решений: система записывает ранее принятые решения по обработанным уязвимостям, что ускоряет повторный анализ.
  • Безопасность и аудит

    • Сервис авторизации: внедрена система аутентификации и авторизации для пользователей и внешних систем (API).
    • Детальное логирование: ведутся подробные логи всех действий пользователей и взаимодействий сторонних систем с платформой.
    • Аудит решений: все изменения статусов уязвимостей, вносимые пользователями, фиксируются в системе с привязкой к учетной записи, дате и времени.
  • Производительность и мониторинг

    • Параллельная обработка: система поддерживает до 5 параллельных проверок отчетов.
    • Визуализация прогресса: реализована наглядная визуализация хода сканирований с индикацией текущего этапа и отображением уровня рисков обрабатываемых данных.
  • Интеграции

    • AppSec.Hub: добавлена интеграция с платформой AppSec.Hub для обмена данными и управления уязвимостями в едином цикле.