> ## Documentation Index
> Fetch the complete documentation index at: https://omniflow-vpn.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Модель угроз

> От чего защищается Omniflow на каждой поверхности, какая мера действительно реализована в коде, и где прямо названы остаточные риски

Эта страница связывает воедино меры защиты, описанные по всему сайту: что
находится под угрозой на каждой поверхности, какая атака реалистична, и какая
мера защиты действительно существует — не рекомендация, а свойство кода. Там,
где у меры защиты есть известный пробел, это прямо называется, а не
подразумевается покрытие, которого нет.

Каждая мера защиты здесь ссылается на страницу, где она описана полностью. Эта
страница не повторяет эти меры, а лишь показывает, как они складываются в
общую для системы картину.

> [!NOTE]
>
> Это собственная модель угроз Omniflow, написанная мейнтейнерами. Она не
> заменяет независимую проверку безопасности, которая отслеживается отдельно в
> [ROADMAP.md](https://github.com/kewldan/omniflow/blob/main/ROADMAP.md) — см.
> примечание в конце страницы.

## Идентичность

| Риск | Мера защиты | Остаточный риск |
| - | - | - |
| Credential stuffing / перебор пароля оператора | Ответы, устойчивые к перечислению, decoy-хеш для неизвестных аккаунтов, удваивающаяся блокировка и лимиты частоты на аккаунт и на IP — [Безопасность](https://omniflow-vpn.mintlify.site/ru/operations/security.md#защита-входа) | Не выявлено |
| Кража или повтор сессионного cookie | 256-битные токены, хранящиеся только как SHA-256-дайджест, двойной срок действия (простой и абсолютный), ротация и повышение уровня аутентификации для четырёх разрушительных действий клиента — [Безопасность](https://omniflow-vpn.mintlify.site/ru/operations/security.md#сессии) | Истёкшие строки `admin_sessions`/`customer_sessions`/`customer_magic_links`/`customer_security_events` сегодня никакой задачей не удаляются — проблема хранения и гигиены, а не доступа, поскольку истёкшие сессии не аутентифицируют независимо от наличия строки |
| Межсайтовая подделка запроса | HMAC-токен на сессию, обязательный для каждого небезопасного метода, проверяемый на сервере, а не только политикой cookie — [Безопасность](https://omniflow-vpn.mintlify.site/ru/operations/security.md#csrf-и-cookie) | Не выявлено |
| Двухфакторная аутентификация не обязательна | TOTP (RFC 6238) с кодами восстановления, обязателен для отключения | Двухфакторная аутентификация добровольна для каждого аккаунта в этой сборке; принуждение — эксплуатационная проверка на `/admin/operators`, а не то, что может потребовать API — [Безопасность](https://omniflow-vpn.mintlify.site/ru/operations/security.md#двухфакторная-аутентификация) |
| Похищенный `APP_OPERATOR_TOKEN` | Обязателен при старте; принцип «только на запись» для учётных данных применяется повсюду в API | Сам токен не несёт ролей и CSRF, а его изменения пишутся в аудит лишь как `operator-token`, а не как человек, — обращайтесь с ним как с root и ротируйте при любом подозрении на утечку — [Безопасность](https://omniflow-vpn.mintlify.site/ru/operations/security.md#три-поверхности-учётных-данных) |

## Telegram

| Риск | Мера защиты | Остаточный риск |
| - | - | - |
| Подделанная полезная нагрузка виджета входа | Проверяется по токену бота с окном свежести в одну минуту, поскольку сам хеш никогда не истекает | Не выявлено |
| Повтор сессии Mini App | `initData` проверяется по собственному выводу ключа при каждом запросе | Не выявлено |
| Подделанная доставка webhook | Режим webhook с проверкой секретного токена; long polling — явный резервный режим | Не выявлено |
| Повтор callback платежа или разрушительного действия | Механизм однократного использования `Once` (ниже) выдаёт токен единственного использования на callback | Не выявлено |

## Платежи и вебхуки

| Риск | Мера защиты | Остаточный риск |
| - | - | - |
| Подделанный webhook провайдера | Проверка подписи для каждого провайдера — например, `crypto-pay-api-signature` у CryptoBot, декодируется из hex и сравнивается за постоянное время с `HMAC-SHA256(SHA256(apiToken), body)` — [Платёжные провайдеры](https://omniflow-vpn.mintlify.site/ru/integrations/payments.md) | Адаптер без поддержки подписи документируется отдельно по провайдеру, а не предполагается по умолчанию |
| Повторная/дублированная доставка webhook | Каждая мутация платежа несёт ключ идемпотентности; шквал одновременных повторных доставок зачисляет ровно один раз, доказано под конкурентной нагрузкой в `internal/integrationtest/load_test.go` | Не выявлено |
| Слишком большое или искажённое тело webhook | Ограничение тела в 1 МиБ (`413 payload_too_large`), отклоняется с дайджестом тела и без утечки валидности подписи при искажённом вводе | Не выявлено |
| Утечка сохранённой полезной нагрузки webhook | Заголовки авторизации и подписи никогда не сохраняются; сырое тело хранится для сверки, но никогда не возвращается операторам через API, а строки событий удаляются через 30 дней после приёма — [Платёжные провайдеры](https://omniflow-vpn.mintlify.site/ru/integrations/payments.md#приём-вебхуков) | Не выявлено |

## RBAC администратора

| Риск | Мера защиты | Остаточный риск |
| - | - | - |
| Учётные данные клиента, достигающие маршрута оператора | Три префикса API никогда не разделяют middleware — `/v1/panel`, `/v1/admin`, `/v1/account` — утверждается тестом, а не только соглашением — [Безопасность](https://omniflow-vpn.mintlify.site/ru/operations/security.md#три-поверхности-учётных-данных) | Не выявлено |
| Скрытый маршрут или состояние фронтенда как единственная проверка права доступа | Авторизация живёт в `internal/rbac`, вкомпилирована, применяется одинаково на границе Next.js-сервера и в Go API — [AGENTS.md](https://github.com/kewldan/omniflow/blob/main/AGENTS.md) | Не выявлено |
| Повышение привилегий через самостоятельное присвоение роли | Только владелец может создать оператора или изменить назначения ролей | Скомпрометированная сессия владельца остаётся потолком — ни одна мера защиты по определению не рассчитана пережить это |
| Незамеченное злоупотребление | Каждое действие аутентификации, авторизации и настройки добавляется в журнал аудита в той же транзакции, что и изменение состояния, включая отказы в праве доступа | Поверхность bearer-токена `/v1/admin` пишет свои изменения в аудит под одним общим актором `operator-token` и не записывает чтения — см. «Идентичность» выше |

## SSRF

| Риск | Мера защиты | Остаточный риск |
| - | - | - |
| Сервер MCP, перенаправляющий запрос на metadata облака или внутренний хост | Исходящий трафик проверяется перед **каждым** запросом, а не только при регистрации; loopback, приватные и link-local адреса отклоняются, если явно не разрешена приватная сеть — [Подключения MCP](https://omniflow-vpn.mintlify.site/ru/operations/mcp.md#ограничения-и-исходящий-трафик) | Оператор, явно разрешивший доступ к приватной сети для самостоятельно размещённого сервера, принимает, что скомпрометированный сервер может просканировать порты этой сети |
| Незашифрованная конечная точка MCP | Отклоняется и валидацией на Go, и ограничением базы данных, поэтому ни один путь кода не может это обойти | Не выявлено |
| Исчерпание ресурсов через ответ | Таймаут 20 с, ограничение ответа 256 КБ, 8 вызовов на запрос, глубина рекурсии 3 — [Подключения MCP](https://omniflow-vpn.mintlify.site/ru/operations/mcp.md#ограничения-и-исходящий-трафик) | Не выявлено |

## AI

| Риск | Мера защиты | Остаточный риск |
| - | - | - |
| Данные клиента/платежей, попадающие к провайдеру AI без необходимости | Единый шлюз редактирования вырезает секреты, токены, ссылки на подписку, платёжные данные и лишние персональные данные до любого запроса к модели — [Приватность AI](https://omniflow-vpn.mintlify.site/ru/operations/ai-privacy.md) | Условия хранения/обучения провайдера фиксируются на основании того, что заявляет сам провайдер; Omniflow не может независимо проверить соответствие провайдера — [Управление AI](https://omniflow-vpn.mintlify.site/ru/operations/ai-governance.md#что-провайдер-делает-с-вашими-данными) |
| Функция AI, совершающая необратимое действие | Ни одна функция не может самостоятельно приостановить аккаунт, оформить возврат, скорректировать баланс кошелька или иначе изменить финансовое/неблагоприятное состояние; вывод анализа злоупотреблений требует проверки человеком — [Приватность AI](https://omniflow-vpn.mintlify.site/ru/operations/ai-privacy.md) | Не выявлено |
| Неограниченные расходы | Потолки на оператора, роль, функцию и всю установку — [Управление AI](https://omniflow-vpn.mintlify.site/ru/operations/ai-governance.md#лимиты-использования) | У установки без настроенных лимитов потолка нет; это осознанное значение по умолчанию, а не недосмотр |

## MCP

| Риск | Мера защиты | Остаточный риск |
| - | - | - |
| Вызов инструмента MCP, выходящий за пределы того, что может вызывающий оператор | Каждый вызов авторизуется по собственному праву доступа RBAC вызывающего оператора, никогда по служебной идентичности — [Подключения MCP](https://omniflow-vpn.mintlify.site/ru/operations/mcp.md#каждый-инструмент-отображается-на-право-доступа-которое-у-вас-уже-есть) | Не выявлено |
| Внешняя запись, на которую никто не соглашался | Инструмент, помеченный как изменяющий, требует явного подтверждения и причины при каждом вызове; флаг записи задаёт владелец, а не аннотация самого сервера | Не выявлено |
| Дублированная мутация из-за повторного вызова | Каждый изменяющий вызов инструмента требует ключ идемпотентности; повтор с тем же ключом возвращает первый результат, а не выполняется заново | Не выявлено |
| Вредоносный или скомпрометированный сервер, возвращающий результат, нарушающий схему | И аргументы, и результаты проверяются по объявленной JSON Schema; несовпадающий результат отклоняется, а не передаётся дальше | Не выявлено |

## Инъекция промптов

| Риск | Мера защиты | Остаточный риск |
| - | - | - |
| Результат инструмента MCP, обращение или вложение, несущее скрытые инструкции | Каждый внешний результат изолируется и представляется модели как цитата, а не инструкция; сканируется на паттерны переопределения, заявления роли, директив инструментов, эксфильтрации и скрытого текста; символы нулевой ширины вырезаются — [Подключения MCP](https://omniflow-vpn.mintlify.site/ru/operations/mcp.md) | Сканирование — вторичная защита поверх структурной изоляции; новая форма инъекции может не совпасть с известным паттерном до обновления сканирования |
| Собственное поле `instructions` сервера, перехватывающее поведение ассистента | Фиксируется только для отображения, никогда не передаётся модели | Не выявлено |

## Цепочка поставки

| Риск | Мера защиты | Остаточный риск |
| - | - | - |
| Скомпрометированный или подменённый образ релиза | Каждый образ подписывается бесключевым способом через cosign с использованием собственной OIDC-идентичности релизного workflow в GitHub, проверяемой по публичному журналу Rekor — [Совместимость и обновления](https://omniflow-vpn.mintlify.site/ru/operations/compatibility.md#версионирование-и-артефакты-релиза) | Не выявлено |
| Уязвимая зависимость, секрет или несовместимая по лицензии зависимость, попадающая в релиз | `govulncheck`, Gitleaks и сканирование зависимостей/лицензий Trivy закрывают сам релизный workflow — неудачное сканирование останавливает сборку образов целиком | Не выявлено |
| Уязвимость на уровне логики, которую сканирование зависимостей не видит | Семантический анализ CodeQL (Go и JavaScript/TypeScript) закрывает релизный workflow | SAST находит классы ошибок, а не все ошибки; он дополняет остальные сканирования, а не заменяет ручную проверку |
| Уязвимость, внесённая слоем базового образа | Каждый опубликованный образ сканируется по digest сразу после публикации | Это происходит после того, как образ достиг реестра, а не до — по-настоящему предпубликационный гейт потребовал бы перестройки на сборку-затем-скан-затем-публикацию для мультиархитектурной сборки, чего пока не сделано. Неудачное сканирование всё равно проваливает релизный workflow и помечает digest для удаления |
| Непроверенное обновление зависимости | Renovate автоматизирует обновления с гейтом одобрения через дашборд для мажорных/платформенных зависимостей | Не выявлено |

## Чего эта страница не покрывает

> [!WARNING]
>
> **Независимая проверка безопасности ещё не проводилась.** Всё на этой
> странице — собственный анализ мейнтейнеров собственного кода. Его не
> рецензировал никто без этого контекста, а именно такая рецензия скорее всего
> найдёт то, что авторы меры защиты не могут увидеть в ней сами. Это
> отслеживается как открытый пункт в разделе v1.0 «Безопасность и приватность»
> файла `ROADMAP.md`, а не подразумевается завершённым.

## Связанные страницы

> **[Безопасность](https://omniflow-vpn.mintlify.site/ru/operations/security.md)**
>
> Учётные данные, сессии, секреты, транспорт и заголовки в подробностях.

> **[Приватность](https://omniflow-vpn.mintlify.site/ru/operations/privacy.md)**
>
> Что хранит Omniflow, зачем и как долго.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.