К содержимому
Tickwise

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

Что агент может — и чего не может никогда

Модель угроз Tickwise простым языком: агент не выполняет команды, пакет сигнатур подписан Ed25519, логи очищаются на сервере до отправки.

На странице

Агент Tickwise работает внутри вашего сервера и читает его логи, а логи — это в том числе данные игроков. Поэтому продукт устроен так, чтобы облаку Tickwise не нужно было доверять больше необходимого: агент не умеет выполнять команды, секреты не покидают сервер, а диагнозы ставятся по подписанному пакету сигнатур.

Здесь простыми словами описано, что агент может и чего не может, что уходит в облако и что будет, если облако взломают.

0
команд, которые агент может выполнить на вашем сервере
Ed25519
подпись пакета сигнатур; ключ хранится офлайн, не на серверах Tickwise
7 дней
максимальный срок хранения фрагментов логов в облаке
РФ
где хранятся данные облака, включая бэкапы

Агент не выполняет команды

В коде агента нет ничего, что могло бы запустить shell, выполнить консольную команду Minecraft или загрузить код по указанию облака. Это не настройка, а архитектурное решение: проверка в сборке падает, если в коде агента или облака появляются ProcessBuilder, Runtime.exec, dispatchCommand или URLClassLoader.

Что из этого следует для вас:

  • в закрытой beta агент работает только на чтение, автоисправлений нет;
  • Telegram-бот управляет уведомлениями и инцидентами, но не вашими серверами;
  • агент не обновляет себя сам: новую версию ставите вы, заменив jar в plugins/.

Что уходит в облако

До команды tickwise link агент ничего не отправляет. После привязки уходят:

  • метрики по минутам: TPS, MSPT, память, GC, CPU, диск, число игроков;
  • версии платформы, Java и плагинов;
  • значения только тех ключей конфигов, что есть в открытом allowlist; ключи, похожие на секреты (pass, secret, token, key и т. п.), передаются только как «есть / длина»;
  • ошибки: отпечаток, шаблон и счётчик;
  • санитизированные фрагменты логов для новых ошибок без известной сигнатуры — до 16 КиБ каждый, по умолчанию не больше 20 в час.

Никогда не отправляются чат и личные сообщения, аргументы команд игроков, пароли и токены, forwarding secret Velocity (агент читает его только затем, чтобы вычёркивать из логов), IP-адреса, UUID и ники в открытом виде. IP, UUID и ники заменяются псевдонимами с солью, которая хранится только на вашем сервере. Санитайзер работает на сервере до отправки и повторно — в облаке.

Отправку можно сузить в config.yml: privacy.send_log_excerpts, privacy.send_player_counts, privacy.send_jar_hashes (по умолчанию выключен) и privacy.ip_mode: drop, чтобы IP удалялись, а не хешировались.

Честное ограничение: секрет короче 32 символов в нестандартном формате и без подсказки вроде password= санитайзер может не распознать. Поэтому фрагменты логов отправляются редко и хранятся коротко.

Подписанный пакет сигнатур

Известные проблемы агент распознаёт сам, по пакету сигнатур. Пакет подписывается ключом Ed25519, который хранится офлайн у мейнтейнера — не на серверах облака и не в CI. Агент проверяет подпись и хеш каждого скачанного пакета. Если проверка не прошла, пакет отклоняется, агент возвращается к предыдущему или встроенному в jar и сообщает об этом облаку.

AI-диагноза в beta нет: причины берутся только из проверенных сигнатур и правил облака. Содержимое логов считается недоверенным: регулярные выражения работают на RE2/J с линейным временем, а текст из логов показывается как обычный текст.

Привязка и токены

  • Код привязки одноразовый и действует 15 минут. Даже принятый ботом код ничего не даёт без tickwise link confirm в вашей консоли, а бот перед этим показывает имя, версию и замаскированный IP агента.
  • Право tickwise.owner на привязку не выдаётся автоматически даже операторам. В группе Telegram привязывать серверы и менять настройки могут только администраторы чата.
  • Токен агента лежит в credentials.json на сервере, а облако хранит только его SHA-256. Токен разрешает отправлять данные одного сервера, и ничего больше.
  • Если токен украли, злоумышленник сможет присылать мусорные данные этого сервера. Нажмите «🔌 Отвязать» в карточке сервера в боте — токен будет отозван.
  • Каждый запрос облака к данным ограничен организацией вашего чата: чужие серверы и инциденты через бота не открыть.

Если облако Tickwise взломают

Мы исходим из того, что это может случиться, и проектируем так, чтобы последствия были ограничены.

Что сможет злоумышленникПочему
Прочитать санитизированные данные: метрики, версии, отпечатки ошибок, фрагменты логов за последние 7 днейони хранятся в базе облака. Паролей и токенов там нет, IP и ники — только псевдонимы
Получить пароли и ключи с вашего сервера — нетагент их не отправляет, а команды «прочитать файл» не существует
Выполнить команду на вашем сервере — неттакого кода в агенте нет
Подменить пакет сигнатур — нетключ подписи офлайн, агент отклонит пакет с неверной подписью
Выпустить вредоносное обновление агента — нетагент не обновляется через облако
Прислать фальшивое уведомление в Telegramбот принадлежит облаку

Где и сколько хранятся данные

Облако и все базы данных, включая бэкапы, находятся в России. Соль псевдонимизации никогда не покидает ваш сервер, поэтому по данным облака нельзя восстановить IP или ник игрока и сопоставить игрока между разными серверами.

ДанныеСрок хранения
Фрагменты логов7 дней
Метрики по минутам14 дней
Метрики по часам395 дней
События агента, счётчики ошибок90 дней
Ссылка на страницу инцидента30 дней

Секреты ваших серверов облако не хранит вовсе, потому что не получает их.

Чего Tickwise не защищает

Агент работает в той же JVM, что и остальные плагины, а Bukkit не изолирует плагины друг от друга. Вредоносный плагин на вашем сервере может прочитать токен агента и сделать с сервером что угодно и без Tickwise. Защиты от уже установленного вредоносного плагина у нас нет. Ставьте плагины только из источников, которым доверяете.

Как проверить самому

  • Код агента открыт: всё, что написано на этой странице, можно проверить в исходниках.
  • tickwise privacy в консоли показывает, что отправляется при текущих настройках и что ушло в последнем батче.
  • tickwise pause [мин] временно останавливает отправку, tickwise unlink — полностью. Локальная диагностика при этом продолжает работать.

Подробнее о данных — на странице Конфиденциальность, об установке — в инструкции, о боте — на странице Telegram-бот.