Уязвимость, отслеживаемая как CVE-2021-38003, содержалась в открытом движке JavaScript от Google, известном как V8, используемом в Dota 2. Разработчики в Google исправили ее еще в октябре 2021 года, однако компания Valve с тех пор не обновляла программное обеспечение, сохраняя уязвимость. Месяц назад исследователи из Avast предупредили ее, что критическая уязвимость стала мишенью.

Интересно Reddit взломали: похищен исходный код и некоторые внутренние данные

Что произошло

Хакер воспользовался опрометчивостью Valve, создав особый игровой режим, эксплуатировавший уязвимость. Позже он создал еще три таких.

Первый игровой режим, похоже, потребовался для проверки возможности использования уязвимости. В него был встроен код эксплойта для CVE-2021-38003, который легко обнаружить. Он назывался "test addon plz ignore" (ID 1556548695) и содержал описание, призывающее людей не загружать и не устанавливать его.

Остальные три:

  • "Overdog no annoying heroes" (id 2776998052).
  • "Custom Hero Brawl" (id 2780728794).
  • "Overthrow RTZ Edition X10 XP" (id 2780559339).

Вредоносный код в этих трех новых игровых режимах более "изящный" и не содержит ни одного JavaScript-эксплойта, который можно было бы непосредственно увидеть. Вместо этого есть бэкдор, состоящий из около двадцати строк кода. Он может выполнять произвольный JavaScript, загруженный через HTTP, что дает злоумышленнику возможность не только скрыть код эксплойта, но и обновить его по своему усмотрению без необходимости обновлять пользовательский игровой режим.

Сервер, к которому обращались эти три режима, уже не работал, когда исследователи Avast обнаружили эти режимы. Вероятно, разработчик сам решил прекратить использование уязвимости.

Как работал бекдор:

  • Жертва заходит в игру, играя в одном из вредоносных игровых режимов.
  • Игра загружается как обычно, но в фоновом режиме вредоносный JavaScript связывается с сервером игрового режима.
  • Код сервера игрового режима обращается к C&C-серверу бэкдора, загружает фрагмент JavaScript-кода (вероятно, эксплойт для CVE-2021-38003) и возвращает загруженный код обратно жертве.
  • Жертва динамически выполняет загруженный JavaScript. Будь это эксплойт для CVE-2021-38003, это привело бы к выполнению командного кода на компьютере жертвы.

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

Во-первых, злоумышленник не сообщил об уязвимости Valve (что обычно считается хорошим поступком). Во-вторых, злоумышленник пытался скрыть эксплойт в скрытом бэкдоре,
– объяснили исследователи.

Представители Valve не ответили на просьбу прокомментировать эту историю.