Движок Корреляции v3
Движок Корреляции трансформирует сырые ИБ-события в инциденты, обнаруживая многоэтапные атаки, перекрёстные паттерны сенсоров и темпоральные аномалии.
Обзор
| Метрика | Значение |
|---|
| Встроенные правила | 15 |
| Окно корреляции | 5 минут (настраиваемо) |
| Кластеризация алертов | DBSCAN + MiniLM эмбеддинги |
| Снижение шума | 100+ алертов/час → 5-10 инцидентов |
| Интеграция Lattice | TSA, GPS, MIRE примитивы |
Как работает корреляция
Сырые события (100+/час)
│
├── 1. Группировка по временным окнам ── 5-минутные окна
│
├── 2. Сверка с правилами ─────────────── 15 правил параллельно
│
├── 3. Маппинг на Kill Chain ──────────── MITRE ATT&CK стадии
│
├── 4. Кластеризация алертов ──────────── DBSCAN убирает дубликаты
│
├── 5. Расчёт серьёзности ─────────────── Max(серьёзность) + эскалация
│
└── 6. Создание инцидента ─────────────── Уникальный инцидент + связи
Коррелированные инциденты (5-10/час)
Встроенные правила
Правила многоэтапных атак
| # | Rule ID | Триггерные события | Окно | Серьёзность |
|---|
| 1 | MULTI_STAGE_JAILBREAK | jailbreak → tool_abuse | 5м | HIGH |
| 2 | EXFILTRATION_CHAIN | pii_detected → exfiltration → network_alert | 5м | CRITICAL |
| 3 | INJECTION_TO_EXEC | injection → tool_abuse (file/exec) | 3м | CRITICAL |
| 4 | CRESCENDO_ATTACK | 5+ low-severity от одного источника | 10м | HIGH |
| 5 | DORMANT_PAYLOAD_ACTIVATION | dormant_payload → any_high_severity | 30м | CRITICAL |
Перекрёстные правила сенсоров
| # | Rule ID | Триггер | Окно | Серьёзность |
|---|
| 6 | BYPASS_SHIELD_THEN_INJECT | shield_block → core_detect | 30с | HIGH |
| 7 | CROSS_SENSOR_ESCALATION | shield_bypass + core_detect | 1м | CRITICAL |
| 8 | IMMUNE_KERNEL_PLUS_CORE | immune_alert + core_alert | 2м | HIGH |
Темпоральные правила
| # | Rule ID | Триггер | Окно | Серьёзность |
|---|
| 9 | REPEATED_TOOL_ABUSE | 3+ tool_abuse с одного IP | 10м | HIGH |
| 10 | ALERT_FLOOD | 100+ событий с одного сенсора | 60с | MEDIUM |
| 11 | BRUTE_FORCE_PATTERN | 10+ попыток auth_bypass | 5м | HIGH |
Lattice-правила
| # | Rule ID | Триггер | Примитив | Серьёзность |
|---|
| 12 | TSA_VIOLATION | Нарушение Temporal Safety Automata | TSA | CRITICAL |
| 13 | GPS_HIGH_DANGER | Goal Predictability Score > 0.7 | GPS | HIGH |
| 14 | MIRE_CONTAINMENT | Сработал контейнмент модели | MIRE | CRITICAL |
| 15 | IRM_HIDDEN_INTENT | Intent Revelation расхождение > 0.5 | IRM | HIGH |
Формат определения правил
Правила определяются в YAML:
rules:
- id: MULTI_STAGE_JAILBREAK
name: "Multi-Stage Jailbreak Attack"
description: "Jailbreak с последующим tool_abuse в течение 5 минут"
enabled: true
conditions:
- sequence:
- category: jailbreak
min_confidence: 0.7
- category: tool_abuse
min_confidence: 0.5
within: "5m"
same_field: "source_ip"
action:
create_incident: true
severity: HIGH
kill_chain_stage: "exploitation"
playbook: "auto_block_jailbreak"
metadata:
mitre_atlas: ["AML.T0054", "AML.T0040"]
owasp_llm: ["LLM01", "LLM07"]
Типы условий
| Тип | Описание | Пример |
|---|
sequence | События в порядке | jailbreak → tool_abuse |
count | N событий типа | 3+ tool_abuse |
absence | Ожидаемое событие отсутствует | Нет auth в течение 5м после доступа |
threshold | Метрика превышает значение | GPS > 0.7 |
Параметры совпадения
| Параметр | Описание |
|---|
within | Временное окно корреляции |
same_field | События должны совпадать по этому полю |
different_source | События от разных сенсоров |
min_confidence | Минимальная уверенность на событие |
Кластеризация алертов
Проблема
66 движков × входящие запросы = сотни сырых алертов в час. Большинство связаны с одной и той же атакой.
Решение: DBSCAN + MiniLM
100+ сырых алертов
│
├── 1. Эмбеддинг описаний алертов (MiniLM-L6)
│ → 384-мерные вектора
│
├── 2. Кластеризация DBSCAN (ε=0.3, min_samples=3)
│ → Группировка похожих
│
├── 3. Выбор представителя
│ → Алерт с наивысшей уверенностью из кластера
│
└── 4. Фильтрация шума
→ Изолированные алерты остаются как отдельные события
5-10 кластеров, достойных инцидента
Конфигурация
correlation:
clustering:
enabled: true
algorithm: "dbscan"
min_cluster_size: 3 # Минимум событий на кластер
similarity_threshold: 0.7 # Порог косинусного сходства
embedding_model: "all-MiniLM-L6-v2"
Маппинг на Kill Chain
Коррелированные инциденты маппятся на стадии атаки:
┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐
│ Разведка │→ │ Доставка │→ │Эксплуатация│→ │ Действие │
│ │ │ │ │ │ │ │
│ injection │ │ shield_blk │ │ jailbreak │ │exfiltration│
│ probe │ │ evasion │ │ tool_abuse │ │ pii_leak │
└────────────┘ └────────────┘ └────────────┘ └────────────┘
Каждый инцидент показывает:
- Стадия Kill Chain: Текущая фаза атаки
- Прогресс: Визуальный таймлайн стадий
- Прогноз: GPS-прогноз вероятной следующей стадии
Жизненный цикл инцидента
┌────────────────────────────────────────────────────┐
│ │
│ ┌──────┐ ┌───────────────┐ ┌──────────┐│
│ │ OPEN │────▶│ INVESTIGATING │────▶│ RESOLVED ││
│ └──┬───┘ └───────┬───────┘ └──────────┘│
│ │ │ │
│ │ ┌───────▼───────┐ │
│ └────────▶│ ESCALATED │ │
│ │ (Zero-G mode) │ │
│ └───────────────┘ │
│ │
└────────────────────────────────────────────────────┘
| Статус | Описание | Доступные действия |
|---|
| OPEN | Новый, не подтверждённый | Подтвердить, эскалировать |
| INVESTIGATING | Аналитик работает | Запуск playbook, обновление, закрытие |
| ESCALATED | Требуется старший аналитик | Действия Zero-G |
| RESOLVED | Обработан и задокументирован | Переоткрыть (при необходимости) |
Производительность
| Метрика | Значение |
|---|
| Оценка правил | <5мс для всех 15 правил |
| Кластеризация | <50мс для 100 алертов |
| Сквозная корреляция | <100мс |
| Использование памяти | ~50MB для движка правил |
| Макс. параллельных корреляций | 1000 |
Пользовательские правила
Пошаговое руководство по созданию собственных правил — Туториал по правилам корреляции.
Дальнейшие шаги