Почти три месяца назад сообщество информационной безопасности столкнулось с новой угрозой - GlassWorm, первым самораспространяющимся червем, атакующим расширения для редактора кода VS Code. Его отличительной чертой было использование невидимых символов Юникода для сокрытия вредоносного кода. За прошедшее время эксперты отследили три волны атак этой группы: начальную с невидимыми символами, повторную, которая выявила реальных жертв, включая государственную структуру на Ближнем Востоке, и третью, где злоумышленники перешли на скомпилированные бинарные файлы на Rust.
Описание
Теперь они снова в строю. Новая, четвертая волна отличается масштабом: более 50 000 загрузок, стратегический переход с платформы Windows на macOS и полностью рабочая инфраструктура на момент публикации этого отчета.
Система мониторинга угроз компании Koidex, исследовавшей эту кампанию, изначально выделила три подозрительных расширения на маркетплейсе Open VSX. Поначалу они не были связаны с известными кампаниями. Однако затем аналитики обнаружили использование блокчейна Solana для командования и управления (C2, Command and Control). Трассировка инфраструктуры привела к знакомому IP-адресу - 45.32.151[.]157, тому же самому серверу C2, который использовался в третьей волне GlassWorm. Это подтвердило связь.
Техника с невидимыми символами Юникода, раскрытая в октябре, исчезла. Скомпилированные файлы на Rust из третьей волны также не используются. На этот раз полезная нагрузка (payload) зашифрована с помощью AES-256-CBC и встроена в скомпилированный JavaScript. Однако ядро механизма осталось прежним: вредоносный код запрашивает текущую конечную точку C2 из блокчейна Solana и исполняет полученные инструкции. Ключевым нововведением стала цель: код предназначен для замены легитимных приложений аппаратных кошельков на троянизированные версии.
Авторы GlassWorm не просто упорны - они эволюционируют. И теперь их цель - компьютеры Mac.
Стратегический переход: с Windows на macOS
Это самое значительное изменение в четвертой волне. Все предыдущие атаки GlassWorm нацеливались исключительно на Windows. Теперь же угроза ориентирована только на macOS.
Почему произошел этот сдвиг? Разработчики часто используют компьютеры Mac. Особенно это распространено в сферах криптовалют, web3 и стартапов - именно среди этих пользователей GlassWorm ищет своих жертв. Злоумышленники идут туда, где плавает рыба.
Это не простая адаптация старого кода. Полезная нагрузка для macOS создана с нуля и использует специфические для платформы техники. Например, для скрытного выполнения вместо PowerShell применяется AppleScript. Для обеспечения устойчивости (persistence) вместо ключей реестра и планировщика задач используются LaunchAgents. Также код напрямую обращается к базе данных связки ключей (Keychain) для кражи паролей. Это демонстрирует глубокое понимание злоумышленниками экосистемы macOS и указывает на профессиональный уровень работы.
Новый метод доставки: зашифрованный JavaScript
Первая волна использовала невидимые символы Юникода - буквально неотображаемый код, спрятанный в пробелах. Третья волна применяла скомпилированные бинарные файлы на Rust, требующие реверс-инжиниринга для анализа. Четвертая волна использует нечто иное: полезная нагрузка, зашифрованная с помощью AES-256-CBC, напрямую встраивается в скомпилированный JavaScript.
Исследователи обнаружили этот код на 64-й строке главного файла одного из расширений. Полезная нагрузка шифруется с использованием жестко заданного ключа и вектора инициализации (IV), причем один и тот же ключ использовался во всех трех расширениях, что подтверждает работу одного актора. Однако самым хитрым элементом стала 15-минутная задержка перед выполнением.
Большинство автоматизированных песочниц (sandbox) завершают анализ через 5 минут. Ожидая 15 минут перед запуском вредоносных действий, вредоносная программа полностью избегает динамического анализа. Песочница видит чистое расширение и одобряет его. А через 15 минут после установки разработчиком срабатывает настоящая полезная нагрузка. Именно поэтому традиционное сканирование безопасности пропустило эту угрозу.
Обновленная инфраструктура C2 и новая цель
Злоумышленник использует новый кошелек Solana для этой волны, хотя старые кошельки также остаются активными. Эволюцию инфраструктуры можно проследить по блокчейну. К началу декабря сервер C2 переместился на IP-адрес 45.32.151[.]157, который также фигурировал в третьей волне. Это окончательно подтвердило связь атак. Также был добавлен новый сервер для эксфильтрации данных.
Техника использования блокчейна Solana для C2 не изменилась: атакующий размещает в мемо транзакций адреса в кодировке base64, а вредоносная программа считывает их, чтобы найти активную конечную точку. Такой подход делает инфраструктуру практически неуязвимой для отключения.
Самым опасным новшеством четвертой волны стала функция подмены приложений аппаратных кошельков. Предыдущие волны воровали учетные данные и устанавливали бэкдоры. Теперь к этому добавилась попытка заменить легитимные приложения Ledger Live или Trezor Suite на троянизированные версии.
Важное уточнение: по состоянию на тестирование 29 декабря 2025 года, серверы C2 возвращали пустые файлы для этих троянов. Вредоносный код включает проверку размера файла, которая предотвращает установку файлов меньше 1000 байт. Это означает, что функция подмены молча отказывает, если загрузка не завершена. Возможно, атакующие все еще готовят финальные версии троянов для macOS, или инфраструктура находится в стадии перестройки. Сама функциональность создана и готова к работе, ожидается лишь загрузка финальных вредоносных модулей. Все остальные функции, такие как кража данных, доступ к связке ключей и обеспечение устойчивости, работают в полном объеме.
Это серьезная эскалация угрозы. Аппаратные кошельки считаются самым безопасным способом хранения криптовалюты. Однако если приложение для управления кошельком скомпрометировано, злоумышленник может отображать поддельные адреса для получения средств, изменять детали транзакций перед подписанием, перехватывать сид-фразу во время восстановления доступа и вмешиваться в обмен данными между приложением и устройством. Безопасность аппаратного кошелька напрямую зависит от безопасности используемого с ним программного обеспечения.
Эволюционный паттерн и выводы
Оглядываясь назад, можно четко проследить эволюцию угрозы. Первая волна в октябре использовала невидимые символы Юникода и была нацелена на Windows. Вторая волна в ноябре применяла ту же технику, но охватила больше расширений. Третья волна, также в ноябре, перешла на бинарные файлы Rust. Четвертая волна в декабре совершила платформенный поворот на macOS, внедрила зашифрованные JavaScript-пейлоады и добавила функцию троянизации кошельков.
Паттерн очевиден. Каждый раз, когда исследователи разоблачали их методы, злоумышленники адаптировались. Они читают отчеты по безопасности и модернизируют свои инструменты в ответ. Общая инфраструктура доказывает, что это одна и та же группа. Постоянная эволюция подтверждает, что эта угроза никуда не исчезнет. Сообществу информационной безопасности и разработчикам, особенно в крипто-индустрии, необходимо проявлять повышенную бдительность, тщательно проверять устанавливаемые расширения и следить за обновлениями от доверенных источников.
Индикаторы компрометации
IPv4
- 217.69.11.60
- 45.32.150.251
- 45.32.151.157
Extension IDs (open-vsx)
- studio-velte-distributor.pro-svelte-extension
- cudra-production.vsce-prettier-pro
- Puccin-development.full-access-catppuccin-pro-extension
Solana C2 wallet
- BjVeAjPrSKFiingBn4vZvghsGj9KCE8AJVtbc9S8o8SC