Как формируется проверка#
Чтобы найти уязвимости, сканеру нужны две вещи: состав ПО сборки (что в ней установлено) и база определений OVAL (какие версии пакетов уязвимы). Дальше он сверяет одно с другим по уровням критичности.
Откуда берётся состав ПО#
Состав ПО сканер ищет по цепочке, останавливаясь на первом успешном источнике:
Готовый файл состава ПО в формате CycloneDX внутри сборки.
Сборочный манифест приложения или среды.
Для установленного приложения, если ни того ни другого нет, состав формируется на месте средствами AFT.
Флаг --full-pull разрешает, при отсутствии готовых данных в удалённом
репозитории, выкачать сборку целиком и поискать состав в ней. Если состав
получить не удалось, сканер сообщает об этом технической ошибкой (код возврата
2). Подробнее про сам формат состава - в разделе Состав ПО (aft-sbom).
База определений OVAL#
База определений OVAL описывает, какие версии пакетов уязвимы. По умолчанию она
берётся из системного каталога (/usr/share/oval/db/astra/1.8_x86-64/) и
переопределяется флагом --oval-dir. Имена файлов определений должны
содержать уровень критичности: critical, high, medium или low.
Каталог по умолчанию задаётся и переменной окружения AFT_OVAL_DIR. Это
удобно, когда база лежит не на своём обычном месте: значение переменной
подставляется во все запуски, а флаг --oval-dir при необходимости
перекрывает её для конкретного запуска.
Саму базу определений поставляет пакет oval-definitions-astra. Без неё сканеру не с чем сверять состав ПО.
Уровни и фильтры#
--severity=<уровни>- какие уровни проверять (critical, high, medium, low). По умолчанию проверяются все четыре.--ignore-cve=<список>- исключить конкретные уязвимости.--ignore-package=<список>- исключить конкретные пакеты.
Флаги исключения можно повторять и перечислять значения через запятую. Исключённые элементы не попадают в подсчёт и в сводку, но фиксируются в отчёте отдельно - чтобы было видно, что именно отброшено.
Порог срабатывания#
Флаг --fail-on=<уровень> задаёт минимальный уровень, при котором сканер
завершается с кодом 1 (по умолчанию critical). Уязвимости ниже порога попадают в
отчёт, но не делают запуск неуспешным. Это позволяет встроить сканер в конвейер
сборки и блокировать только тот уровень, который для проекта критичен.