Утечка данных
Как произошла утечка
Откуда взялись опубликованные данные и почему собственная панель Exoliner оказалась к ним открыта.
Откуда взялись данные
Экспорт панели (28 сентября 2026)
Всё на этом сайте экспортировали через собственную панель модераторов Exoliner: аккаунты пользователей, логи запуска скриптов, переписки по тикетам в Discord, записи модерации и собственный снимок статистики панели. Экспорт сделали несколькими выгрузками с правами staff из более чем одного источника.
Сопоставлено с более ранней утечкой (июнь 2025)
Более старый экспорт базы данных Exoliner за июнь 2025 добавили, чтобы заполнить пробелы экспорта панели: тысячи email аккаунтов, Discord ID, привязанные Roblox ID, отметки о подтверждённом email и точные даты регистрации, которые теперь показаны на странице аккаунтов.
Почему это оказалось возможным
Независимая оценка безопасности панели и API Exoliner показала, что любой аккаунт со staff-рангом мог выполнять неаудируемые операции по всей платформе, без ограничений на экспорт и без оповещений аудита. Данные ниже относятся только к панели и API. В оценке отмечено, что в основном сайте есть другие проблемы, которые здесь не описаны.
Почему это оказалось возможным
Оценка не нашла для постороннего способа проникнуть внутрь. Описанная в ней уязвимость состоит в масштабе последствий: любой аккаунт со staff-рангом мог выполнять неаудируемые операции записи в конфигурацию всей платформы, в том числе такую, которая могла разом сломать экзекьютор у каждого пользователя.
Что обнаружила оценка
Каждая находка описана по оценке панели и API Exoliner. Основной сайт она не охватывает: в ней отмечено, что в нём есть другие проблемы.
Критический
1Неаудируемая перезапись глобальных offsets
C-1В оценке сообщается, что PUT /v1/staff/offsets принимал любой staff-токен без проверки на владельца и не оставлял записи в аудите. Одним запросом заменялись offsets, от которых зависит экзекьютор каждого пользователя. При проверке общее число offsets упало с 401 до 1 за один вызов, без предпросмотра, подтверждения или одобрения.
Высокий
3Любой транскрипт поддержки доступен по ID
H-1GET /v1/staff/tickets/{id}/transcript, как сообщается, отдаёт любой тикет по последовательному целочисленному номеру без проверки владельца и раскрывает личные переписки целиком, включая Discord ID пользователей и вложения.
Удаление скриптов доступно для staff
H-2DELETE /v1/scripts/delete, как сообщается, возвращал успех на staff-токене без проверки владельца, что давало возможность удалить любой скрипт по ID без мягкого удаления и без записи в аудите.
Нет лимита запросов при полном переборе таблицы
H-3В оценке сообщается, что всю таблицу пользователей, 13,483 записи, выгрузили за 135 запросов за 25 секунд, и ни разу не сработало ограничение частоты запросов.
Средний
5Нет повторного подтверждения 2FA для привилегированных записей
M-1Offsets, execute, strike, переключатели игр, максимум игроков, настройки AI-проверки, данные модерации и мут чата, как сообщается, принимают обычный bearer-токен, поэтому украденной сессии не нужен второй фактор.
Токены на 30 дней, принудительного отзыва нет
M-2Токены, как сообщается, живут ровно 30 дней без эндпоинта обновления, а поле authVersion, которое позволило бы одним действием отозвать все сессии, возвращается, но на сервере не применяется.
Правила против обнаружения доступны для записи любому staff
M-3Эндпоинты moderation-intel, где хранятся правила Exoliner против обнаружения, как сообщается, принимают создание и удаление от любого staff-аккаунта, поэтому эти правила можно отключить или испортить.
Удалённые личные сообщения раскрыты для staff
M-4Эндпоинт аудита чата, как сообщается, раскрывает любому staff удалённые личные сообщения целиком: с текстом, ID адресата и сотрудником, который их удалил.
Раскрытие данных уровня staff
M-5Staff-эндпоинты, как сообщается, выдают оценку выручки, точное распределение рангов, Discord ID, полный журнал модерации, а также задержки и число серверов по каждому месту.
Низкий
5Слабая content-security-policy фронтенда
L-1Политика фронтенда, как сообщается, разрешает unsafe-inline и unsafe-eval без nonce, поэтому любая уязвимость межсайтового скриптинга могла бы прочитать staff-сессию из локального хранилища.
Сломанный поиск пользователей
L-2Каждый параметр поиска в эндпоинте пользователей, как сообщается, игнорируется, и всегда возвращается одна и та же нефильтрованная первая страница, поэтому staff может действовать не над теми аккаунтами.
Публичное раскрытие информации
L-3Эндпоинты health и stats без авторизации, как сообщается, раскрывают аптайм и текущие итоговые значения, а одинаковые тела ответов 404 позволяют перебрать таблицу маршрутов.
Серверные ошибки из-за путаницы типов
L-4Входные данные не строкового типа, как сообщается, вызывают необработанные ошибки 500 на нескольких эндпоинтах. Тела ошибок остаются чистыми, поэтому это скорее вопрос надёжности, чем раскрытия данных.
Дублирующее имя хоста бэкенда
L-5Два имени хоста, как сообщается, обслуживают одинаковые маршруты и авторизацию из одного процесса, что удваивает поверхность атаки и позволяет обойти список разрешённых для одного хоста через двойник.
Удобнее искать по записям? Смотреть аккаунты