cve-manager - консольная программа, предназначенная 1) для формирования базы
данных уязвимостей (БДУ) программ, входящих в состав заданных репозиториев
rpm-пакетов, а также 2) для осуществления анализа записей сформированной БДУ и
подготовки отчётов на основе результатов этого анализа (в том числе с
осуществлением рассылки по электронной почте).

Основными входными данными программы являются 1) списки, содержащие названия и
версии исходных и бинарных пакетов рассматриваемых репозиториев (в случае, когда
осуществляется анализ пакетов локальной системы, данные, содержащиеся в таких
списках, собираются автоматически путём обращения к программе rpm локальной
системы), 2) метаданные rpm-пакетов, хранящихся в репозиториях, или rpm-пакетов,
установленных в локальной системе, а также 3) списки известных уязвимостей. На
данный момент поддерживается два источника списков известных уязвимостей - NVD
(National Vulnerability Database) и ФСТЭК (Федеральная служба по техническому и
экспортному контролю).

Программа имеет модульную структуру, написана на Python и C++, использует MySQL.
Распространяется по лицензии GPLv3.0.

===============================================================================
Содержание

    1 Структура программы
    2 Установка
    3 Настройка
        3.1 Настройка серверной части
        3.2 Настройка клиентской части
        3.3 Внутренние знания cve-manager
    4 Использование
        4.1 Формат списка пакетов исследуемого репозитория
        4.2 Требование к наличию RPM-пакетов
        4.3 Подготовка базы данных уязвимостей
        4.4 Мониторинг уязвимостей пакетов
    5 Разворачивание инфраструктуры базы данных уязвимостей
    6 Ссылки

===============================================================================
1 Структура программы

cve-manager состоит из следующих модулей:

    cve-manager - предоставляет пользовательский интерфейс для запуска процесса
формирования БДУ и осуществляет организацию и контроль данного процесса путём
последовательного запуска остальных модулей в установленном порядке в
автоматическом режиме;
    cve-backup - осуществляет резервное копирование/восстановление ранее
сформированной БДУ;
    cve-history - осуществляет выборку незакрытых уязвимостей по текущему
состоянию БДУ и сохраняет их в отдельной таблице с целью обеспечения возможности
сравнения будущего состояния БДУ с этим сохранённым состоянием;
    cve-download - осуществляет загрузку списков уязвимостей, предоставляемых
NVD и ФСТЭК, а также загрузку CPE словаря, ACL пакетов исследуемых репозиториев,
файлов с хронологией сборок каждого пакета, а также загрузку списков пакетов
дистрибутивов;
    cve-import - осуществляет 1) чтение списков RPM-пакетов указанных
репозиториев, или формирование списка установленных пакетов локальной системы
(далее в предложении - "пакетов", из репозиториев или локальной системы),
2) чтение ACL пакетов, 3) чтение файлов с хронологией сборок пакетов, 4) чтение
загруженных списков уязвимостей и CPE словаря, 5) извлечение URL и
идентификаторов исправленных уязвимостей из метаданных пакетов, 6) внесение
собранных таким образом данных в БДУ;
    cpe-map - осуществляет установление соответствия импортированных в БД
названий исходных пакетов рассматриваемых репозиториев и 1) названий программных
продуктов из импортированного в БД CPE словаря, а также 2) названий программных
продуктов из импортированного в БД списка уязвимостей ФСТЭК;
    cve-issues - осуществляет установление соответствия между данными,
внесёнными в БД с помощью модулей cve-import и cpe-map, а именно - формирует
записи в БД вида <идентификатор уязвимости>, <идентификатор пакета>,
<уязвимая версия программного продукта>, <статус уязвимости>, где
<статус уязвимости> - значение из следующего набора (или комбинация данных
значений):
        c (от "changelog") - устранение данной уязвимости обозначено в
changelog-секции пакета;
        e (от "excluded") - отсутствие данной уязвимости обозначено в файле
/etc/cve-manager/cpe-excluded.csv (поставляется пакетом
cve-manager-inner-knowledge);
        b (от "bigger ver") - версия пакета в репозитории больше данной уязвимой
