Security Week 2444: браузерный zero-day на сайте криптовалютной игры
На прошлой неделе в Индонезии прошла очередная конференция по кибербезопасности Security Analyst Summit, организованная «Лабораторией Касперского». Один из ключевых докладов конференции был посвящен истории обнаружения уязвимости нулевого дня в браузере Google Chrome еще в мае этого года. С помощью уязвимости атаковались посетители веб-сайта онлайн-игры, использующей инструменты децентрализованного финансирования. Подробный анализ двух уязвимостей, приводящих к выполнению произвольного кода на компьютере жертвы, также был опубликован на сайте Securelist.
Атака атрибутирована как принадлежащая группировке Lazarus, жертвами которой регулярно становятся пользователи криптовалют и связанных с ними сервисов. Данная атака не является исключением и представляет интерес сама по себе: для максимальной правдоподобности организаторы использовали украденный код реальной многопользовательской игры «про танки». Но не менее ценно и подробное описание уязвимостей. В подавляющем большинстве случаев в публичный доступ попадает лишь скупое описание проблемы от разработчика. В данном случае презентация на SAS и публикация разбирают дыру в компиляторе JavaScript во всех деталях.
История началась в мае 2024 года, когда была обнаружена новая атака, в конечном счете приводящая к запуску известного инструмента группировки Lazarus — многофункционального бэкдора Manuscrypt. На сайте игры DeTankZone предлагалось скачать пробную версию онлайновой игры, а пользователям была обещана работа по схеме play-to-earn, с выплатами в криптовалюте. Впрочем, сама игра была размещена на сайте лишь для отвода глаз. Сам сайт содержал вредоносный код, последовательно задействовавший пару уязвимостей в браузере Google Chrome, что приводило к выполнению произвольного кода.
Для распространения игры была проведена комплексная кампания: были созданы учетные записи в соцсетях (X/Twitter и LinkedIn), с которых игру активно рекламировали популярным персонам из мира криптовалют. Им были обещаны рекламные контракты, но по факту все, что требовалось атакующим — это посещение сайта игры. Специалисты «Лаборатории Касперского» сообщили о найденной уязвимости в Google, и те в течение двух дней выпустили патч. Активная фаза атаки продолжалась примерно с февраля по май 2024 года.
Формально «главная» уязвимость CVE-2024–4947 относится к JavaScript-движку V8 в Google Chrome. На данный момент для выполнения кода JavaScript в V8 используются интерпретатор и один из трех компиляторов. Несколько Just-In-Time-компиляторов используются в целях оптимизации. Так, компилятор под кодовым именем TurboFan генерирует машинный код медленно, но итоговый результат оптимизирован для максимальной производительности. Компилятор Sparkplug генерирует неоптимизированный код, зато делает это максимально быстро. Добавленный в V8 в конце 2023 года (начиная с Chrome 117) компилятор Maglev представляет нечто среднее: и скорость компиляции достаточно высокая, и оптимизация на уровне. Уязвимость обнаружена именно в нем.
Ошибка (подробно описанная в исходной публикации) вызывает путаницу типов, что в свою очередь приводит к повреждению памяти. В итоге злоумышленники получают доступ на чтение и запись ко всему адресному пространству процесса Google Chrome. Этого, впрочем, недостаточно: требуется также обойти «песочницу» V8, созданную специально для того, чтобы пресекать эксплуатацию уязвимостей в движке.
Уязвимость в sandbox из-за отсутствия определенных проверок инструкций в коде JavaScript позволяет обратиться к памяти за пределами «песочницы» в режиме чтения и записи. Данная проблема не имеет идентификатора CVE и была закрыта в марте 2024 года. Остается неизвестным, использовала ли ее группировка Lazarus в качестве уязвимости нулевого дня, или же эксплуатация началась уже после появления патча. Для развития атаки злоумышленникам требовались иные уязвимости, позволяющие повысить привилегии в системе. Эта часть атаки не была исследована. На такое расследование потребовалось бы время, и было принято решение как можно быстрее передать информацию об основной уязвимости в движке V8 в компанию Google.
Дополнительным квестом в данном расследовании стала сама игра: демоверсия, распространяемая на вредоносном сайте, не являлась вредоносной, но и не работала, причем виной тому была серверная часть. Авторы отчета провели обратную разработку вызовов к серверу и написали свой собственный сервер, с которым игру все-таки удалось запустить.
Таким образом, игра оказалась (полу)рабочей, и это можно было бы считать первым случаем, когда злоумышленники для проведения атаки разработали настоящую игру. Но на самом деле код игры был украден. Настоящая игра называлась DefitankLand. Курс связанной с ней криптовалюты DFTL2 обвалился после того, как 2 марта кошелек разработчиков был взломан и из него украдены «криптомонеты» на сумму 20 тысяч долларов США. В сообщении говорилось, что в краже замешан инсайдер, но можно предположить, что эта легитимная «криптоигра» была взломана группировкой Lazarus. Была похищена криптовалюта, но также и исходный код игры, который был слегка переделан и адаптирован для вредоносной кампании.
В заключение специалисты «Лаборатории Касперского» отмечают, что оптимизация движка JavaScript, создание новых компиляторов приводит к появлению новых уязвимостей. В борьбе с этими уязвимостями может помочь та самая «песочница» для движка V8, когда ее код будет избавлен от «детских болезней». Отдельно отмечается изобретательность злоумышленников из группировки Lazarus, применяющих в кибератаках самые свежие технологии.
Что еще произошло
Еще одна публикация экспертов «Лаборатории Касперского» разбирает банковский троян Grandoreiro, нацеленный на пользователей в Бразилии.
Опасная уязвимость обнаружена в свободной библиотеке LibRAW для работы с файлами формата RAW различных фотокамер.
Октябрьский набор патчей для смартфонов Samsung закрывает серьезную уязвимость в процессорах Samsung Exynos. Уязвимость уже используется в реальных атаках и может приводить к повышению привилегий.