Секреты

Перед локальной полной проверкой и в CI выполняется scripts/check-secrets.ps1. Он обходит корневой repository и все Git submodules, отклоняет отслеживаемые .env, private-key файлы, data/keys, .smoke и узнаваемые форматы AWS/GitHub/Hawk credentials. Файлы-шаблоны .env.example, .env.sample и .env.template разрешены только без реальных секретов.
  • production .env хранится вне Git;
  • S3 access/secret key остаются на backend;
  • launcher.api_secret не попадает в Electron;
  • OAuth/code secrets имеют достаточную случайность и периодически ротируются;
  • signed URLs выдаются только авторизованному launcher и только для разрешённых paths.

Desktop bundle

Production main process компилируется Electron Vite в V8 bytecode; исходный main bundle после сборки удаляется. Это усложняет поверхностный анализ, но не считается границей хранения секретов — всё клиентское содержимое потенциально доступно владельцу компьютера. Sandboxed preload намеренно остаётся минимальным JavaScript bundle. Bytecode loader использует относительный require, который Electron sandbox выполняет из внутреннего sandbox_bundle, поэтому включение bytecode для preload приводит к module not found: ./bytecode-loader.cjs. Отключать sandbox ради обфускации нельзя. npm run build проверяет обе части автоматически: main обязан иметь .jsc и loader, а preload — не должен ссылаться на них.

Файлы клиента

  • profile ограничивает managed scope;
  • manifest задаёт size и SHA-256;
  • Scanner не изменяет файлы;
  • Downloader проверяет hash до атомарной установки;
  • exclusions имеют приоритет и не удаляются;
  • path traversal и symlink escape запрещены.

Процесс игры

  • отключается Java Attach API;
  • environment Java injection variables удаляются;
  • Guardian использует Job Object и module allowlist;
  • protected files перепроверяются во время игры;
  • нарушение завершает всё игровое дерево.

Что остаётся серверу

Клиентская защита может быть обойдена на машине, которую полностью контролирует атакующий. Критичные правила игры, экономика, movement validation и наказания должны проверяться сервером.
Не документируйте и не логируйте реальные секреты, полные access tokens, cookies, raw hardware identifiers или private signed URLs.