Описание релизов¶
Соответствие версий¶
Начиная с релиза 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(chart1.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 template26.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=autorejection и точные коды ответов) смотрите в миграции на 26.1.0.
- Catalog-owned model: каждая запись каталога LLM-провайдеров теперь представляет
один валидированный набор
Изменения в требованиях к окружению
- Новые обязательные переменные окружения (
/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 changeset1.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/v1→https://api.deepseek.commodel:deepseek-chat→deepseek-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')"); под пользователем без ролиADMINendpoint возвращает HTTP 403Access 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 tag1.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 одной роли не сбрасывает другую.
- Catalog-owned model: каждая запись каталога LLM-провайдеров теперь представляет
один валидированный набор
-
Cache invalidation между backend и llm-service
- При edit провайдера в UI backend публикует webhook на
/admin/cache-invalidateв llm-service — конфиг обновляется без ожидания TTL. Защищено shared secret (APPSECSOLUTIONS_COPILOT_INTERNAL_SECRET).
- При edit провайдера в UI backend публикует webhook на
-
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=autorejection и точные коды ответов) смотрите в миграции на 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 для обмена данными и управления уязвимостями в едином цикле.