Logo Craft Homelab Docs Нейросети Хостинг Контакты
Триаж уязвимостей AI-стека по дереву SSVC: пять осей и шесть исходов Трендовые github проекты в нашем телеграм канале. Подпишись →
23 сентября 2026 г.

Срок исправления CVE по дереву решений: разбор на AI-стеке

10 июня 2026 года CISA выпустила директиву BOD 26-04. Она отменяет BOD 22-01, которая с 2021 года задавала единые календарные сроки для уязвимостей из каталога KEV. Теперь срок зависит от четырёх обстоятельств: доступен ли актив публично, есть ли CVE в KEV, автоматизируется ли атака и какой технический эффект она даёт. В самом срочном случае — три дня и первичный forensic triage, в самом мягком — плановое обновление.

Поле due date из KEV давно подтягивают сканеры и используют как ориентир для внутренних SLA, поэтому изменение касается и тех, на кого директива формально не распространяется. Сильнее всего оно бьёт по AI-платформам: в них слово «устранить» означает пять разных операций.

Почему балл CVSS перестал годиться для дедлайна

Первая проблема — оценки может просто не быть. С 15 апреля 2026 года NVD в первую очередь обогащает записи из KEV, ПО федеральных органов США и критичное ПО из списка EO 14028. Остальные CVE получают статус Lowest Priority, а бэклог до 1 марта 2026 года переведён в Not Scheduled: без CPE, без собственного CVSS от NIST. За 2020–2025 годы поток CVE вырос на 263%.

Вторая — CVSS описывает тяжесть дефекта, риск он не измеряет. Это прямо написано в руководстве FIRST по CVSS 4.0, и ради этого в четвёртой версии появилась группа метрик Threat.

Третья — оценщики расходятся. У CVE-2024-8309 (SQL-инъекция в GraphCypherQAChain из LangChain) NVD ставит 9,8 Critical, а CNA — 4,9 Medium, с разными векторами и даже разными CWE. У CVE-2024-5184 в EmailGPT три оценки: 9,1 от NVD, 6,5 по CVSS 3.1 и 8,5 по CVSS 4.0 от одного и того же Synopsys. По препринту Zhang, Massacci и Zhang (июль 2026), модель приоритизации, обученная на оценках одного источника, теряет до 40% точности на данных другого.

Пять слоёв, пять смыслов слова «исправить»

Веб-API и обвязка. Обычный патч зависимости в следующем релизе.

ML-зависимости. CVE-2025-32434 в PyTorch: RCE через torch.load даже с weights_only=True. Уязвимы версии до 2.5.1, фикс только в 2.6.0 — бэкпортов PyTorch не делает. Значит, закрыть CVE = перейти на новую минорную ветку с проверкой CUDA-стека, пайплайнов и воспроизводимости. Деталь: 2.6.0 вышла 29 января 2025 года, CVE опубликована 18 апреля — фикс существовал 79 дней до записи. Кто обновлялся регулярно, закрыл проблему заранее; кто закрепил версию, получил мажорный апгрейд в сжатый срок.

Темп релизов делает пиннинг отдельным риском. У vLLM за 204 дня вышло 24 релиза в 14 минорных ветках, LTS нет, патчи — только для актуальной линии. Зафиксировав инференс-движок на квартал, легко отстать на шесть-семь минорных версий.

GPU-рантайм и прошивки. CVE-2025-23266 (NVIDIAScape) в NVIDIA Container Toolkit: OCI-хук запускает nvidia-ctk от root и наследует LD_PRELOAD из образа, для побега на хост хватает трёх строк в Dockerfile. Хост не обязан смотреть в интернет — достаточно права запустить контейнер на общей GPU-инфраструктуре. Фикс есть (Toolkit 1.17.8+, GPU Operator 25.3.1+), но на живом кластере это окно работ и перезапуск узлов. Временная мера — отключить CUDA compatibility library hook в /etc/nvidia-container-toolkit/config.toml:

disable-cuda-compat-lib-hook = true

CVE-2023-4969 (LeftoverLocals) с оценкой 6,5 позволяет одному GPU-ядру читать local memory после другого. По баллу это задача «на 90 дней», для мультитенантной платформы — нарушение изоляции арендаторов. Лечится прошивкой и драйвером, сканер образов её не увидит.

Инференс-движок. CVE-2025-30165 в vLLM (небезопасная десериализация, 8,0): мейнтейнеры не будут выпускать патч и советуют держать сервис в изолированной сети. CVE-2023-48022 в Ray (ShadowRay, 9,8, тег disputed): по мнению вендора, Ray вообще не должен работать в открытой сети, токен-аутентификация появилась опционально с 2.52.0. Паттерн ShadowMQ (ZeroMQ recv_pyobj() плюс pickle) копипастой разошёлся по нескольким инференс-серверам, и у части из них нет ни фикса, ни CVE — сканер такое не заметит.

Веса модели. PyTorch в SECURITY.md прямо пишет: загрузка недоверенной модели равна запуску недоверенного кода. CVE тут нет. В 2024 году JFrog нашла на Hugging Face около сотни моделей с вредоносным __reduce__, одна открывала reverse shell.

Как устроено дерево SSVC и зачем пятая ось

