Перейти к содержимому

Безопасность

Как 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-релизы в настоящее время не имеют цифровой подписи. Рекомендации по проверке релизов определяет политика подписи кода. Метка «Verified» у git-тега на GitHub не равна Authenticode-подписи исполняемого файла.