версии;
        L (от "lesser ver") - версия пакета в репозитории меньше данной уязвимой
версии;
        V (от "vulnerable") - версия пакета в репозитори совпадает с уязвимой
версией программного продукта и устранение данной уязвимости не зафиксировано;
        ? - сравнение текущей версии пакета и указанной уязвимой версии
программного продукта не удалось осуществить.
    cve-monitor - предназначен для посылки запросов выборки из таблиц БДУ и
выдачи результатов (отчётов), например формирование списка всех пакетов с
имеющимися незакрытыми уязвимостями или списка всех закрытых уязвимостей одной
ветви, которые не закрыты в другой; Формируемые отчёты могут рассылаться на
задаваемые адреса электронной почты; На данный момент (версия 0.28) отчёты
предоставляются в собственном формате (см. подраздел "Мониторинг уязвимостей
пакетов"), в перспективе возможность их получения в формате XML и JSON.

Все модули кроме cve-import написаны на Python, cve-import написан на C++.

===============================================================================
2 Установка

cve-manager собран в репозиторий Sisyphus.

Установка полной версии (серверная и клиентская часть):

    apt-get install cve-manager

Установка только клиентской части:

    apt-get install cve-monitor

===============================================================================
3 Настройка

3.1 Настройка серверной части

Параметры cve-manager определяются файлом ini-формата
/etc/cve-manager/cve-manager.conf. Данный ini-файл включает следующие
обязательные секции:

    db_connection, в которой указываются параметры соединения с базой данных
MySQL (host, user, password, database);
    common, в которой указывается путь к каталогу, в который cve-download
загружает входные данные и откуда cve-import их импортирует в БД (download),
название основной ветви, значения времени сборки пакетов которой будут
учитываться при определении соответствия имён исходных пакетов и имён уязвимых
программных продуктов (master_branch), путь к корневому каталогу alt-сервера
(basealt), а также источники списков уязвимостей, исключаемые из рассмотрения
(excluded_vulsrc с возможными значениями nvd и fstec), при этом первые два
параметра являются обязательными.

Прочие секции файла настройки воспринимаются как названия ветвей Sisyphus,
информация об уязвимостях которых должна быть помещена в БДУ. Каждая из таких
секций может включать определение следующих параметров:

    base_dir - название основного каталога данного репозитория;
    bin_list - путь к списку бинарных пакетов (bin.list) данного репозитория;
    srpms_dir - путь к каталогу с исходными пакетами (SRPMS) данного
репозитория;
    rpms_dirs - пути к каталогам с бинарными пакетами (RPMS) данного
репозитория.

По-умолчанию значения перечисленных параметров соответствуют структуре каталогов
alt-сервера. ВНИМАНИЕ - названия секций должны состоять только из латинских
символов и цифр. В случае, если название репозитория включает прочие символы,
следует воспользоваться переменной base_dir (см. пример, секция x81).

Для анализа локальной системы в файл настройки следует добавить секцию с особым
названием - local_sys. При этом название репозитория, который используется
локальной системой, задаётся параметром branch (значение данного параметра
по-умолчанию соответствует значению параметра master_branch секции common).

Пример файла настройки:

    [db_connection]
    host     = "localhost:3306"
    user     = some_username
    password = some_password
    database = some_dbname

    [common]
    basealt = /space/
    download = ~/.cve-manager/
    excluded_vulsrc = fstec
    master_branch = Sisyphus

    [Sisyphus]

    [p8]

    [local_sys]
    branch = p8

    [x81]
    base_dir = /space/ALT/x8.1/

    [some_branch]
    bin_list = "/some_branch/lists/bin.list"
    srpms_dir = "/some_branch/SRPMS/"
    rpms_dirs = "/some_branch/x86_64/RPMS/", "/some_branch/noarch/RPMS/"

Файл настройки принадлежит пользователю root, относится к группе cve и имеет
режим rw-rw----. Также группе cve принадлежат все модули, кроме модуля
cve-monitor. Таким образом вносить изменения в БДУ помимо пользователя root
могут только члены группы cve. Добавить пользователя в группу cve можно с
помощью следующей команды:

    usermod -a -G cve <user-name>

3.2 Настройка клиентской части

cve-monitor имеет свой файл настройки /etc/cve-manager/cve-monitor.conf,
позволяющий пользователям, не являющимся членами группы cve, осуществлять
соединение с БДУ с правом только на чтение (SQL-запрос SELECT) - структура
данного файла повторяет структуру файла cve-manager.conf (см. подраздел
"Настройка серверной части"), при этом секция common, а также параметры ветвей
ни на что не влияют, за исключением дополнительного параметра ветвей seniors,
в котором перечисляются старшие ветви по отношению к данной, и которые будут
использованы при формировании предложений по устранению существующих в данной
ветви уязвимостей (при передаче флага --cure модулю cve-monitor), например:

    [p9]
    seniors = Sisyphus

    [p8]
    seniors = ${p9:seniors}, p9

Для настройки почтовой рассылки cve-monitor существует другой конфигурационной
файл - /etc/cve-manager/cve-mail.conf, содержащий настройки соединения с
почтовым сервером и списки адресатов, которые задаются группами в секции
recipients; При запуске cve-monitor с флагом --mail следует передать название
группы адресатов в качестве значения параметра --title; Так, например, пусть
файл настройки почтовой рассылки имеет следующее содержимое

    [smtp_connection]
    host = some_host.com
    port = 25
    user = some_mail_account
    password = password_of_the_mail_account
    raddress = some_mail_account@some_host.com

    [recipients]
    weekly = "some_email1@altlinux.org", "some_email2@basealt.ru"
    daily  = "some_email3@altlinux.org", "some_email4@basealt.ru"
    some_other_group_of_recipients = "some_other_email@some_other_host.com"

Тогда, например, для того чтобы результаты команды
cve-monitor --show issues unfixed --group
после формирования были отправлены группе адресатов daily, следует исполнить
следующую команду:

    cve-monitor --show issues unfixed --group --mail --title daily

3.3 Внутренние знания cve-manager

Пакет cve-manager-inner-knowledge содержит ряд файлов с данными, которые могут
быть отредактированы пользователем с целью оказания влияния на процесс
формирования БДУ:

    cpe-excluded.csv (/etc/cve-manager/cpe-excluded.csv) - определяет CPE,
исключённые из рассмотрения;
    cpe-mapping.csv (/etc/cve-manager/cpe-mapping.csv) - предопределяет
соответствие имён на начальном этапе работы модуля cpe-map;
    cpe-mapping-ignore.csv (/etc/cve-manager/cpe-mapping-ignore.csv) -
определяет пары имён, которые исключаются из результатов работы модуля cpe-map;
    cpe-relatives.txt (/etc/cve-manager/cpe-relatives.txt) - предопределяет
набор родственных CPE (если какое-то название продукта из набора родственных CPE
было поставлено в соответствие какому-то названию пакета, то каждое название
продукта из всех прочих CPE данного набора будет на равных правах поставлено
в соответствие данному названию пакета в случае, если данное название продукта
не было поставлено в соответствие какому-то другому названию пакета);
    excluded-issues.csv (/etc/cve-manager/excluded-issues.csv) - определяет
уязвимости, которые не следует считать незакрытыми для указанного пакета
указанного репозитория начиная с указанной версии пакета (используется модулем
cve-issues);
    groups.csv (/etc/cve-manager/groups.csv) - определяет группы, в которые,
в соответствии с заданными в этом файле условиями, в ходе работы программы будут
включены пакеты и программные продукты из списков уязвимостей (названию пакета
одной группы не может быть поставлено в соответствие название программного
продукта другой группы).

Каждая строка файла cpe-excluded.csv должна быть записана в следующем формате
(здесь и далее под вендором и названием программного продукта подразумеваются
соответствующие составляющие CPE - обозначений программного обеспечения,
которые используются NVD, а само словосочетание "программный продукт"
представлено сокращённой записью "пп"):

    <вендор пп>, <названия пп через пробел>

При этом в качестве названия программного продукта может быть помещён символ
"*", означающий "все названия продуктов данного вендора", а также могут быть
помещены названия программных продуктов с префиксом "!", означающим "все
названия продуктов данного вендора, за исключением данного названия":

    <вендор пп1>, *
    <вендор пп2>, !<название пп21> !<название пп22> !<название пп23>

Каждая строка файлов cpe-mapping.csv и cpe-mapping-ignore.csv должна быть
записана в следующем формате:

    <название пакета>, <названия пп через пробел>

Каждая строка файла cpe-relatives.txt представляет собой последовательность CPE,
разделённых пробелами, каждое CPE при этом записывается в следующем формате:

    <вендор пп>:<название пп>

Каждая строка файла excluded-issues.csv должна быть записана в следующем
формате:

    <ветвь Sisyphus, 'all' если все ветви>, <id уязвимости>, <название пакета>,
<версия пакета>

Каждая строка файла groups.csv должна быть записана в следующем формате (каждый
столбец, описанный существительным во множественном числе, допускает внесения
последовательности слов, разделённых пробелами):

    <условное название группы>, <префиксы пакетов>, <вендоры пп>,
<префиксы названий пп>, <суффиксы названий пп>, <url адреса пакетов и пп>

Для того чтобы изменения списка cpe-excluded.csv вступили в действие, следует
запустить формирование БДУ начиная с шага импорта данных:

    cve-manager -b import

В остальных случаях, для того чтобы обозначенные настройки установления
соответствия имён вступили в действие, следует заново запустить модуль cpe-map
для соответствующих ветвей (cpe-map -b [<branch_name> ...]), или для всех ветвей
(cpe-map -e); При этом следует заново запустить модуль cve-issues для данных
ветвей (cve-issues -b [<branch_name> ...]), или для всех ветвей
(cve-issues -b all); В случае, если допустима обработка всех ветвей, запуск
модулей cpe-map и cve-issues можно осуществить путём запуска автоматического
формирования БДУ начиная с шага установления соответствия имён:

    cve-manager -b map

===============================================================================
4 Использование

4.1 Формат списка пакетов исследуемого репозитория (не относится к анализу
локальной системы)

Список пакетов исследуемого репозитория может быть задан в одном из двух
форматов. Первый формат соответствует формату списков бинарных пакетов ALT Linux
(alt:/ALT/<branch>/files/list/bin.list), а второй формат исключает всю ненужную
информацию

    Формат 1

        <bin_package_short_name> <*> <*> <*> <src_package_full_name>

        Пример:

        libcve-manager 0.33.1-alt1 x86_64 libcve-manager-0.33.1-alt1.x86_64.rpm
cve-manager-0.33.1-alt1.src.rpm

    Формат 2

        <bin_package_short_name> <src_package_full_name>

        Пример:

        libcve-manager cve-manager-0.33.1-alt1

    <*> - любая комбинация символов, не включающая пробелы;
    <bin_package_short_name> - название бинарного пакета без версии и релиза;
    <src_package_full_name> - полное название исходного пакета, включающее
версию и релиз (наличие расширения 'src.rpm' не обязательно).

4.2 Требование к наличию RPM-пакетов (не относится к анализу локальной системы)

Для выполнения импорта необходимых данных в БДУ для каждого набора наименований
RPM-пакетов {src_i, {bin_i0, .. , bin_ij}} (где src_i - название исходного
пакета; {bin_i0, .., bin_ij} - названия бинарных пакетов, собранных из src_i)
пользователь должен предоставить либо а) исходный пакет, соответствующий src_i,
либо б) один из бинарных пакетов, соответствующих {bin_i0, .., bin_ij}; Пути к
каталогам, в которых были помещены данные пакеты, должны быть заданы в файле
настроек /etc/cve-manager/cve-manager.conf в качестве значений параметров
srpms_dir и rpms_dirs соответственно, при этом, бинарные пакеты могут быть
расположены в нескольких каталогах, которые в таком случае должны быть
перечислены через запятую как это показано в примере файла настройки (см.
подраздел "Настройка серверной части").

