GLASSWORM атакует Open VSX через вредоносные расширения VS Code
23 мая 2026 года скоординированная кампания GLASSWORM нацелилась на marketplace Open VSX. Для атаки использовались вредоносные расширения для VS Code со встроенным загрузчиком, который выполнялся в памяти и избегал записи на файловую систему.
Загрузчик скрывался в JavaScript-коде расширений
Зашифрованный загрузчик находился в конце объединённой точки входа JavaScript. При запуске расширения случайный массив строк Base64 декодировался во время выполнения и импортировался через URL data:text/javascript;base64.
Имя расширения использовалось как ключ дешифрования для последующих этапов. Первый этап проверял доступность четырёх доменов с помощью HEAD-запросов. Если ни один домен не отвечал, выполнение прекращалось. Такой механизм использовался для защиты от песочниц и анализа.
При успешной проверке загрузчик создавал ключ AES-256-CBC с помощью функции scryptSync(extension_name, salt, 32). Затем он расшифровывал встроенный блок salt:iv:ciphertext и динамически импортировал полученный JavaScript-модуль в памяти.
Solana использовалась для управления инфраструктурой
Второй этап извлекал домен из транзакции Solana memo. Наблюдаемый кошелёк первого уровня разрешался в dodod[.]lat. Этот домен применялся для загрузки и выполнения следующего этапа через PowerShell или curl, в зависимости от операционной системы.
Второй кошелёк Solana во время выполнения разрешал домен C2 jhggnrfnst[.]com. В результате формировалась двухуровневая архитектура мёртвой точки. Инфраструктуру распространения и C2 импланта можно было заменять независимо друг от друга.
Финальный payload
Финальный payload под названием Backup.exe представлял собой 64-битный исполняемый файл Windows размером 6,5 МБ. Он был скомпилирован с использованием Go 1.24.4.
Имплант поддерживал следующие функции:
- развёртывание файлов;
- загрузку, перечисление и удаление файлов;
- управление загрузкой;
- выполнение команд;
- регистрацию;
- опрос;
- интерактивное управление.
Информацию о хосте имплант отправлял в формате JSON на /agent/poll. Если сессия была недоступна, он приостанавливал работу на 30 секунд. Подключение к /agent/control выполнялось через WebSocket в соответствии с полученной инструкцией.
Связь с RustImplant
Деятельность GLASSWORM имеет общие с RustImplant характеристики. К ним относятся:
- этапы, выполняющиеся в памяти;
- шифрование с использованием AES;
- мёртвые точки на базе Solana;
- контроль подключений;
- артефакты на русском языке;
- исключения на основе локали;
- издатели, использующие одноразовые аккаунты;
- временные пространства имён marketplace.
Волна атаки 25 мая использовала тот же загрузчик и домен dodod[.]lat. При этом в паролях третьего этапа применялись префиксы cmplo*, тогда как в более ранних кампаниях использовались cmpib3* или cmpib4*.
Признаки для обнаружения
К признакам, которые могут указывать на активность GLASSWORM, относятся:
- расширения VS Code, обращающиеся к публичным конечным точкам RPC Solana;
- подозрительное выполнение PowerShell или
curl; - закрепление через ключи автозагрузки реестра с использованием Masquerading.
Отчет получен из сервиса CTT Report Hub. Права на отчет принадлежат его владельцу.
Ознакомиться подробнее с отчетом можно по ссылке.



