Вразливість, що відстежується як 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 не відповіли на прохання прокоментувати цю історію.