4.3 Подготовка базы данных уязвимостей

Запуск процесса формирования БДУ:

cve-manager [-h] [-a] [-b MODULE_NAME] [-e MODULE_NAME] [-r N_REPEATED_ATTEMPTS]
    [-o] [-l] [--plain] [--silent]

    -h, --help - Вывод справки;
    -a, --run_all - Выполнить все шаги формирования БДУ;
    -b MODULE_NAME, --beginning_step MODULE_NAME - Начальный шаг запускаемого
процесса формирования БДУ (название модуля без приставки cve- / cpe-);
    -e MODULE_NAME, --ending_step MODULE_NAME - Конечный шаг запускаемого
процесса формирования БДУ (название модуля без приставки cve- / cpe-);
    -r N_REPEATED_ATTEMPTS, --retry N_REPEATED_ATTEMPTS - Количество попыток
перезапуска последнего выполняемого модуля в случае его неуспешного выполнения;
    -o, --offline - Не запускать модуль cve-download в процессе формирования
БДУ;
    -l, --list_modules - Вывод списка доступных модулей (вместе с их
описаниями);
    --plain - Упрощенный вывод (следует использовать, например, при
перенаправлении вывода в файл);
    --silent - Запрет вывода.

Пример команды запуска формирования БДУ, при котором автоматически, в
установленном порядке, один за другим будут запущены все прочие модули:

    cve-manager -a --plain 2>&1 1>$HOME/cve-manager.log

