V
Сканер-ВС
ГлавнаяКаталогИсточникиCWECAPECATT&CKМеры защитыПродуктыВендорыДокументация
Содержание

Каталог уязвимостей Сканер-ВС 7 связывает каждую CVE с релевантными техниками MITRE ATT&CK тремя независимыми способами. Этот раздел объясняет третий из них — ML-сопоставление — и зачем оно дополняет два детерминированных слоя.

Три уровня сопоставления ATT&CK

Уровень Источник Свойство
Прямое (Direct) CTID Mappings Explorer (кураторская) Строгое утверждение «эта CVE → эта техника» от MITRE-аффилированных экспертов
Выводимое (Inferred) Цепочка CVE → CWE → CAPEC → ATT&CK Детерминированный логический вывод по структурным связям MITRE-классификаций
Предложено ML Эмбеддинг описания CVE + конформное предсказание Вероятностная подсказка с откалиброванным покрытием

Первые два дают каноническую правду, но имеют принципиальные пробелы покрытия. Например, базовая техника T1190 — Exploit Public-Facing Application (одна из самых частых в реальных атаках) не имеет ни одной связи CAPEC → ATT&CK в текущей версии CAPEC v3.9. Любая CVE веб-приложения, не получившая ручного CTID-сопоставления, не будет показана как связанная с T1190 — даже если описание этой уязвимости в точности отражает T1190.

ML-уровень закрывает эту дыру: он смотрит на естественно-языковое описание CVE и описания техник ATT&CK и подсказывает кандидатов на основе семантической близости.

Зачем именно ML, а не ещё одна детерминированная цепочка

Структурные связи MITRE (CWE → CAPEC, CAPEC → ATT&CK) ведут реальные люди. Они точны там, где определены, но обновляются медленно и неравномерно. Технику добавили в ATT&CK v15, а соответствующий CAPEC ещё не успели связать — и для всех будущих CVE этой техники не существует.

Языковые модели читают описания так же, как читает их аналитик. Они не утверждают причинно-следственную связь — они утверждают, что описание этой CVE семантически ближе всего к описаниям этих техник. Это полезная подсказка, не заменяющая кураторскую работу.

Как это работает — для нетерпеливых

  1. Эмбеддинг: Каждое описание ATT&CK-техники и каждое описание CVE кодируется в вектор фиксированной размерности (768) с помощью предобученной языковой модели общего назначения.
  2. Поиск ближайших соседей: Для каждой CVE считается косинусное сходство с эмбеддингами всех родительских техник; выбираются top-K (K=10) кандидатов.
  3. Конформное предсказание: Поверх top-K строится доверительный набор — подмножество, которое с заданной вероятностью покрытия содержит верный ответ. Цель покрытия: 0.80 (80%).
  4. Жёсткие правила безопасности: даже формально допустимый набор отклоняется, если кандидат №1 имеет слишком низкое сходство (< 0.5) либо если набор слишком широкий (> 5 кандидатов). В обоих случаях ML просто «воздерживается».
  5. Заполнение пробелов: кандидаты, уже присутствующие в Direct- или Inferred-уровнях для той же CVE, фильтруются — чтобы UI не показывал одну и ту же технику дважды.

Результат сохраняется в БД и подгружается тем же запросом, что и остальные слои. Никаких сетевых вызовов во время рендеринга — модель не работает в рантайме; она работает только в офлайн-конвейере, который пересчитывает таблицу.

Используемая модель

Параметр Значение
Название sentence-transformers/all-mpnet-base-v2
Лицензия Apache-2.0 (явная, разрешает перераспределение)
Размерность эмбеддинга 768
Тип Sentence-transformer (предобучен на 1 млрд пар предложений)
Выполнение Только CPU; ни одной GPU-зависимости
Размер артефакта ~420 МБ

Исходный дизайн фиксировал доменно-специфическую модель ATT&CK-BERT, но у неё не указана лицензия на HuggingFace — мы не имели права редистрибутировать её внутри образа сборки. all-mpnet-base-v2 — сильнейший энкодер предложений общего назначения под Apache-2.0; на размеченной выборке CTID он уступает ATT&CK-BERT не более чем на ~3 п.п. precision@1 — заметно выше нашего порога приёмки.

Калибровочный набор

Конформный порог нонконформности обучается на 419 размеченных парах CVE → набор ATT&CK-техник из открытого репозитория CTID Mappings Explorer (MIT-лицензия). Источник — kev → enterprise ATT&CK 16.1, отражает реальные случаи эксплуатации из перечня CISA KEV. В среднем 2.81 техники на CVE.

Файл лежит в репозитории по пути etl/attack-embed/calibration/19.0/labels.jsonl; каждая строка хранит SHA upstream-коммита для воспроизводимости.

Что означает «покрытие 80%»

Конформное предсказание (split CP) — это не доверительная вероятность, а гарантия покрытия. На статистически идентичном новом наборе CVE доверительные наборы покрывают истинную технику в среднем в 80% случаев. Это сильнее обычной точки вероятности: гарантия математически выводится из распределения ошибок на calibration-наборе, а не из выхода самой модели.

