Руководства по безопасности

Автоматизация мониторинга уязвимостей для вашего стека: сопоставление по компонентам, которые вы действительно используете

Отслеживайте только то, что касается вас: SBOM из lock-файлов и пакетов ОС, KEV и EPSS для приоритета, ИИ лишь повышает срочность.

Опубликовано 2026-11-01 Обновлено 2026-11-01 Последняя проверка 2026-11-01 7 мин чтения
На этой странице

Для тех, кто управляет собственными сайтами или сервисами и хочет получать информацию об уязвимостях без постоянного просмотра лент. Эта статья рассказывает о том, что собирать, с чем сопоставлять и насколько можно доверять ИИ.

Что произошло: человек узнал первым, три раза подряд

За одну неделю на сайтах, которыми управляет оператор этого сайта, произошли три события. Во всех случаях оператор узнал о них первым, через социальные сети или электронную почту, а автоматическая система наблюдения к тому моменту ничего не сообщила.

  1. Случай 1

    Уязвимость PHP. Оператор узнал о ней первым. Автоматическая система наблюдения её не отметила.
  2. Случай 2

    Вредоносный код, внедрённый в пакет Python. Оператор узнал о нём первым. Автоматическая система наблюдения его не отметила.
  3. Случай 3

    Проблема в базовом образе контейнера. Оператор узнал о ней первым. Автоматическая система наблюдения её не отметила.

Первым предположением было «недостаточно источников». Единой причины не было: официальные источники могут отставать от того, что набирает популярность (подробнее ниже), и также не хватало данных, чтобы определить, что запись касается нашей системы. Слова «PHP» или «Python» встречаются в новостных текстах, но это не то же самое, что названия пакетов, которые вы реально запускаете.

Перестроенная система наблюдения

1. Сбор

Официальные уведомления / уведомления GitHub / списки вредоносных пакетов / KEV / новости / социальные сети

↓

Список A: технические слова, которые мы используем

Широкая сеть

Список B: реальные названия компонентов

Формируется из lock-файлов и пакетов ОС

↓

2. Правила отбирают совпадения (работают без ИИ)

↓

3. Недорогая ИИ-модель выполняет первичную сортировку

Она может повысить срочность. Понизить её она не может.

Сбор, сопоставление с двумя списками, отбор правилами, затем ИИ, который может только повышать срочность. Путь с правилами работает в дни, когда ИИ недоступен.
  • Что собирается: официальные уведомления, уведомления GitHub, списки вредоносных пакетов, KEV агентства CISA, новости и социальные сети.
  • Два списка для сопоставления: технические слова для широкого охвата и реальные названия компонентов для совпадений с высокой достоверностью. Список компонентов формируется из lock-файлов всех репозиториев и пакетов ОС.
  • Сканирование всего образа: проверяется весь образ, включая базовый, а не только зависимости приложений.
  • Отставание сред выполнения: измеряется, насколько среды выполнения, такие как Node, PHP и база данных, отстают от последних версий.
  • Первичная сортировка ИИ: недорогая ИИ-модель первой отвечает на вопрос «затрагивает ли это нас?». ИИ может только повышать срочность.

Что показали измерения, в том числе то, что не совпало с ожиданиями

Первое допущение: официальных источников достаточно

Мы считали, что отслеживание официальных уведомлений и KEV поймает всё важное. На практике тема может набрать популярность до публикации уведомления. Одни только официальные источники проигрывают эту гонку.

После измерений: социальные сети как точка входа

Добавление социальных сетей позволило системе замечать события раньше, чем это делали одни только официальные источники. Но содержимое социальных сетей не считается фактом, пока официальный источник его не подтвердит. Широко на входе, осторожно при принятии решения.

Около 100
критических уязвимостей собрала за 10 дней отдельная система, которая ищет темы для статей
0
пропущено этой системой из тех, что затронули сайты оператора
Около 6 дней
продолжительность паузы ИИ-сортировки после исчерпания квоты ИИ (сопоставление по правилам продолжалось)
  1. Проверка на пропуски: около 100 критических уязвимостей, собранных за 10 дней отдельной системой (созданной для поиска тем для статей), были сверены с этой системой. Пропусков среди тех, что затронули сайты оператора: 0.
  2. Исчерпание квоты ИИ: месячная квота закончилась, и ИИ-сортировка приостанавливалась примерно на 6 дней. Сопоставление по правилам без ИИ работало всё это время. В конструкции заранее задаётся дата окончания паузы, и часть с ИИ возобновляется автоматически с этой даты.
  3. Пробел для нового сервера: пакеты ОС недавно добавленного сервера отсутствовали в списке компонентов. Его обнаружила ежемесячная пересборка списка. Список заслуживает доверия, только если он регулярно пересоздаётся, а не составляется однажды.

Как построить это для вашей среды

1

Сформируйте список компонентов (SBOM) автоматически