В случае первого запуска cve-manager, когда БДУ не была ранее сформирована,
в качестве начального шага следует указывать шаг загрузки входных данных,
при этом не будет осуществлён запуск модулей, работа которых имеет смысл только
при наличии сформированной БДУ (создание файла с копией текущего состояния
БДУ и сохранение текущих незакрытых уязвимостей в специальной таблице БДУ):

    cve-manager -b download --plain 2>&1 1>$HOME/cve-manager.log

Каждый модуль пакета cve-manager является самостоятельной программой и может
быть запущен напрямую, например:

    cve-download --everything
    cve-import --everything

Вывод справочной информации модуля:

    <module-name> --help

4.4 Мониторинг уязвимостей пакетов

Запуск модуля cve-monitor:

cve-monitor [-h] [--show WHAT_YOU_WANT_TO_SEE] [-f FIX_STATUS]
    [-t ISSUES_TYPE] [-o ORDER_BY] [-b BRANCH_NAME [BRANCH_NAME ...]]
    [-p PACKAGE_NAME [PACKAGE_NAME ...]] [--distro_list_src DISTRO_NAME]
    [--distro_list_bin DISTRO_NAME] [-y YEAR [YEAR ...]]
    [-v VUL_ID [VUL_ID ...]] [--group] [--cure] [--patch] [-w] [-m]
    [--title NAME] [--unite]

    -h, --help - Вывод справки;
    --show WHAT_YOU_WANT_TO_SEE - Вывод списка уязвимостей (issues, является
значением по-умолчанию), или вывод новых незакрытых уязвимостей (history), или
вывод сравнительного списка по уязвимостям указанных ветвей Sisyphus (comp,
требует задания значения параметра --branches, при этом первая указанная ветвь
сравнивается с последующими), или вывод полных описаний уязвимостей (vul_desc),
или вывод установленного соответствия между названиями пакетов и названиями,
используемыми в описаниях уязвимостей (map), или вывод примеров использования
(ex);
    -f FIX_STATUS, --fix_status FIX_STATUS - Фильтрация результатов по состоянию