Цена 80% — оставшиеся 20% непокрытых случаев; именно поэтому ML-уровень показывается рядом с Direct/Inferred, а не вместо них.

Жёсткое правило приёмки в CI

Перед публикацией Parquet-артефакта в MinIO конвейер вычисляет precision@1 — долю CVE из калибровочного набора, для которых кандидат №1 совпал с истинной техникой. Если precision@1 < 0.70, шаг calibrate завершает работу с ненулевым кодом и пайплайн падает. Это аппаратная защита от «деградации модели с тихим деплоем»: показать пользователю шум вместо подсказки нельзя.

ETL-конвейер: офлайн, без GPU, без HuggingFace в рантайме

Конвейер живёт в etl/attack-embed/ и состоит из пяти идемпотентных шагов:

techniques  → encode ATT&CK technique descriptions → attack_emb.parquet
cves        → encode CVE descriptions (resumable)  → cve_emb.parquet
nearest     → top-K cosine matmul                  → cve_topk.parquet
calibrate   → fit split CP threshold (precision@1 gate) → calibration_diagnostics.json
export      → assemble Parquet contract            → vulnerability_attack_ml.parquet,
                                                     attack_ml_calibration.parquet,
                                                     manifest.json (sha256-stamped)

Каждый шаг прерываемый и идемпотентный: cves сохраняет промежуточные чекпоинты каждые 10 000 CVE; перезапуск возобновляет с последнего сохранения.

Дисциплина воздушного зазора: рантайм-сервер каталога никогда не обращается наружу. ML-конвейер запускается в сети сборки, кодирует и калибрует, заливает Parquet в MinIO. Production-образ предзагружает веса модели и работает с переменными окружения HF_HUB_OFFLINE=1 / TRANSFORMERS_OFFLINE=1 — попытка обращения к huggingface.co блокируется явным assert_offline_env.

Как читать ML-блок в интерфейсе

В пред­просмотре уязвимости на вкладке Технические детали ML-уровень виден как прерывистый янтарный блок с иконкой ✨ и заголовком «ПРЕДЛОЖЕНО ML». Ниже — баннер «Вероятно одна из — конформный набор при покрытии 80%», далее от одного до пяти чипов-кандидатов (каждый ведёт на страницу техники). Под ними — провенанс-строка:

all-mpnet-base-v2@<хэш> · ATT&CK v19.0 · 2026-05-27 · почему эти? ⓘ

<хэш> — детерминированный SHA-256 от дерева файлов локальной модели; при смене ревизии модели этот идентификатор меняется автоматически.

Ссылка «почему эти? ⓘ» открывает popover с короткими описаниями двух ближайших техник из ATT&CK-словаря — чтобы можно было быстро понять, почему модель выбрала именно их.

На странице конкретной техники (/attack/{id}) тот же приём работает в обратную сторону: показывается список CVE, для которых эта техника оказалась в ML-конформном наборе. Уязвимости, уже присутствующие в Direct/Inferred секциях, исключаются автоматически.

Что ML-уровень НЕ делает

  • Не утверждает причинно-следственную связь. «Описание похоже» ≠ «эта CVE действительно эксплуатируется этим способом».
  • Не заменяет кураторскую работу CTID. Если есть Direct mapping, он всегда главнее.
  • Не выдаёт numerical confidence. Конформное предсказание даёт гарантию покрытия на ансамбле, а не вероятность для отдельной CVE.
  • Не лезет в сеть. Все ML-вычисления — офлайн в конвейере; рантайм только читает таблицу.

Версионирование и автоочистка

Поле attack_version хранится без префикса (19.0, не v19.0); UI приставляет v при рендеринге. JOIN attack_ref.stix_version = m.attack_version гарантирует, что после обновления ATT&CK устаревшие ML-строки автоматически исчезают из выдачи. Команда task embed-attack-prune удаляет такие строки из таблицы — на случай, если переэмбеддинг произойдёт не сразу.

Связь с коммерческим Сканер-ВС 7

В коммерческой версии Сканер-ВС 7 результаты ML-сопоставления вписываются в более широкий процесс корреляции угроз: они сопоставляются с обнаруженными в инфраструктуре активами, дополняются threat intelligence, и используются для автоматической приоритизации патчинга. Каталог демонстрирует только просмотр этих сопоставлений; полный процесс управления уязвимостями требует продукта.

АО «Эшелон Технологии»:

  • 📧 Email: partners@npo-echelon.ru
  • 📞 Телефон: 8 (495) 223-23-92
  • 🏢 Адрес: 107023, г. Москва, ул. Электрозаводская, д. 24
  • 🛠️ Техподдержка: 8 (800) 100-05-02

ML-сопоставление ATT&CK — это вероятностная подсказка, рассчитанная на честное сосуществование с детерминированными слоями. Если в чипах рядом с уязвимостью вы видите ✨, помните: это «возможно, одна из» — открытый вопрос для аналитика, не закрытый ответ. Гарантия покрытия 80% и жёсткий precision@1-порог сделаны ровно для того, чтобы эта подсказка была полезной, а не вводящей в заблуждение.