Безопасность
Как Waxlight защищает учётные данные и как приватно сообщить об уязвимости.
Каноническая версия на английском: docs/SECURITY.md.
Сообщение об уязвимости
Заголовок раздела «Сообщение об уязвимости»Используйте приватную функцию сообщения об уязвимостях GitHub для этого репозитория. Если она недоступна — свяжитесь с владельцем через профиль GitHub и попросите приватный канал. Укажите затронутую версию Waxlight, ОС, шаги воспроизведения и влияние. Удалите из журналов пароли, ключи сессий, подписи, токены, email-адреса и прочие личные данные.
Команда подтвердит получение при первой возможности, воспроизведёт и оценит проблему, подготовит исправление с регрессионным тестом, где это осуществимо, и скоординирует раскрытие после появления у пользователей разумного пути обновления. Это небольшой независимый проект — фиксированный SLA не обещается.
Доказательства концепции должны использовать синтетические sentinel-значения. Не отправляйте реальные учётные данные даже по приватному каналу; более узкий безопасный обмен организуется только при крайней необходимости.
Область безопасности
Заголовок раздела «Область безопасности»Чувствительные к безопасности области:
- аутентификация Vintage Story и TOTP-потоки;
- локальное хранение сессионных учётных данных;
- распаковка архивов и проверка загруженных файлов;
- пути установки игры и модов;
- аргументы запуска процессов;
- обновления и релизные артефакты.
Постоянные сессионные учётные данные хранятся в Secret Service-совместимом хранилище на Linux и Windows Credential Manager на Windows. Продакшн не откатывается на файлы с открытым текстом. Пароли и TOTP-коды не сохраняются никогда. Устаревшие файлы account-secrets.json читает только ограниченная миграция, и удаляются они только после чтения и проверки каждого импортированного значения.
Граница модели угроз
Заголовок раздела «Граница модели угроз»Реализация рассчитана на сопротивление: другим непривилегированным локальным пользователям ОС, случайному включению секретов в обычные данные проекта, некорректным ответам серверов, небезопасным файлам миграции и попыткам фронтенда получить постоянные секреты.
Защита невозможна против: вредоносного ПО с теми же правами пользователя, скомпрометированного ядра, подключённого отладчика, враждебной реализации хранилища учётных данных или вредоносного билд-артефакта. Ни одно десктопное приложение не защитит учётные данные на полностью скомпрометированном хосте.
Удаление аккаунта из Waxlight удаляет локальные учётные данные и связи инстансов. Используемого эндпоинта отзыва сессий у Vintage Story нет, поэтому локальное удаление не означает отзыв удалённой сессии.
Экспорты и журналы
Заголовок раздела «Экспорты и журналы»- Waxlight может экспортировать редактированный журнал поддержки: чувствительные значения вырезаются, учётные данные, данные аккаунтов и приватные пути не включаются.
- Пакеты инстансов санитизируют
clientsettings.jsonи исключают ключи сессий, подписи, ID/имена игроков, MP-токены, пароли, секреты хранилища и токены аутентификации. - Эти значения запрещено добавлять в экспорты поддержки и обычные экспорты инстансов — это жёсткое правило проекта.
Поддерживаемые версии
Заголовок раздела «Поддерживаемые версии»Waxlight сейчас находится в раннем превью. Исправления безопасности предоставляются только для самого свежего опубликованного релиза.
Подпись Windows-релизов
Заголовок раздела «Подпись Windows-релизов»Windows-релизы в настоящее время не имеют цифровой подписи. Рекомендации по проверке релизов определяет политика подписи кода. Метка «Verified» у git-тега на GitHub не равна Authenticode-подписи исполняемого файла.