Skip to content

Модель безопасности

Varion считает server и official backend authority. Client scripts, local files, launcher state и UI state не являются trusted source для gameplay или production identity decisions.

Server authority

Проверяйте на server или backend:

  • inventory и economy changes
  • permissions и admin actions
  • teleport-like movement
  • health, damage и weapon actions
  • entity creation и ownership (client не мутирует remote entities)
  • resource manifests и file lists
  • server identity и masterlist trust state
  • cloud/early auth results

Transport encryption

Session traffic шифруется per-connection (src/network/CNetworkManager.cpp, src/crypto/):

  • key agreement — ECDH на кривой P-256 (BCRYPT_ECDH_P256_ALGORITHM), shared secret прогоняется через SHA-256 KDF в 256-bit session key;
  • payload — AES-256-GCM envelope (PacketType::EncryptedEnvelope) на каждый packet;
  • anti-replay — к plaintext добавляется 8-byte big-endian sequence, который аутентифицируется GCM и проверяется по sliding replay window; уже виденные или out-of-window sequences отбрасываются.

Encryption включен по умолчанию (encryptTransport = true в include/varion.h). Когда он включен, а client прислал transport pubkey, session устанавливается; если encryptTransport задан, но encryption установить не удалось, peer отключается (transport encryption required). Client отказывается от cleartext вне LAN; localhost/dev может остаться cleartext, когда encryption выключен. Сам HandshakeAck идет cleartext — client активирует session только после его разбора.

Connection gating

HandleHandshake пропускает соединение через набор проверок ДО того, как оно помечается authenticated:

  • protocolVersion должен совпадать с server PROTOCOL_VERSION;
  • channel (branch) должен совпадать с server channel;
  • gtaBuild должен равняться SUPPORTED_GTA_BUILD;
  • clientBuild должен быть не ниже minClientBuild (когда он задан);
  • если задан serverPassword — client обязан прислать совпадающий SHA-256 hex (сравнение constant-time; сам пароль не передается, только digest);
  • если useCloudAuth и cloudAuthRequired — client обязан прислать непустые cloud id и token (проверка присутствия; полная backend-валидация — следующий шаг).

Только после всех проверок соединение становится authenticated и player admit-ится. Handshake — единственный packet, принимаемый до аутентификации.

Дополнительно каждый peer проходит через per-peer rate limit (windowed packet-count guard, kRatePacketCap): при повторном превышении cap peer отключается (rate limit exceeded).

Client integrity

Client anti-tamper (CAntiTamper) собран под compile-gate VARION_HARDENED, который по умолчанию OFF (client/CMakeLists.txt). В обычных сборках он скомпилирован в no-op — не рассчитывайте на client-side anti-cheat как на authority; source of truth остается на server.

Protected internals

Public server developers не должны редактировать protected client internals, launcher internals, private CDN config, signing keys или platform source trees, чтобы создать сервер. Их stable surface: server.toml, resources/, sdk/, include/ и documented HTTP/masterlist endpoints.

HTTP file safety

Resource file routes работают по allowlist: сервер отдает только файлы, заранее объявленные в manifest (после percent-decode запрос сверяется с advertised URL). Path traversal, absolute paths и unknown paths просто не совпадают ни с одним advertised-элементом и получают 404. Объявленные stream/data paths с сегментами .. или absolute/root отбрасываются еще на загрузке ресурса.

Client HTTP safety

Client varion.HttpClient validates URLs before fetch:

  • protocol must be http или https
  • default game port (7788) blocked
  • host и port must match manifest HTTP base или asset-pack base

Local secrets

Runtime .gitignore и package filters защищают local-only files:

  • data/masterlist-token.txt
  • data/server-license.txt
  • .env files (*.env, .env, .env.*)
  • logs, cache и local database files

Safe templates .env.example, .env.sample и .env.template разрешены.

Source backing

Страница основана на include/varion.h, src/network/CNetworkManager.cpp, src/crypto/, client/CMakeLists.txt, tools/verify-platform-trust.ps1, runtime .gitignore и sdk/client-js-runtime/injected/services-bootstrap.js.

Varion Multiplayer Platform