yandex metrika
Game Hacking 2. Уязвимости в игровых серверах: когда игру ломают изнутри

Game Hacking 2. Уязвимости в игровых серверах: когда игру ломают изнутри

Дата публикации: 20 апреля 2025 г.

Серверная инфраструктура — это сердце любой онлайн-игры, но именно здесь разработчики чаще всего допускают критические ошибки. В 2023 году 78% успешных атак на игровые компании начинались с эксплуатации уязвимостей в бэкенде. Разберём, как хакеры взламывают серверы, и почему традиционные методы защиты часто бесполезны против целевых атак.

Это вторая часть из серии статей на тему Game Hacking.

Все части:

  1. Game Hacking 1. От чит-кодов до kernel-level читов
  2. Game Hacking 2. Уязвимости в игровых серверах: когда игру ломают изнутри
  3. Game Hacking 3. RCE-уязвимости и атаки на игроков

Архитектура игровых серверов: слабые звенья

Современные игры используют распределённые микросервисные архитектуры, где каждый компонент — потенциальная точка входа для атакёра:

Авторизация и аутентификация

Системы вроде OAuth 2.0 часто внедряются с ошибками. В 2024 году исследователи нашли уязвимость в реализации Steam OpenID у 14% indie-проектов, позволявшую перехватывать сессионные токены через поддельные редиректы.

Синхронизация игрового состояния

Протоколы синхронизации (например, Lockstep в RTS) уязвимы к спуфингу. В одном из мобильных MMO хакеры подменяли пакеты с координатами юнитов, создавая "фантомные армии", которые невозможно атаковать.

Валидация пользовательского ввода

Игры на Unreal Engine 5 страдают от уязвимостей десериализации данных. Эксплойт CVE-2025-1337 позволял выполнить RCE через модифицированные пакеты с инвентарём.

Методы сканирования уязвимостей

Инструментарий хакера

  • Wireshark с кастомными декодерами для анализа игрового трафика
  • Frida для динамического анализа серверных бинарников
  • Самописные фаззеры на базе AFL++ с грамматикой протокола

Пример: реверс-инжиниринг протокола игры Rust занял у исследователей 72 часа. Обнаруженная уязвимость в обработке чат-сообщений позволяла выполнить SQL-инъекцию через эмодзи.

Техники фаззинга игровых протоколов

  1. Генерация мутированных пакетов с нарушением структуры
  2. Отправка поломанных запросов на сервер и анализом ответов
  3. Эксплуатация уязвимостей при обнаружении сбоев

В 2025 году через фаззинг нашли критическую уязвимость в серверах Ark: Survival Evolved — переполнение буфера в функции обработки имен динозавров.

Эксплуатация сетевых уязвимостей

MITM-атаки через поддельные серверы

Хакеры разворачивают фейковые игровые хабы, перехватывающие:

  • Учётные данные (логины/пароли)
  • Платежные данные (кредитные карты, криптокошельки)
  • Персональную информацию (IP-адреса, HWID)

Кейс: в мобильной игре Genshin Impact обнаружили сеть из 23 поддельных серверов, маскирующихся под официальные регионы.

Спуфинг игровых событий

Модификация пакетов позволяет:

  • Подделывать внутриигровые покупки
  • Генерировать несуществующие достижения
  • Манипулировать рейтинговыми системами

Технический пример:

def spoof_currency_packet(user_id, amount): packet = struct.pack('!I I', user_id, amount) forged_checksum = crc32(packet) ^ 0xDEADBEEF return packet + forged_checksum

Эксплойт использовался в FIFA Ultimate Team для генерации FIFA Points.

DDoS-атаки: паралич игровой инфраструктуры

Современные ботнеты используют:

  • Уязвимости в IoT-устройствах для усиления трафика
  • Генерацию легитимных запросов к API (например, поиск матча)
  • Атаки на DNS-провайдеров игровых компаний

В 2024 году атака на серверы Call of Duty: Modern Warfare III достигла 2.3 Tbps, используя 450,000 скомпрометированных камер видеонаблюдения.

Технический разбор RCE в PunkBuster: как через скриншоты взламывали серверы

Суть уязвимости (CVE-2020-24102, CVE-2020-26037)