уязвимостей (fixed / unfixed / all);
    -t ISSUES_TYPE, --itype ISSUES_TYPE - Фильтрация результатов по типу
источника записей об уязвимостях (nvd / fstec);
    -o ORDER_BY, --order ORDER_BY - Осуществление упорядочения результатов по
идентификаторам уязвимостей (id), иманам пакетов (package), оценке CVSS ver.2
(score2), оценке CVSS ver.3 (score3), или текущему состоянию уязвимости (fix);
    -b BRANCH_NAME [BRANCH_NAME ...], --branches BRANCH_NAME [BRANCH_NAME ...] -
Фильтрация результатов по названиям репозиториев;
    -p PACKAGE_NAME [PACKAGE_NAME ...],
--packages PACKAGE_NAME [PACKAGE_NAME ...] - Фильтрация результатов по названиям
указанных исходных пакетов;
    --distro_list_src DISTRO_NAME - Фильтрация результатов по названиям исходных
пакетов, перечисленных в списке пакетов указанного дистрибутива (поиск файла со
списком пакетов дистрибутива осуществляется сначала в каталоге, имеющем
название, которое совпадает с названием указанного репозитория -
<download>/distro_lists_src/<branch>, после чего - в каталоге на уровень выше -
<download>/distro_lists_src);
    --distro_list_bin DISTRO_NAME - Фильтрация результатов по названиям бинарных
