Введение
Lazarus APT и его подгруппа BlueNoroff – высокотехнологичные и многогранные корейскоязычные субъекты угрозы. Мы внимательно следим за их действиями и часто наблюдаем, как они используют свое фирменное вредоносное ПО в своих атаках – полнофункциональный бэкдор под названием Manuscrypt. По нашим данным, Lazarus использует это вредоносное ПО как минимум с 2013 года, и мы задокументировали его применение в более чем 50 уникальных кампаниях, направленных на правительства, дипломатические организации, финансовые учреждения, военнослужащих и оборонных подрядчиков, криптовалютные платформы, операторов ИТ и телекоммуникаций, игровые компании, средства массовой информации, казино, университеты и даже на исследователей по безопасности – список можно продолжать.
13 мая 2024 года наш потребительский антивирус Kaspersky Total Security обнаружил новую инфекцию Manuscrypt на персональном компьютере человека, проживающего в России. Поскольку Lazarus редко атакует частных лиц, это вызвало наш интерес, и мы решили присмотреться повнимательнее. Мы обнаружили, что до обнаружения Manuscrypt наши технологии также обнаружили уязвимость в веб-браузере Google Chrome, исходящую с веб-сайта detankzone[. ]com. На первый взгляд, этот веб-сайт напоминал профессионально оформленную страницу продукта для децентрализованного финансового (DeFi) проекта NFT (невзаимозаменяемый токен) в жанре многопользовательской онлайн-игры с танками (MOBA), призывающего пользователей загрузить пробную версию. Но это был всего лишь камуфляж. Под прикрытием этот веб-сайт имел скрытый сценарий, который работал в браузере Google Chrome пользователя, запуская эксплойт нулевого дня и давая злоумышленникам полный контроль над ПК жертвы. Посещения веб-сайта было достаточно, чтобы заразиться – игра была лишь отвлекающим маневром.
Мы смогли извлечь первый этап атаки – эксплойт, выполняющий удаленное исполнение кода в процессе Google Chrome. Подтвердив, что эксплойт основан на уязвимости нулевого дня, нацеленной на последнюю версию Google Chrome, мы сообщили о наших выводах в Google в тот же день. Два дня спустя Google выпустила обновление и поблагодарила нас за обнаружение этой атаки.
Подтверждение обнаружения CVE-2024-4947 (отрывок из исправлений безопасности, включенных в Chrome 125. 0. 6422. 60)
| Тип | Уровень | Уязвимость |
|—|—|—|
| V8 | Высокий | CVE-2024-4947: Вне границ индекса массива в исполняющей системе Ignition JavaScript |
Сообщив Google об обнаруженной уязвимости, мы следовали ответственной политике раскрытия уязвимостей и воздержались от публикации конкретных деталей, дав пользователям достаточно времени для установки исправления. Этот подход также предназначен для предотвращения дальнейшего использования хакерами. Google предприняла дополнительные шаги, заблокировав detankzone[. ]com и другие веб-сайты, связанные с этой кампанией, гарантируя, что любой, кто попытается получить доступ к этим сайтам – даже без наших продуктов – будет предупрежден об их вредоносном характере.
В то время как мы уважали запрос Google о периоде раскрытия, 28 мая 2024 года Microsoft опубликовала сообщение в блоге под названием “Moonstone Sleet Emerges as New North Korean Threat Actor with New Bag of Tricks”, которое частично раскрыло наши выводы. Согласно сообщению в блоге, Microsoft также отслеживала кампанию и связанные веб-сайты с февраля 2024 года. Однако их анализ упустил ключевой момент в этой вредоносной кампании: наличие эксплойта браузера и тот факт, что это была серьезная проблема – нулевой день. В этом отчете мы подробно рассмотрим уязвимости, которыми воспользовались злоумышленники, и игру, которую они использовали в качестве приманки (спойлер: нам пришлось создать свой собственный сервер для этой онлайн-игры).
Эксплойт
Веб-сайт, использованный злоумышленниками в качестве прикрытия для своей кампании, был разработан в TypeScript/React, и один из его tsx-файлов содержал небольшой фрагмент кода, который загружает и выполняет эксплойт Google Chrome.
Фасад веб-сайта и скрытый загрузчик эксплойта
| Имя файла | Расположение | Описание |
|—|—|—|
| index.tsx | https://detankzone[. ]com/index.html | Содержит скрытый эксплойт загрузчик |
Эксплойт содержит код для двух уязвимостей: первая используется для получения возможности чтения и записи памяти процесса Chrome с помощью JavaScript, а вторая используется для обхода недавно введенной песочницы V8.
Первая уязвимость (CVE-2024-4947)
Ядром каждого веб-браузера является его движок JavaScript. JavaScript-движок Google Chrome называется V8 – собственный движок JavaScript с открытым исходным кодом от Google. Для меньшего потребления памяти и максимальной скорости V8 использует довольно сложный конвейер компиляции JavaScript, в настоящее время состоящий из одного интерпретатора и трех компиляторов JIT.
Когда V8 начинает выполнять JavaScript, он сначала компилирует скрипт в байт-код и выполняет его с использованием интерпретатора Ignition. Ignition – это регистровая машина с несколькими сотнями инструкций. Во время выполнения байт-кода V8 отслеживает поведение программы и может JIT-компилировать некоторые функции для повышения производительности. Наилучший и самый быстрый код создается TurboFan, высокооптимизирующим компилятором с одним недостатком – генерация кода занимает слишком много времени. Тем не менее, разница в производительности между Ignition и TurboFan была настолько существенной, что в 2021 году был представлен новый неоптимизирующий JIT-компилятор под названием Sparkplug, который компилирует байт-код в эквивалентный машинный код почти мгновенно. Сгенерированный Sparkplug код работает быстрее, чем интерпретатор, но разрыв в производительности между сгенерированным Sparkplug и TurboFan все еще был большим. Из-за этого в Chrome 117 (выпущенном в четвертом квартале 2023 года) разработчики представили новый оптимизирующий компилятор, Maglev, цель которого – генерировать достаточно хороший код достаточно быстро, выполняя оптимизации на основе исключительно отзывов от интерпретатора. CVE-2024-4947 (проблема 340221135) – это уязвимость в этом новом компиляторе.
Чтобы понять эту уязвимость и то, как она была использована, давайте рассмотрим код, который злоумышленники использовали для ее запуска.
import * as moduleImport from ‘export var exportedVar = 23;’;
function trigger() {
moduleImport.exportedVar;
const emptyArray = [1, 2];
emptyArray.pop();
emptyArray.pop();
const arrHolder = {xxarr: doubleArray, xxab: fakeArrayBuffer};
function f() {
try {
moduleImport.exportedVar = 3.79837e-312;
} catch (e) {
return false;
}
return true;
}
while (!f()) {}
weakRef = new WeakRef(moduleImport);
return {emptyArray, arrHolder};
}
В этом коде видно, что он сначала получает доступ к экспортированной переменной exportedVar модуля moduleImport, а затем создает массив emptyArray и словарь arrHolder. Однако, похоже, что с ними не производится реальная работа, они просто возвращаются функцией trigger. И тут происходит нечто интересное – функция f выполняется до тех пор, пока не вернет “true”. Однако эта функция возвращает “true” только в том случае, если она может установить экспортированную переменную moduleImport.exportedVar в значение “3.79837e-312”, и если происходит исключение из-
Пульс Новости 8.71 из 10
- Значимость новости: 10/10 – Новость рассказывает об обнаружении нового эксплойта, который использовался для кражи криптовалюты с использованием компьютерной игры. Это высокозначимая новость, поскольку она может повлиять на безопасность криптовалютных кошельков и бирж.
- Инновационная ценность новости: 9/10 – Данная новость раскрывает новую технику, используемую хакерами для получения контроля над компьютерами жертв, что является иннованием в области кибербезопасности.
- Потенциальное влияние новости на рынок: 8/10 – Новость может привести к снижению доверия к криптовалютной индустрии, поскольку демонстрирует, что даже крупные компании, такие как Google, могут быть уязвимы для кибератак. Это, в свою очередь, может повлиять на рыночные цены и привести к снижению инвестиций в криптовалюту.
- Релевантность новости: 9/10 – Новость напрямую связана с криптовалютным рынком, поскольку она касается использования компьютерной игры для кражи криптовалюты.
- Актуальность новости: 10/10 – Новость описывает недавнюю атаку, что делает ее актуальной и своевременной.
- Достоверность новости: 9/10 – Новость опубликована авторитетным источником по кибербезопасности и содержит технические подробности и индикаторы компрометации, подтверждающие ее достоверность.
- Общий тон новости: 7/10 – Тон новости в целом нейтральный и информативный, но она также предупреждает об угрозах, исходящих от хакеров.