Всем привет! Сегодня хочу рассказать вам про свой инструмент, который помогает автоматически выгружать отчёты из OWASP Dependency Track. Этот инструмент я разработал с целью упростить процесс работы с отчётами и сделать его доступным даже для тех, кто ранее мог испытывать трудности с анализом данных напрямую из Dependency Track.
Почему нужен инструмент для выгрузки отчётов?
OWASP Dependency Track — мощный инструмент композиционного анализа, который позволяет отслеживать зависимости проекта и выявлять уязвимые из них. Однако штатных средств для выгрузки данных в нем нет. Пользователи либо работают через веб-интерфейс, либо прибегают к помощи сторонних решений класса ASOC (Application Security Orchestration and Correlation) / ASPM (Application Security Posture Management) / VM (Vulnerability Management).

Но что делать, если вам нужно просто и быстро экспортировать данные для анализа или для передачи руководству в удобном формате? Например:
-
Подготовить таблицу с результатами сканирования для аудита.
-
Собрать отчёт для compliance.
-
Быстро проанализировать результаты разового сканирования внутреннего проекта.
Вот здесь и приходит на помощь dt-report-generator.
Функциональные возможности и сценарии использования
dt-report-generator предоставляет простой и интуитивно понятный веб-интерфейс. Вы заполняете несколько параметров через форму и мгновенно получаете отчёт в одном из поддерживаемых форматов.
Основные возможности:
-
Поддержка форматов: выгрузка отчётов доступна в формате .docx (для текстовых отчётов) и .xlsx (для табличных данных).
-
Совместимость: инструмент работает с версиями OWASP Dependency Track начиная с v4.10.0. Не исключено, что и с предыдущими версиями будет отлично работать (если не было изменений в API), но не тестировал - не пишу.
-
Гибкость в развертывании: вы можете развернуть dt-report-generator как локальный сервис или установить его в инфраструктуре вашей организации. Это особенно полезно для компаний, которые часто проводят разовые сканирования.
Когда это полезно:
-
Если у вашей команды нет дополнительных инструментов менеджмента уязвимостей, либо их использование нецелесообразно. Например, лицензии таких решений могут быть дорогими, а для разового сканирования внутреннего проекта достаточно простого и бесплатного инструмента.
-
Когда требуется автоматизация процесса генерации отчётов для аудитов, compliance или других проверок.
Пошаговое руководство по использованию
Давайте на примере разберем кейс использования "от и до":
-
Вы с утра завариваете себе кофе, листаете хабр и натыкаетесь на данную статью. С диким интересом читаете статью до самого конца, допиваете кофе и бежите в комнату. Открываете ноутбук (предположим, что у вас настроенная экосистема устройств), в браузере уже открыта статья. Первым дело вы отправляете ссылку на статью друзьям, а далее переходите к пилоту инструмента, клацая по ссылке. Изучив содержание репозитория и файл README, вы приступаете к делу.
-
Открыв терминал, клонируем репозиторий
git clone <https://github.com/denimoll/dt-report-generator.git>
-
С использованием Docker (инструкция по установке) разворачиваем сервис
docker build -t dt-report:v1 . # собираем образ контейнера
docker run -d -p 5000:5000 dt-report:v1 # запускаем контейнер
-
В браузере переходим по адресу localhost:5000 и видим сие чудо

-
Для получение отчёта заполняем форму и жмём "Get report"
-
URL - адрес вашего Dependency Track. Например, https://dependencytrack.org.
-
Token - API ключ (инструкция по получению)
-
Project - ID проекта (параметр Object Identifier в Project Details или идентификатор из URL после
...
) -
Severities - интересующие уровни критичности
-
Report type - формат отчёта
-
Под капотом выполняется обращение к ручкам:
-
<id>
# информация о проекте v1 -
<id>
# используемые компоненты v1 project/ -
<id>
# уязвимости в компонентах v1 project/
На выходе получаем примерно следующее:
docx-документ:


excel-документ:



-
Подзабыли о сервисе, ребутнули машину, хочется ещё. Не беда, просто запускаем существующий контейнер и побежали на localhost:5000 снова.
docker start <container id или name> # запускает конейнер
Перспективы развития
Инструмент был выпущен совсем недавно и уже доступен для использования. Я открыт к вашим предложениям, идеям по улучшению и, конечно, сообщениям об ошибках.
На ближайшее будущее у меня есть несколько идей, как сделать dt-report-generator ещё лучше:
-
Форматы отчётов. Добавить новые форматы и/или скорректировать существующие.
-
Поиск проектов. Упростить поиск проектов через предоставленную ссылку и токен.
-
Дашборды с обзорной информацией. Визуализировать данные в виде различных графиков для наглядного анализа.
-
Приоритезация уязвимостей. Реализовать логику, которая поможет оценить, какие уязвимости требуют первоочередного исправления (идея уже в процессе разработки, и я надеюсь скоро представить её).
-
Безопасность. Прикрутить Dependabot’а, добавить SAST проверки.
-
Релизная политика. Сформировать правила выпуска релизов и публиковать сразу Docker-образы.
Если инструмент найдет себе место в узком кругу пользователей, то буду дополнять информацию по часто задаваемым вопросам на GitHub (например, как решать распространенные проблемы при установке или использовании).
Спасибо за внимание и приятной работы с инструментом!
Автор: denimoll