Назначение: назвать, от кого и от чего мы защищаемся (дополняет SECURITY_POLICY.md, где сказано, что разрешено). Лёгкий проход в духе STRIDE; уточняется по мере роста системы.
1. Активы
- Содержимое профилей (cookies, сессии, кошельки) — наивысшая ценность.
- Секреты хранилища (учётки прокси, токены, секреты автоматизации).
- Учётные данные пользователя / лицензионные токены.
- Целостность журнала действий (для команд и комплаенса).
- Целостность конвейера сборки патченого ядра (Phase 7+).
2. Против кого мы защищаемся
| Актор | Чем опасен |
|---|---|
| Удалённый сетевой атакующий | перехватывает трафик синхронизации, подменяет блобы |
| Злонамеренный или любопытный инсайдер облака | пытается прочитать содержимое профилей |
| Локальное вредоносное ПО / другой пользователь машины | читает папки профилей, хранилище, локальный API |
| Вредоносный npm-модуль в автоматизации | выносит секреты и данные |
| Тот, кто делится аккаунтом, или нарушитель лицензии | обходит лимиты тарифа |
| Скомпрометированная зависимость или сборка | отгружает приложение или ядро с закладкой |
3. Защиты (соответствие)
| Угроза (STRIDE) | Защита |
|---|---|
| Spoofing (подмена) | токен локального API на сессию; аутентификация + привязка к устройству; подписанные артефакты |
| Tampering (подделка) | AEAD + подпись Ed25519 на блобах; журнал только на дозапись; TLS; проверка подписи ядра |
| Repudiation (отказ от авторства) | журнал действий по актору, с режимом и результатом |
| Info disclosure (утечка) | шифрование на клиенте с нулевым разглашением; сервер хранит только шифртекст; API на loopback; вычистка секретов |
| Denial of service (отказ в обслуживании) | лимиты и квоты (облако); локальные операции деградируют мягко и работают офлайн |
| Elevation (повышение прав) | режимы политики + повторная аутентификация для опасного; Node-sidecar с минимальными правами; контроль границы модулей |
4. Явные остаточные риски (принятые, со смягчением)
- Потеря ВСЕХ факторов ключа → потеря данных (цена нулевого разглашения). Смягчение (ADR-0008, несколько KEK): обязательный Recovery Key + необязательные passkey / связка ключей ОС / восстановление через org-KEK команды; явные предупреждения в интерфейсе.
- Машина полностью скомпрометирована → живые профили читаемы. Полностью предотвратить — вне области;
смягчаем шифрованием при хранении, связкой ключей ОС для мастер-ключа в простое, надёжным стиранием
материализованной папки при pack/вытеснении и удержанием материализованного (открытого) окна минимальным
(PROFILE_STORAGE_SYNC §6).
materializeникогда не отдаёт сырой путь удалённым клиентам. - Потолок обнаруживаемости временного ядра (Phase 1-2) → задокументирован, оценён доверием, не скрыт.
5. Вне области (пока)
- Локальное закрепление уровня государства; атаки на железо; защита рутованной или скомпрометированной ОС сверх разумных усилий.
Открытые вопросы
Интеграция со связкой ключей ОС для мастер-ключа в простое, технология песочницы для npm-sidecar (отдельный пользователь или контейнер?), резидентность блобов и комплаенс → OPEN_QUESTIONS.md.