пакетов, перечисленных в списке пакетов указанного дистрибутива (окончание
".bnames" в названии файла со списком пакетов дистрибутива может быть отброшено,
поиск данного файла при этом осуществляется сначала по указанному названию
дистрибутива в каталоге, имеющем название, совпадающее с названием указанного
репозитория - <download>/distro_lists_bin/<branch>, после чего - в каталоге на
уровень выше - <download>/distro_lists_bin, после чего - в том же порядке и
в тех же каталогах, но уже с подставленным окончанием ".bnames" в название
дистрибутива);
    -y YEAR [YEAR ...], --years YEAR [YEAR ...] - Фильтрация результатов по
датам уязвимостей;
    -v VUL_ID [VUL_ID ...], --vul_ids VUL_ID [VUL_ID ...] - Фильтрация
результатов по идентификаторами уязвимостей;
    --group - Осуществление группировки результатов по именнам пакетов (работает
только при запуске с параметром -f unfixed);
    --cure - Дополнение отчёта колонкой с названиями ветвей Sisyphus более
высокого порядка (например, p9 для p8), в которых данная уязвимость не
наблюдается;
    --patch - Список ссылок на патчи, предположительно закрывающие данную
уязвимость (ссылки извлекаются из входных списков уязвимостей);
    -w, --write_files - Запись сформированных отчётов в файл
<out_dir>/<title>_<branch>:<distro>_<YYYY-MM-DD>_<hh:mm:ss>, гдe <out_dir> -
абсолютный путь, указанный в качестве параметра out_dir в файле настройки
cve-monitor, <title> - название отчёта (см. --title), <branch> и <distro> -
репозиторий и дистрибутив (опционально) для которых сформирован отчёт,
<YYYY-MM-DD> и <hh:mm:ss> - дата и время в соответствующем формате;
    -m, --mail - Осуществление почтовой рассылки с результатом выполняемого
запроса на адреса, которые указаны в соответствующем конфигурационном файле
(см. Настройка клиентской части) и которые соответствуют заданной цели
(см. --title);
    --title NAME - Название отчёта, каждому названию может быть поставлена в
соответствие какая-то группа адресатов почтовой рассылки;
    --unite - Объединение отчётов по рассматриваемым ветвям (репозиториям) в
единственный отчёт при осуществлении почтовой рассылки (см. -m) или записи в
файл (см. -w).

Примеры команд и значения полей формируемых отчётов:

    cve-monitor --show issues -f unfixed -b Sisyphus p9 --group --cure -m -w
--title <some_group_of_recipients>
    - запрос всех неисправленных уязвимостей ветвей Sisyphus и p9 с группировкой
записей по именам пакетов, с предложениями по устранению и отправкой отчётов по
электронной почте группе адресатов <some_group_of_recipients> и записью отчётов
в файлы внутри каталога, указанного в качестве значения параметра out_dir в
файле настройки cve-monitor;
    cve-monitor --show issues -f unfixed -b Sisyphus p9 --order package --cure
