Генератор attack tree

Иерархия целей и подцелей: листья — элементарные атаки с вероятностями, внутренние узлы — логика AND / OR. Меняйте типы и вероятности — итоговая вероятность достижения корневой цели пересчитывается автоматически.

Attack Tree AND / OR Курсовая 12

Итоговая вероятность

0.00
Вероятность компрометации корневой цели

Меняйте значения листьев — итог пересчитается.

AND-узел требует выполнения всех подцелей: P = ∏ Pᵢ.
OR-узел срабатывает при выполнении хотя бы одной подцели: P = 1 − ∏ (1 − Pᵢ).

Дерево

Формализация

Расчёт вероятности
function compute(node) {
  if (node.type === 'LEAF') return node.prob;

  const ps = node.children.map(compute);

  if (node.type === 'AND') {
    // Все подцели должны быть достигнуты
    return ps.reduce((a, b) => a * b, 1);
  }
  // OR: хотя бы одна подцель
  return 1 - ps.reduce((a, b) => a * (1 - b), 1);
}
Модель предполагает независимость событий. На практике успех одной подцели часто увеличивает вероятность другой (например, получение учётных данных облегчает повышение привилегий) — тогда требуется байесовская сеть вместо простого дерева.

Задание

  1. Установите вероятности всех листьев равными 0.5. Как изменится ответ для AND и OR узлов?
  2. Замените корневой узел на AND. Объясните, почему итоговая вероятность резко упала.
  3. Добавьте новую ветвь «Слабая конфигурация облака» с двумя листьями и оцените её вклад.
  4. Определите, какая ветвь даёт наибольший вклад в итоговую вероятность и как её ослабить (какие контрмеры выбрать).