Введение
Прошло почти полгода с момента предыдущего релиза Dependency-Track v4.11 (о котором мы также писали в этой статье). 1 октября вышел новый релиз Dependency-Track v4.12.0, а на днях – релиз v4.12.1. Мы опробовали новый функционал и готовы рассказать о тех изменениях, которые показались нам наиболее интересными.
Этот релиз в основном был посвящен работе с тегами. Также был добавлен новый интерфейс для работы с нарушениями политик и изменены правила работы с API. Но обо всем по порядку.

Теги
- Алерты могут быть привязаны к проектам с определенными тегами. 
Оповещения теперь могут приходить не только по проектам, но и по заданным тегам.

- Проекты могут быть включены или исключены для валидации BOM через теги. 
Таким образом можно включить (или отключить) валидацию BOM для всех проектов, за исключением тех, которым присвоены определенные теги.

- Проекты могут быть тегированы как часть запроса загрузки BOM. Для запросов PUT/POST на api/v1/bom добавилось поле projectTags, чтобы сразу указывать теги при загрузке SBOM. 
- Поля с тегами на фронтенде сейчас предлагают автозаполнение. 
- Появилось новое представление Tag Management, благодаря которому можно управлять тегами, в том числе через REST API эндпоинты. Теперь можно отслеживать, сколько тегов существует и к каким проектам, политикам и алертам они привязаны. Проекты, политики и алерты могут быть отвязаны от тегов, а теги могут удаляться. 

Интерфейс представляет собой список всех имеющихся в системе тегов, связанных с проектами, политиками, алертами (каждая сущность — отдельный столбец).
Можно открыть диалоговое окно, позволяющее:
- Провалиться внутрь — доступно только для проекта; 
- Отвязать одну или несколько сущностей от данного тега; 
- 
Удалить тег.  
Тег можно удалить даже в случае, если к нему привязаны другие сущности (то есть необязательно отвязывать от тега все прикрепленные к нему проекты/алерты/политики, чтобы удалить его). Для удаления необходимо добавить пользователю или команде право TAG_MANAGEMENT. По умолчанию , администратор системы не имеет данных прав, так что после обновления Dependency-Track на новую версию это право нужно добавить вручную.

После добавления прав необходимо заново осуществить вход в систему, затем можно удалить тег.

Работа с политиками
- 
Глобальный интерфейс аудита нарушений политик. Аналогично глобальному представлению уязвимостей из версии 4.11.0 в этом релизе был добавлен интерфейс для работы с нарушениями политик.  Интерфейс для работы с нарушениями политик 
Появилась возможность поиска по следующим полям:
- по типу нарушения (Fail, Warn, Info), 
- по типу риска (License, Security, Operational), 
- по статусу анализа (Not Set, Rejected, Approved), 
- по датам появления, 
- по названию политики, лицензии, компоненту и имени проекта, 
- по срабатываниям конкретных политик, заведенных вами в Dependency-Track. 
Увы, проблемы с долгой загрузкой остаются. Как и в случае с интерфейсом для уязвимостей, загрузка занимает значительное время — в среднем 46 секунд для объема нарушений, равного 44912 срабатываниям.

- Добавлена поддержка политик на основании EPSS. 
EPSS (Exploit Prediction Scoring System — прогноз эксплуатации уязвимости) позволяет предсказать, насколько вероятна эксплуатация той или иной уязвимости.

Ранее для каждого проекта уже существовала система предсказания эксплуатации на основании графика EPSS / CVSS. Чем ближе уязвимость к верхнему правому краю графика, тем более она опасна и тем выше вероятность, что она будет проэксплуатирована.

Поэтому наличие условий в политике, по которым можно выставить отслеживание EPSS, является очень хорошей помощью в триаже уязвимостей, особенно если EPSS прописан в связке с критичностью уязвимости.
Изменения в API
- Ручка GET /v1/bom/token/{uuid} объявлена как устаревшая (deprecated), вместо неё предлагается использовать /v1/event/token/{uuid}. 
- Аналогично с ручкой GET /api/v1/tag/{policyUuid}, можно использовать вместо неё GET /api/v1/tag/policy/{uuid} в своих интеграциях. 
- Модернизация. Технологический стек Dependency-Track был обновлен – c Swagger v2 на OpenAPI v3. В связи с этим описание API доступно по новому адресу: <hostname>/api/openapi.json). 
- Добавлена аутентификация в бейджи. 
Бейдж (badge) – это SVG-значок с информацией о состоянии проекта (подробнее здесь.) На основании анализа Dependency-Track его можно загружать в репозиторий с оригинальным проектом через API.


Ранее Dependency-Track мог выгружать информацию о нарушениях политик и о количестве уязвимостей без аутентификации, но это создавало проблемы для безопасности проекта, поэтому по умолчанию эта функция была отключена. В этом релизе неавторизованный доступ был помечен как устаревший. Сейчас для того, чтобы загрузить бейдж, необходимо сделать следующее:
- 
Выдать команде, ответственной за проект, право VIEW_BADGES;  Назначение права VIEW_BADGES 
- Создать API-ключ команды для запрашивания бейджа. Его можно использовать в заголовке X-API-Key или в параметре apiKey в URI; 
- Использовать ключ в HTML или в Markdown (примеры можно посмотреть здесь) 
Это можно объединить с контролем доступа к портфелю проектов, так что по ключу можно получить доступ к Badges подмножества проектов. Ссылка на полную документацию здесь.
Дополнительные изменения
Кроме описанных выше обновлений, в релиз Dependency-Track v4.12.0. были добавлены:
- Модернизация. Dependency‑Track переехал с Java 17 на Java 21, с Java EE на Jakarta EE 10, с Jetty 10 на Jetty 12. Про переход со Swagger v2 на OpenAPI v3 мы упомянули выше. 
- Если Dependency‑Track установлен в k8s и вы используете read‑only файловую систему, контейнер frontend не сможет запуститься после обновления. Подробнее: frontend/#940. 
- Новый способ обработки SBOM «BOM Processing V2», о котором мы писали в прошлой статье по v4.11, сейчас настроен по умолчанию и является единственной доступной опцией. 
- Добавлен новый тип нотификации BOM_VALIDATION_FAILED — теперь в случае ошибки валидации BOM отправляется уведомление с InvalidBomProblemDetails. 
- При создании проекта теперь можно сразу привязать его к команде: 

Подводя итог
За три недели после релиза Dependency‑Track v4.12.0 в GitHub проекта не появилось критических issue. К тому же вышла версия 4.12.1 с небольшими исправлениями, и мы рекомендуем вам переходить сразу на нее.
Мы считаем развитие в сторону менеджмента тегов интересным решением, а интерфейс работы с нарушенными политиками — логичным продолжением после такого же интерфейса в версии 4.11.
 
          