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