Прощайте CSV и XML Как теперь работать с базой уязвимостей CVE
Если вы занимаетесь информационной безопасностью или DevSecOps, то наверняка ваши инструменты и скрипты так или иначе работают с базой данных уязвимостей CVE. Многие годы мы полагались на старые-добрые форматы вроде CSV или XML. Но, как говорится, всё течет, всё меняется. С середины 2024 года эти форматы официально ушли на покой.
Знакомая ситуация? Ваш самописный парсер внезапно перестал получать обновления, и вы остались без свежих данных об уязвимостях. Без паники! Сегодня мы разберем новый официальный источник данных — GitHub-репозиторий CVEProject/cvelistV5 — и посмотрим, почему переход на него — это не боль, а шаг в светлое будущее.
Что такое cvelistV5 и зачем он нужен?
Проще говоря, cvelistV5 — это официальный репозиторий и единственный поддерживаемый способ для скачивания полного списка CVE. Вместо набора разрозненных файлов в разных форматах, теперь у нас есть единый источник правды в виде Git-репозитория с данными в современном формате CVE JSON 5.x.
Этот репозиторий — не просто свалка файлов. Он обновляется каждые 7 минут напрямую из официальных API программы CVE. Это значит, что у вас всегда под рукой самые актуальные данные.
Основная аудитория проекта — это:
- Разработчики инструментов безопасности, которым нужен надежный источник данных.
- DevSecOps-инженеры, автоматизирующие сканирование и анализ уязвимостей.
- Исследователи безопасности, анализирующие тренды в мире киберугроз.
Ключевые изменения: не просто новый формат
Переход на cvelistV5 — это не только смена формата с XML на JSON. Это качественное изменение в том, как мы получаем и используем данные об уязвимостях.
1. Единый и структурированный формат JSON 5
На смену неудобным и громоздким форматам пришел CVE JSON 5.x. Это структурированный, легко читаемый и, что самое главное, машиночитаемый формат. Он позволяет не просто парсить описание, а работать с четко определенными полями: версии ПО, ссылки, метрики CVSS и многое другое.
2. Обогащение данных через "контейнеры"
Одно из самых крутых нововведений — это концепция контейнеров. Представьте, что каждая CVE-запись — это папка, в которую разные организации могут добавлять свои файлы с дополнительной информацией.
Что это дает на практике? Теперь запись об уязвимости может содержать несколько блоков:
- CNA Container: Базовая информация от организации (CNA), которая изначально зарегистрировала уязвимость.
- CVE Program Container: Дополнительные данные и ссылки от самой программы CVE.
- ADP Containers: А вот это самое интересное. ADP (Authorized Data Publisher) — это доверенные партнеры, которые могут обогащать CVE-записи.
Яркий пример — CISA (Агентство по кибербезопасности и защите инфраструктуры США). Их контейнер CISA-ADP добавляет в записи критически важную информацию:
- KEV (Known Exploited Vulnerabilities): Флаг, который показывает, используется ли эта уязвимость в реальных атаках "в дикой природе". Это помогает моментально приоритизировать самые опасные дыры.
- SSVC (Stakeholder-Specific Vulnerability Categorization): Система оценки, помогающая понять, какие действия нужно предпринять (отследить, исправить, исправить немедленно).
- "Vulnrichment": Обогащение данных. Если CNA не добавила метрики CVSS, тип уязвимости (CWE) или информацию о продукте (CPE), CISA может сделать это за нее.
Раньше, чтобы собрать всю эту информацию, приходилось обходить несколько разных сайтов и баз данных. Теперь все это может быть в одной JSON-записи.
3. Git как основной способ получения обновлений
Забудьте про скачивание многогигабайтных архивов по расписанию. Теперь самый простой и эффективный способ поддерживать локальную копию базы в актуальном состоянии — это git.
Вы просто клонируете репозиторий один раз:
git clone git@github.com:CVEProject/cvelistV5.git
А затем для получения всех свежих изменений достаточно выполнить одну команду:
git pull
Это идеальный сценарий для автоматизации. Ваш CI/CD пайплайн или скрипт анализа может выполнять git pull перед каждым запуском, гарантируя, что вы работаете с самыми последними данными.
Как получить данные: два пути
Репозиторий предлагает два официальных способа загрузки данных, подходящих под разные задачи.
1. Для автоматизации и частых обновлений: git
Как уже упоминалось, это самый быстрый и удобный способ. Он идеально подходит для разработчиков и систем, где актуальность данных критична. git pull скачивает только изменения, что экономит трафик и время.
2. Для редких или ручных загрузок: Releases
Если вам не нужны ежеминутные обновления или на вашей машине нет git, можно использовать раздел Releases в репозитории.
- Ежедневные полные архивы: Каждый день в полночь по UTC формируется zip-архив со всеми CVE на текущий момент. Идеально, если вы обновляете свою базу раз в день или реже.
- Ежечасные дельта-архивы: Если нужна большая частота, можно скачивать часовые "дельты" — архивы с изменениями за последний час.
На что обратить внимание?
Проект активно развивается, и команда честно указывает на известные проблемы. Например, на момент написания статьи существовали некоторые расхождения в датах публикации для записей, опубликованных MITRE в определенный период. Это говорит о прозрачности проекта и о том, что над качеством данных постоянно работают.
Важно помнить, что этот репозиторий — это кэш. Он не принимает Pull Request'ы. Если вы нашли ошибку в самой CVE-записи, сообщать о ней нужно через официальные формы CVE Program.
Выводы: стоит ли переходить?
Однозначно, да. И чем скорее, тем лучше. Репозиторий cvelistV5 — это не просто "еще один" источник данных, а новый стандарт де-факто для работы с уязвимостями.
Кому особенно стоит обратить внимание:
- Всем, кто до сих пор парсит старые форматы (CSV, XML): Ваши скрипты уже не получают обновлений. Пора мигрировать.
- Разработчикам security-сканеров и анализаторов: Интеграция с cvelistV5 через git позволит вашему инструменту быть максимально точным и быстрым.
- DevSecOps-инженерам: Автоматизировать получение обогащенных данных (особенно KEV от CISA) — это огромный плюс для быстрой приоритизации исправлений.
Переход на cvelistV5 — это шаг от простого сбора данных к получению контекста. Знать, что уязвимость существует — это половина дела. Знать, что ее уже активно эксплуатируют — вот что действительно помогает принимать правильные решения.