В SSVC уязвимость не получает итоговое число. Команда отвечает на вопросы, и по их сочетанию выбирается действие: Track, Track*, Attend, Act. Срок становится следствием действия. Платформенная команда здесь играет роль deployer, но удобно брать за основу дерево CISA (роль coordinator): данные для него публикуются открыто через Vulnrichment. С 17 июня 2026 года NVD отдаёт SSVC-метаданные в API 2.0.3 в поле ssvcV203 — покрыто около 95% записей, отдельный пайплайн обогащения не нужен.

Перед деревом стоит нулевой вопрос: есть ли у находки CVE. Если нет — это ветка «вне очереди CVE», решение принимается по артефакту: формат сериализации, песочница при загрузке, доверие к источнику. Дальше пять осей:

ВопросОткуда ответ
Есть подтверждённая эксплуатация?KEV, threat intelligence
Атака автоматизируется целиком?SSVC automatable
Полный контроль над компонентом?SSVC technicalImpact
Доступно за пределами доверенного контура?инвентарь, сетевой контур
Есть применимый патч?релизы, advisory, возможности эксплуатации

Первые четыре — из BOD 26-04. Пятая добавлена под AI-стек: без неё дерево назначит срок действию, которое выполнить нельзя. Три уточнения, которые стоит зафиксировать в регламенте:

  • Доверенный контур — сеть, куда нет доступа ни у пользователя, ни у соседнего тенанта. Для уязвимостей, эксплуатируемых через соседство на ускорителе, ответ «вне контура» всегда «да».
  • Применимый патч — тот, который ваша команда может поставить в обычном цикле. Мажорный апгрейд PyTorch применим, хоть и дорог; прошивка ускорителя в чужом облаке — нет. Кто и какую компенсирующую меру держит, пока патча нет, прописывают в договоре с провайдером.
  • Чья оценка при расхождении — automatable и technicalImpact из Vulnrichment. Для LangChain это переводит запись из «24 часов» в плановый цикл.

EPSS и CVSS нельзя перемножать в «композитный балл»: FIRST называет это отмыванием оценок, у шкал разные типы.

Шесть исходов и релизный гейт

ИсходРелизЧто вместо патча
Стоп-релизблокируетсяничего, нужно устранение
Митигация под подписьпроходитизоляция или отключение пути, подпись владельца и ИБ с датой пересмотра
Срочно без блокировкипроходитплан устранения с датой
Плановый циклпроходитничего
Плановый апгрейдпроходитпостоянная компенсирующая мера
Вне очереди CVEпроходитрешение по артефакту

Прогон семи CVE из примеров выше и CVE-2025-23319 из цепочки уязвимостей NVIDIA Triton (веб-API и инференс доступны через балансировщик, ускорители делят несколько тенантов): Container Toolkit и Triton — «срочно без блокировки», vLLM WONTFIX — «митигация под подпись», LeftoverLocals — «плановый апгрейд» с постоянным запретом совместного размещения, остальные четыре — плановый цикл. По баллу шесть из восьми записей ушли бы в «критично, 24 часа», по дереву туда не попадает ни одна: подтверждённой эксплуатации нет ни у кого. Подборка витринная, в реальном бэклоге большинство записей закрывается обычным патчем и разрыв будет меньше.

Порог считают от ёмкости команды

EPSS принципиально не даёт готовых уровней, популярный порог 10% — примерно 95-й перцентиль без особого статуса. Для оценки объёма FIRST даёт доли от ~61 тысячи CVE за год:

ПравилоДоляВ месяц
CVSS High+~48%~2 400
CVSS Critical~10,5%~530
EPSS ≥ 50%1,2%~60
Запись в KEV~0,5%~25
EPSS ≥ 90%0,2%~10

Разница между крайними строками — 240 раз. По данным Cyentia и Kenna (около 300 организаций), типичная команда закрывает около 10% открытого бэклога в месяц. Для слоёв с мажорными апгрейдами и прошивками эта цифра заметно ниже. Низкая вероятность отдельной записи не означает низкий риск набора: из 100 записей с EPSS 5% хотя бы одна будет эксплуатирована за 30 дней с вероятностью 0,994.

У EPSS есть слепая зона: для vLLM, Triton, Ray и форматов весов телеметрии сенсоров почти нет, и близкий к нулю балл там — прогноз по пустоте.

Российский контур

Методика ФСТЭК от 30 июня 2025 года считает критичность как V = Icvss × Iinfr × (Iat + Iimp): доступность из интернета входит в Iinfr, возможность эксплуатации — в Iat, последствия — в Iimp. Критический уровень — при V > 8,0. Приказ № 117 (действует с 1 марта 2026 года) даёт 24 часа на критические и 7 дней на высокие уязвимости, но в пункте 38 ставит компенсирующие меры в один ряд с устранением. Пункт 39 требует учитывать риски самого обновления, что пригодится для мажорных апгрейдов ML-фреймворков.

С чего начать

  1. Разметить инвентарь по пяти слоям и для каждого записать, что значит «закрыть».
  2. Выгрузить ssvcV203 из NVD API для текущего бэклога (пагинация, около дня работы) и посчитать распределение по исходам.
  3. Посчитать, сколько записей команда реально закрывает в месяц, и выбрать порог EPSS под этот объём.

Календарный срок остаётся: его требуют приказ и аудит. По Verizon DBIR 2026, на седьмой день открытыми остаются 60–70% уязвимостей из KEV — фиксированный срок многие команды не выдерживают. Дерево перед сроком нужно, чтобы дедлайн получали записи, для которых есть выполнимое действие.