Dependency Track + отчёты 2.0: приоритизация уязвимых компонентов стала ещё быстрее

от автора

Всем привет. Не так давно я выпустил очередной релиз своего инструмента dt-report-generator и уже прошло достаточно времени после обзора возможностей первой версии (почитать можно тут), поэтому пришло время поделиться улучшениями и новыми фичами.

Кратко, что из себя представляем инструмент: dtrg (аббревиатура от Dependency Track Report Generator) дополнение к OWASP Dependency Track, которое формирует максимально информативный отчёт об уязвимых компонентах (да, DT не умеет из коробки в удобочитаемый экспорт).

Kandinsky 3.1. Промпт: Руководитель очень рад быстрой работе сотрудника, который моментально подготовил отчёт по уязвимостям проекта. Руководитель держит пачку денег и отчёт, рядом стоит счастливый сотрудник, прыгает от счастья.

Kandinsky 3.1. Промпт: Руководитель очень рад быстрой работе сотрудника, который моментально подготовил отчёт по уязвимостям проекта. Руководитель держит пачку денег и отчёт, рядом стоит счастливый сотрудник, прыгает от счастья.

dtrg можно развернуть как на своей машине (с использованием python как flask приложение), так и через docker (кстати, теперь образы каждой версии лежат и доступы в GitHub Container Registry).

Новые возможности и изменения (dtrg v.1.7.0)

  • Поиск проектов по названию в выпадающем меню. После передачи адреса DT и токена все проекты подгружаются в соответствующее поле выбора. Теперь нет необходимости искать uuid проекта в интерфейсе DT.

Интерфейс dtrg v.1.7.0

Интерфейс dtrg v.1.7.0
  • Построение дерева зависимостей (если в вашем sbom есть такая информация) с подсветкой уязвимых компонентов. На данный момент это текстовое (без особой визуализации) представление графа зависимостей до 3 уровня глубины.

Часть графа зависимостей проекта dvja

Часть графа зависимостей проекта dvja (https://github.com/appsecco/dvja)
  • Построение графика в Excel, который визуально даёт представление о количестве найденных уязвимых компонентов по уровням критичности, а также даёт понимание, сколько из них являются прямыми зависимостями проекта.

Общая информация о проекте в Excel отчёте

Общая информация о проекте в Excel отчёте
  • Использование инструмента as a Service. Теперь есть возможность перед запуском передать параметры URL и токена для обращения в DT. Пользователю останется лишь указать необходимый проект и получить результат выгрузки.

Интерфейс dtrg при заданных по умолчанию URL и token

Интерфейс dtrg при заданных по умолчанию URL и token
  • Приоритезация уязвимостей на основе обогащенных данных из открытых источников (подробное описание в отдельном разделе ниже).

Приоритезация уязвимостей

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

Реализация этой функциональности стала возможна благодаря подключению моего второго инструмента — CVE-PaaS (CVE Prioritizer as a Service). Это отдельный микросервис, который можно использовать как вместе с dtrg, так и отдельно в своих проектах (можно подключить к другим системам управления уязвимостями, CI/CD пайплайнам или даже использовать в собственных скриптах для аналитики).

При генерации отчета dt-report-generator отправляет список уязвимостей в CVE-PaaS. Тот, в свою очередь, обогащает каждую из них дополнительной информацией:

  • EPSS

  • Наличие Proof of concept (PoC) и Nuclei Template

  • Наличие в Known Exploited Vulnerabilities Catalog (KEV)

На основе этих данных рассчитывается приоритет уязвимости (в итоговом отчёте уязвимые компоненты будут отсортированы именно по приоритету, а не критичности уязвимости). Подробности об инструменте и расчёте приоритета описаны в репозитории CVE-PaaS.

Подробная информация об уязвимостях в Excel отчёте

Подробная информация об уязвимостях в Excel отчёте

Подключение реализовано через переменную окружения, указывающую на инструмент приоритезации:

export CVEPAAS_URL="http://evil.com"

Сразу отмечу, что сейчас это работает не сильно шустро( Ждём новый релиз от разработчика CVE-PaaS (от меня))).

Пример локальной песочницы

Инструкция для тех, кто хочет локально протестировать DT Report Generator в действии и посмотреть, как он работает в связке с Dependency Track.

1.Разворачиваем Dependency Track

Если у вас ещё не развернут DT — используйте официальный гайд (docker compose). Тут останавливаться подробно не будем — просто следуйте инструкции по ссылке, это займёт пару минут. Ваш DT скорее всего будет доступен по адресу http://localhost:8080.

2.Запускаем dt-report-generator

После запуска инструмент сразу не сможет достучаться до DT. Для этого нужно объединить их в одну сеть.

3.Узнаём имя сети DT

docker network ls

Вы увидите сеть с именем dependency-track_default (дефолтная сеть, которая создается docker compose для DT).

4.Подключаем dtrg к этой сети

docker network connect dependency-track_default dtrg

5.Узнаём IP-адрес DT (а именно apiserver, т.к. обращение идет именно к нему)

docker inspect dependency-track-apiserver

Найдите блок NetworkSettings > Networks > dependency-track_default > IPAddress (у меня, например, был адрес 172.18.0.3. Скорее и у вас будет похожая подсеть).

6.Всё. Используйте данный адрес в интерфейсе инструмента и будет вам счастье (не забудьте указать порт. По умолчанию в данном случае он 8080).

Планы развития

Как и в прошлый раз, делюсь планами на будущее. Публичное обещание — лучший стимул довести всё до ума.

  • Оптимизация производительности. Один из неприятных моментов — загрузка проектов при большом их количестве. Более 10к проектов (а именно столько у меня в боевых условиях) уже не в шутку тормозят интерфейс. В планах — вынести операцию на бэкенд, чтобы фронт больше не страдал.

  • Документация 2.0. Собираюсь серьёзно прокачать API спецификацию, добавить разбор частных случаев и кастомных настроек.

  • Управление графом зависимостей. Граф уже даёт необходимое представление о проекте и позволяет определить очередность анализа зависимостей, но хочется сделать его более наглядным и читаемым, добавить возможность фильтровать, подсвечивать маршруты и т.д.

  • Сравнение версий проекта. Хочется добавить возможность сравнивать отчёты по разным версиям одного и того же проекта. На выходе: какие уязвимости ушли, какие появились, что изменилось в компонентах.

Как всегда открыт к вашим предложениям и замечаниям!


ссылка на оригинал статьи https://habr.com/ru/articles/900276/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *