Пиков / КАПО
Как читать авторский курс и нормативные материалы

Это учебные материалы, а не заключение о соответствии конкретного продукта. Организационные модели курса отделяйте от терминов стандарта: ППК в опубликованном проекте — машиночитаемый перечень, а живой реестр его версий является практикой сопровождения. Термин OSA в разных материалах имеет разный охват. Статус и обязательность нормативного документа проверяются отдельно; проект КАПО опубликован как проект первой редакции.

П10. БДУ ФСТЭК как национальный источник

Контекст Западные сканеры (Grype, OSV-Scanner) опираются на NVD/OSV/GHSA. Для проектов под требования регулятора этого мало: национальный источник — Банк данных угроз ФСТЭК (bdu.fstec.ru). В БДУ бывают уязвимости, которых нет в NVD, и наоборот. Связать одно с другим помогает то, что записи БДУ обычно несут ссылку на соответствующий идентификатор CVE — это и есть CVE-мост: BDU:202X-XXXXX → CVE-XXXX-YYYYY → PURL компонента.

Цель

Построить вручную CVE-мост: для находки из VDR (PURL компонента + CVE) определить, есть ли соответствующая запись в БДУ ФСТЭК, и зафиксировать расхождение «есть в БДУ — нет в NVD» (или наоборот) как сигнал для триажа.

Проверяемый результат: таблица сопоставления PURL → CVE → идентификатор БДУ для нескольких находок, где явно отмечено, какие CVE имеют пару в БДУ, а какие — нет.

Команда или действие

БДУ ФСТЭК публикует экспорт уязвимостей (XLSX/XML) на сайте. Идея практики — сопоставить идентификаторы, источник данных при этом — официальный экспорт, а не сканер.

# 1. Из VDR достать пары "компонент -> CVE" (вход из П06/П08)
jq -r '.vulnerabilities[] | [.affects[0].ref, .id] | @tsv' vdr.cdx.json
# pkg:npm/semver@7.3.7    CVE-2022-25883
# pkg:npm/lodash@4.17.19  CVE-2021-23337

# 2. Экспорт БДУ заранее скачан с https://bdu.fstec.ru/ (файл vullist).
#    Привести к CSV (через LibreOffice/конвертер) и оставить колонки:
#    BDU_ID; CVE; Название; CVSS; Статус
#    Затем по каждому CVE из шага 1 искать запись в выгрузке:
grep -i "CVE-2022-25883" bdu_export.csv
# BDU:2023-05678;CVE-2022-25883;Уязвимость semver...;7.5;Подтверждена

# 3. Зафиксировать мост и расхождения в таблице сопоставления (вручную)

Итоговая таблица сопоставления:

PURL CVE БДУ ФСТЭК В NVD Комментарий
pkg:npm/semver@7.3.7 CVE-2022-25883 BDU:2023-05678 да мост есть, источники согласованы
pkg:npm/lodash@4.17.19 CVE-2021-23337 BDU:2021-04567 да мост есть
pkg:npm/<...> CVE-2024-XXXXX — да в NVD есть, в БДУ записи нет — отметить
pkg:npm/<...> — BDU:2024-0XXXX — в БДУ есть, CVE-пары нет — национальная находка

Регламент обновления, а не разовая выгрузка Экспорт БДУ — снимок на дату. Для проектов под регулятора обновление справочника оформляется регламентом (кто, как часто, откуда, как фиксирует дату). Разовый grep годится для учебного моста; в эксплуатации он заменяется управляемым обновлением — см. Порядок обновления БДУ.

Что вы должны увидеть

Шаг 1 — пары из VDR (факты сканера, идентификаторы CVE):

pkg:npm/semver@7.3.7    CVE-2022-25883
pkg:npm/lodash@4.17.19  CVE-2021-23337

Шаг 2 — найденная запись БДУ с её собственным идентификатором и привязкой к CVE:

BDU:2023-05678;CVE-2022-25883;Уязвимость библиотеки semver...;7.5;Подтверждена

Главный результат — не сами строки, а расхождения: хотя бы одна находка, где CVE есть в NVD, но пары в БДУ нет (или наоборот). Именно эти строки — пища для триажа: их нельзя молча закрыть.

Контрольный вопрос Сканер не нашёл CVE, а в БДУ ФСТЭК для этого компонента запись есть. Что это значит для VDR/VEX и почему «зелёный» Grype здесь не повод закрывать находку?

Если не получилось

Типичные ошибки - Сопоставление по названию пакета, а не по CVE. Имена в БДУ — на русском и неканоничны. Мост строится по идентификатору CVE (grep по CVE-...), а не по строке semver. - Кодировка выгрузки. Экспорт БДУ может быть в Windows-1251; grep/jq по UTF-8 ничего не находит. Перекодируйте (iconv -f cp1251 -t utf-8) перед поиском. - «В БДУ ничего нет» = всё чисто. Опасный вывод. Отсутствие в одном источнике не отменяет находку в другом — фиксируйте обе стороны расхождения. - Старый снимок БДУ. Выгрузка месячной давности пропустит свежие записи. Дата экспорта — обязательная часть evidence.

Критерий зачёта

Показать преподавателю: 1. пары PURL → CVE, извлечённые из VDR; 2. заполненную таблицу сопоставления PURL → CVE → БДУ, с датой выгрузки БДУ; 3. минимум одну строку-расхождение (есть в БДУ — нет в NVD или наоборот) с пояснением, что с ней делать; 4. устно: зачем национальный источник нужен поверх NVD/OSV на проектах под регулятора.

Нормативная связка

М06. Поиск уязвимостей и управление VDR/VEX · БДУ ФСТЭК · NVD · CVE · OSV.dev · Порядок обновления БДУ · Политика управления уязвимостями компонентов

Смежные практики: П06. Grype поверх готового SBOM · П09. VDR и VEX различие факта и решения · П35. VEX triage