Секреты
Перед локальной полной проверкой и в 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.