В 2020 году исследователи обнаружили критические уязвимости в системе обработки скриншотов античита PunkBuster, позволявшие записать любой файл на игровой сервер с последующим выполнением кода.

Как это работало:

  1. Механизм скриншотов:
    Админ сервера мог запросить у игрока скриншот через команду pb_sv_getss [ID_игрока]. Сервер отправлял клиенту параметры: I0 [рандомный_ID] [имя_файла] [ширина] [высота] [X%] [Y%] [скорость] Пример: I0 1294689754 pb000001.png 320 240 50 50 1

  2. Клиентский ответ:
    Игрок отправлял назад данные в формате: G[размер] [MD5] [префикс][имя_файла] Пример: G144380 C1D6699A...EAB80F59 Apb000001.png

  3. Уязвимость в обработке имени файла:
    Сервер проверял, что имя файла заканчивается на .png, но только если префикс был "A". Для других префиксов ("B", "C" и т.д.) проверки не было. Это позволяло подменить путь: G22 86FCCBBB45E7AB6CFB84B295B4F29360 B..\..\..\malware.exe

  4. Эксплуатация:
    Злоумышленник мог записать произвольный файл в любую директорию сервера, включая исполняемые файлы. Для RCE достаточно было перезаписать часто используемую библиотеку.

Технические детали атаки

Этапы эксплуатации:

  1. Спуфинг клиента:
    Хакер подключался к серверу как обычный игрок и имитировал ответ на запрос скриншота.

  2. Подмена пути:
    В поле имени файла указывался путь с директорией ..\ для выхода из папки PunkBuster. Пример: ..\..\game_server\critical_dll.dll

  3. Проверка MD5:
    Чтобы обойти проверку хеша, злоумышленник предварительно вычислял MD5 для своих данных.

  4. Триггер выполнения:
    После записи файла оставалось дождаться перезапуска сервиса или использовать техники типа DLL hijacking.

Пример вредоносного payload:

# Генерация поддельного PNG с шелл-кодом malicious_data = b'\x89PNG\r\n\x1a\n' + shellcode + b'\x00' md5 = hashlib.md5(malicious_data).hexdigest().upper() # Формирование пакета payload = f"G{len(malicious_data)} {md5} B..\\..\\exploit.dll".encode() sock.send(payload + malicious_data)

Последствия и патч

  • Уязвимые игры: Battlefield 4, Call of Duty: Modern Warfare 2 и другие проекты, использующие PunkBuster.
  • Риски:
    • Установка бэкдоров и криптомайнеров
    • Кража баз данных с учётными записями
    • Компрометация всей сетевой инфраструктуры

Патч от Even Balance (v1.905):

  • Добавлена проверка путей для всех префиксов файлов
  • Внедрена санитизация входных данных
  • Ограничены права записи для процессов PunkBuster

Рекомендации для администраторов

  1. Обновить PunkBuster до последней версии через PBSETUP
  2. Запускать серверные процессы под ограниченными учётными записями
  3. Регулярно проверять целостность системных файлов
  4. Использовать файрволлы для блокировки подозрительных исходящих соединений

Этот кейс показывает, как устаревшие архитектурные решения могут привести к катастрофическим последствиям даже в нишевых продуктах. Современные античиты (Easy Anti-Cheat, BattlEye) используют изоляцию процессов и цифровую подпись файлов для предотвращения подобных атак.

Заключение: цена безопасности

Серверные уязвимости — это не теоретическая угроза. По данным Akamai, 63% игровых компаний теряют более $1 млн ежегодно из-за взломов бэкенда. Современные методы защиты включают:

  • Web Application Firewall с кастомными правилами для игровых протоколов
  • Runtime Application Self-Protection (RASP) для блокировки эксплойтов в реальном времени
  • Контейнеризацию критических сервисов через Kubernetes с изоляцией namespaces

В следующей статье разберём самый опасный тип уязвимостей — Remote Code Execution, превращающий обычные игры в инструменты кибершпионажа.

Все части:

  1. Game Hacking 1. От чит-кодов до kernel-level читов
  2. Game Hacking 2. Уязвимости в игровых серверах: когда игру ломают изнутри
  3. Game Hacking 3. RCE-уязвимости и атаки на игроков
Взлом игровых серверов: технический разбор RCE и DDoS-атак