Составляйте его и из lock-файлов всех репозиториев, и из пакетов ОС ваших серверов и контейнеров. CISA описывает SBOM как вложенный перечень, список ингредиентов, из которых состоят программные компоненты. Генераторы SBOM, например открытый инструмент Syft, читают пакеты ОС и зависимости основных языков из образов контейнеров и файловых систем и могут выводить результат в формате CycloneDX или SPDX.

2

Сопоставьте список с известными уязвимостями

Для сопоставления зависимостей открытый инструмент osv-scanner читает lock-файлы и контейнеры. Настройка и интеграция в CI описаны в статье osv-scanner: настройка и использование.

3

Расставьте приоритеты с помощью KEV и EPSS

Когда находок много, нельзя устранить их все с одинаковой срочностью. Начните с того, что подтверждённо эксплуатируется (KEV), и с того, что имеет высокую прогнозируемую вероятность эксплуатации (EPSS). Как их сочетать, описано в статье CVSS, EPSS и KEV: как использовать их вместе.

4

Если вы используете ИИ, применяйте его только для повышения срочности

Даже если ИИ говорит «не затронуто», не удаляйте запись, которую отобрало правило. ИИ может ошибочно сказать «не относится», и цена пропуска выше, чем цена ложной тревоги.

5

Определите, что делать, когда ИИ недоступен

Квоты заканчиваются, сервисы выходят из строя, провайдеры прекращают работу. До начала эксплуатации решите, что одни только правила без ИИ по-прежнему отправляют минимальный набор уведомлений, и задайте дату возобновления, чтобы часть с ИИ вернулась автоматически.

6

Регулярно пересоздавайте список

Пробелы возникают, когда сервер или репозиторий добавлен, а список не обновлён. Пересобирайте его не реже раза в месяц и проверяйте, что добавленное в него попало.

Не считайте информацию из социальных сетей фактом, пока её не подтвердит официальный источник

Социальные сети быстры, но в них смешаны ошибки и домыслы, которые поставщик не подтвердил. Используйте их как точку входа, но основывайте реагирование на проверяемых первоисточниках, таких как уведомление поставщика или KEV.

Взгляд этого сайта: широкий охват по техническим словам, сужение по названиям компонентов

По опыту оператора, переход к сопоставлению по реальным названиям компонентов уменьшил количество ложных срабатываний и пропусков. Но если список компонентов устарел, это напрямую ведёт к пропускам. Нужны оба элемента: широкий охват и точный список для его сужения. Эта статья описывает систему наблюдения, построенную для сайтов, которыми управляет оператор.

Источники (первичные и официальные)

  • CISA — Known Exploited Vulnerabilities Catalog (уязвимости, подтверждённо эксплуатируемые)
  • CISA — Software Bill of Materials (SBOM) (определение SBOM)
  • FIRST — EPSS (прогнозируемая вероятность эксплуатации)
  • OpenSSF — malicious-packages (репозиторий отчётов о вредоносных пакетах в формате OSV)
  • Anchore — Syft (создаёт SBOM из образов контейнеров и файловых систем; вывод в CycloneDX и SPDX; пакеты ОС и основные языки)

Читайте далее

FAQ

QИз каких источников должна собирать данные автоматическая система наблюдения за уязвимостями?
A

Начните с официальных уведомлений поставщиков, каталога KEV агентства CISA, баз данных уведомлений экосистем пакетов и списков вредоносных пакетов. Однако официальные источники могут отставать от того, что набирает популярность. Система наблюдения, построенная для сайтов, которыми управляет оператор этого сайта, проиграла гонку между появлением темы в тренде и публикацией уведомления, поэтому в качестве вспомогательной точки входа были добавлены социальные сети. Всё, что появляется в социальных сетях, не считается фактом, пока официальный источник это не подтвердит.

QКак составить список используемых компонентов (SBOM)?
A

Составляйте его и из lock-файлов всех репозиториев (package-lock.json, pnpm-lock.yaml и т. д.), и из пакетов ОС ваших серверов и контейнеров. Одни только зависимости приложений не охватывают уровень ОС и базового образа. Генераторы SBOM, например открытый инструмент Syft, читают пакеты ОС и зависимости основных языков из образов контейнеров и файловых систем и могут выводить результат в формате CycloneDX или SPDX.

QБезопасно ли позволять ИИ решать, затрагивает ли нас запись?
A

Безопасно, если ограничить направление. В настройке оператора ИИ может только повышать срочность; он никогда не понижает запись, которую уже выбрало правило. ИИ может ошибочно сказать «не затронуто», и цена пропуска выше, чем цена ложной тревоги.

QЧто происходит с системой наблюдения в дни, когда квота ИИ исчерпана?
A

Она должна продолжать работать. В системе наблюдения оператора месячная квота ИИ закончилась, и ИИ-сортировка приостанавливалась примерно на 6 дней, тогда как сопоставление по правилам без ИИ работало всё это время. Если заранее задать дату возобновления, часть с ИИ вернётся автоматически в эту дату.