montana/Node/External-Audit/THREAT-MODEL.md
2026-05-21 03:44:38 +03:00

4.3 KiB
Raw Blame History

Модель угроз — VPN-сеть Montana

Версия: 2026-05-18

Активы

  • A1: privacy трафика пользователя (содержимое, метаданные)
  • A2: доступность сервиса (uptime)
  • A3: untraceability подключения (DPI не должен распознать Reality)
  • A4: целостность DNS multi-A pool (только живые/наши узлы)
  • A5: integrity конфигов узлов и orchestrator

Атакующие

Кто Возможности
AT-1 Passive observer на пути Снифать трафик, не модифицировать
AT-2 Active MITM (BGP/ISP) Подменять трафик, terminate TLS
AT-3 DPI/цензор Сигнатурный анализ, активный probing
AT-4 Compromised hosting Image dump VM, доступ к файлам узла
AT-5 Insider с admin TOKEN Изменения multi-A, добавление узлов
AT-6 Утечка одного privateKey Поднять «фейковый» Reality на любом IP
AT-7 DDoS на :443 Заваливать сетевой стек узла
AT-8 SSH brute-force Пытаться войти на узел

Угрозы и митигации

ID Угроза Атакующий Митигация Остаточный риск
T-1 Snooping трафика AT-1 TLS 1.3 + Reality auth низкий
T-2 Identity spoofing Reality-узла AT-6 privateKey 0600 root + не утечёт в git/hub (C1, C5) средний (один ключ — один blast radius)
T-3 DPI fingerprinting AT-3 Reality имитирует Google TLS handshake средний (зависит от устойчивости Reality к новым DPI)
T-4 Active probing узла AT-3 Reality short_id-gating: чужой клиент получает реальный Google response низкий
T-5 Подмена DNS-pool AT-2 Cloudflare DNSSEC выключен сейчас — РИСК; митигация: TTL 120s + клиент верифит cert через pbk средний — см. OPEN-RISKS R-2
T-6 Compromised узел читает чужой трафик AT-4 freedom outbound = прямо в интернет, узел видит destination как любой VPN принято (см. N5)
T-7 Утечка admin TOKEN AT-5 Только в Keychain (macOS) + /etc/montana/orchestrator-admin-token (0600); ротация по требованию низкий
T-8 Утечка CF API token AT-5 Token scoped только на zone montana.quest; ротация по требованию низкий
T-9 Узел падает — клиент таймаут Orchestrator watchdog 30s + multi-A auto-prune; iPhone DNS TTL 120s низкий
T-10 Orchestrator падает — нет prune systemd Restart=on-failure; ручной trigger возможен через /register низкий (deg-graceful: pool остаётся как был)
T-11 Crash-loop xray = CPU burn StartLimitBurst=10/300s низкий
T-12 SSH brute force на узел AT-8 fail2ban + ufw + CrowdSec на FRA низкий
T-13 DDoS на :443 AT-7 Опираемся на хостинг-провайдера, BGP-уровень средний — см. OPEN-RISKS R-3
T-14 Подмена cdn.montana.quest через CF account takeover AT-5+CF CF account 2FA, API token scoped низкий-средний
T-15 Утечка privateKey через join.sh в публичный hub Закрыто 2026-05-18: privateKey в env/защищённом файле, не в скрипте (C5) закрыто

Доверенные элементы (assumed trusted)

  • Cloudflare (DNS + API) — single trust anchor management plane
  • macOS Keychain — где живут все управляющие токены
  • Хостинг провайдеры (Timeweb FI/RU, THE.Hosting FRA/US) — image confidentiality
  • Reality protocol (XTLS) — корректность реализации xtls-rprx-vision

Out of scope

См. AUDIT-READINESS.md секция «Что мы НЕ гарантируем» (N1N7).