--patch -m --title <some_group_of_recipients>
    - запрос детального отчёта (без группировки по именам пакетов -- каждая
строка отводится отдельной уязвимости, наличие которой установлено для
отдельного пакета), записи которого упорядочены по именам пакетов, с
предложениями по устранению и ссылками на страницы, которые могут содержать
патчи для устранения соответствующих уязвимостей, также с отправкой по
электронной почте;
    cve-monitor --show history -b p9
    - запрос списка новых уязвимостей пакетов ветви p9, обнаруженных с момента
последнего запуска модуля cve-history.

    PACKAGE NAME-VER-REL - Название пакета, его версия и релиз;
    MAPPED NAME - Название программного продукта, поставленное в соответствие
названию данного пакета;
    VULNERABLE VER - Указанные уязвимые версии, или интервалы версий (наличие
версии, обозначенной символом *, означает, что набор уязвимых версий точно не
установлен);
    QTY - Количество уязвимостей, наличие которых установлено для данного
пакета;
    CVSS2/3 - Оценка данной уязвимости по метрике CVSS ver.2 и CVSS ver.3;
    MAX CVSS2/3 - Максимальная оценка по метрике CVSS ver.2 и CVSS ver.3 из всех
оценок уязвимостей данного пакета;
    ACL - Cписок пользователей и групп пользователей, имеющих право на сборку
данного пакета в данный репозиторий с помощью git.alt;
    FIX - Состояние данной уязвимости ([NO FIX] - не закрыта, changelog -
о закрытии говорит запись в chagelog пакета, excluded - об отсутствии данной
уязвимости говорит запись в файле /etc/cve-manager/cpe-excluded.csv,
bigger ver / [lesser ver] - версия пакета больше / меньше указанных уязвимых
версий, unresolved - сравнение версий не удалось осуществить);
    CURE - Ветви Sisyphus, в которых данный пакет не имеет всех или части
(указывается особо) уязвимостей, наличие которых установлено для данного пакета;
    PATCH - Ссылки на страницы, которые могут содержать патчи для устранения
соответствующей уязвимостей.

===============================================================================

5 Разворачивание инфраструктуры базы данных уязвимостей

Для работы cve-manager нет необходимости устанавливать MySQL сервер и создавать
БДУ в своём окружении - в настройках cve-manager может быть указан адрес
удалённого сервера. Тем не менее, это можно сделать, выполнив следующие шаги:

    1) Установить MySQL сервер:

        apt-get install MySQL-server
        Также можно воспользоваться альтернативой (все остальные пункты данного
руководства при этом остаются в силе):
        apt-get install mariadb-server

    2) Внести изменения в файл настройки MySQL сервера /etc/my.cnf.d/server.cnf:

        #skip-networking
        bind-address = 127.0.0.1

    3) Перезапустить MySQL сервер и запустить MySQL консоль:

        su -l -c 'service mysqld restart'
        mysql -u root

    4) Задать пароль пользователя MySQL с именем root:

        mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root-passwd');
        , где root-passwd - задаваемый пароль пользователя root;

    5) Добавить пользователя MySQL, от имени которого будет осуществляться
формирование БД (на примере MySQL-server версии 8.*, здесь и далее):

        mysql> CREATE USER 'user-name'@'localhost' IDENTIFIED WITH
mysql_native_password BY 'user-passwd';
        mysql> GRANT ALL ON *.* TO 'user-name'@'localhost';
        , где user-name - имя пользователя, user-passwd - пароль пользователя;

    6) Добавить пользователя MySQL, от имени которого будут осуществляться
запросы на чтение записей БД (мониторинг):

        mysql> CREATE USER 'monitor'@'localhost' IDENTIFIED WITH
mysql_native_password BY 'monitor';
        mysql> GRANT SELECT ON *.* TO 'monitor'@'localhost';

===============================================================================
6 Ссылки

Проект на git.altlinux.org -
http://git.altlinux.org/people/alexey/packages/?p=cve-manager.git

cve-manager-inner-knowledge -
http://git.altlinux.org/gears/c/cve-manager-inner-knowledge.git

===============================================================================

https://www.altlinux.org/CVE-Manager

Copyright (C) 2017-2022 Alexey Appolonov
