GlassWorm заражает все IDE на машине через фейковый WakaTime на Zig
Исследователи Aikido нашли новую стадию кампании GlassWorm: клон WakaTime с нативным бинарником на Zig заражает все VS Code-совместимые редакторы на машине разом.
Новости TprogerЕсли вы используете VS Code, Cursor, Windsurf, VSCodium или Positron — проверьте список установленных расширений прямо сейчас. Новая волна кампании GlassWorm прячет вредонос в поддельном WakaTime и тихо заражает каждый IDE, который найдёт на машине.
Исследователи Aikido Security обнаружили в реестре Open VSX расширение code-wakatime-activity-tracker — почти полный клон легитимного WakaTime. Отличие одно: в функции activate() расширение подгружает нативный бинарник на Zig, который сканирует систему и устанавливает второй дроппер в каждый редактор на базе VS Code.
Ключевые выводы
- Кампания GlassWorm добавила новую стадию — нативный бинарник на Zig (win.node и mac.node), который запускается вне JavaScript-песочницы Node.js.
- Заражаются все VS Code-совместимые редакторы на машине: VS Code, VS Code Insiders, Cursor, Windsurf, VSCodium, Positron.
- Второй этап — фейк популярного расширения steoates.autoimport (5+ миллионов установок) под именем floktokbok.autoimport.
- Вредонос пропускает машины с русской локалью и использует Solana-блокчейн как C2-инфраструктуру.
- Если у вас стояли расширения specstudio.code-wakatime-activity-tracker или floktokbok.autoimport — считайте машину скомпрометированной и ротируйте секреты.
Как устроена атака
Клон WakaTime с одной изменённой функцией
Расширение code-wakatime-activity-tracker на Open VSX визуально повторяет оригинальный WakaTime: те же команды, те же запросы API-ключа, та же иконка в статус-баре. Разница только в одной функции — activate(), которая запускается при первом открытии расширения:
До какой-либо логики WakaTime расширение подгружает нативный бинарник из вложенной папки ./bin/ и сразу вызывает install(). На Windows это win.node — PE32+ DLL, на macOS — mac.node, универсальный Mach-O для x86_64 и arm64.
Полный обход песочницы
Оба бинарника — Node.js native addons: скомпилированные shared-библиотеки, которые Node подгружает через require() как обычные пакеты. Они загружаются прямо в рантайм Node и выполняются за пределами JavaScript-песочницы, с правами уровня операционной системы. Оба написаны на Zig. В macOS-бинарнике остались debug-символы — из них исследователи вытащили путь к проекту автора:
Сканирование всех VS Code-совместимых редакторов
Дальше бинарник ищет на машине каждый редактор, который понимает формат расширений VS Code. Проверяются стандартные пути установки — как в %LOCALAPPDATA%, так и в %ProgramFiles%:
На macOS аналогично обходятся /Applications/*.app для VS Code, Cursor, Windsurf, VSCodium и Positron. Если разработчик использует Cursor как основной редактор, но рядом стоит VS Code — оба окажутся скомпрометированы.
Подмена autoimport — расширения с 5 млн установок
Собрав список редакторов, бинарник скачивает вредоносный .vsix с GitHub Releases-страницы, подконтрольной атакующим. Пакет называется floktokbok.autoimport и подделывается под steoates.autoimport — популярное расширение с более 5 миллионов установок. Скачанный файл сохраняется во временный путь, а затем «тихо» ставится в каждый найденный IDE через его CLI-установщик:
После установки функция cleanupVsix удаляет скачанный файл, чтобы скрыть следы.
Что делает вторая ступень
Установленный autoimport — это тот же дроппер GlassWorm, который Aikido уже анализировали раньше. Он проверяет локаль системы и пропускает машины с русскими настройками, затем обращается к C2-серверу через Solana-блокчейн. Адрес C2 не зашит в бинарник — дроппер каждый раз читает его из блокчейн-транзакций подконтрольного кошелька, поэтому для блокировки недостаточно добавить один домен в deny-list, а закрыть весь Solana нереально.
Дальше дроппер выкачивает секреты с машины, ставит persistent-RAT и доставляет вредоносное расширение для Google Chrome — infostealer, который перехватывает сессионные cookies и нажатия клавиш.
Контекст: год эволюции GlassWorm
Aikido отслеживают GlassWorm больше года: кампания засветилась в марте 2025 с npm-пакетами, прятавшими payload в невидимых Unicode-символах, а с тех пор успела скомпрометировать сотни проектов на GitHub, npm и в VS Code Marketplace. Ключевое отличие нового этапа — переход к нативному коду на Zig: раньше нагрузка выполнялась в JS-рантайме расширения и её было видно в Developer Tools, теперь она уходит на уровень ОС, где статический анализ JavaScript-кода её уже не поймает.
Что делать прямо сейчас
- Проверьте в каждом VS Code-совместимом редакторе список установленных расширений. Искомые имена: specstudio.code-wakatime-activity-tracker и floktokbok.autoimport.
- Если нашли — считайте машину скомпрометированной. Удалите расширения, но этого недостаточно.
- Ротируйте все секреты, к которым у машины был доступ: SSH-ключи, npm/pypi-токены, cloud-CLI, GitHub PAT, облачные credentials в ~/.aws, ~/.config.
- Проверьте Chrome и Chromium-браузеры на неизвестные расширения и удалите их.
- Пересмотрите cookies и активные сессии во всех браузерах, разлогиньтесь везде.
- Для профилактики — перед установкой проверяйте издателя и число установок (autoimport, WakaTime и другие популярные расширения имеют миллионы установок и проверенного автора). Если в команде используется корпоративный endpoint protection — добавьте в его охват папки расширений IDE: это ловит malware в нативных аддонах, которые расширения тянут с собой.
Индикаторы компрометации (IoC)
Вредоносные расширения:
Хеши бинарников SHA-256:
Хеши действительны на момент анализа Aikido. Атакующие могут пересобрать бинарник — в этом случае хеши изменятся, но имена расширений и пути установки остаются корректными индикаторами.
Сетевые индикаторы:
Строки в бинарнике:
Часто задаваемые вопросы
Что такое GlassWorm?
Кампания по распространению вредоносного ПО, которую Aikido Security отслеживают с марта 2025. GlassWorm прячет payload в популярных open source-пакетах и расширениях IDE — в npm, на GitHub, в VS Code Marketplace и Open VSX. Финальная цель — установить RAT, собрать секреты и подложить вредоносное Chrome-расширение.
Почему Zig?
Zig компилируется в нативный код, который запускается вне JS-песочницы расширения и получает полный доступ к ОС. При этом статический анализ JavaScript-кода расширения Zig-бинарник не поймает — его нужно смотреть отдельно, а хеш-сигнатуры легко обойти пересборкой.
Я в безопасности, если использую Linux?
Текущая версия дроппера собрана только под Windows и macOS. Но в предыдущих итерациях кампании Linux тоже попадал под удар, и ничто не мешает атакующим добавить Linux-сборку.
Я установил расширение — что я потерял?
Предположите, что утекли все локальные секреты: SSH-ключи, токены пакетных менеджеров, облачные credentials, сессионные cookies браузера и сохранённые пароли. Ротация всего, к чему машина имела доступ, — не перестраховка, а необходимый минимум.
Как защититься в будущем?
Не ставьте расширения с малым числом установок и молодым издателем, особенно если они копируют имя популярного инструмента. Используйте endpoint protection или whitelist расширений для команды, включите автоматическое сканирование malware в CI и пересматривайте список установленных расширений как часть обычной гигиены.
Выводы
Главный сдвиг в этом релизе GlassWorm — не сама подделка WakaTime, а то, что группа научилась перекладывать payload на нативный слой. Для защитников это означает две вещи: во-первых, статического анализа JS теперь мало — нужен контроль за любыми нативными аддонами, которые расширения тянут с собой; во-вторых, атакующим доступна не одна экосистема, а весь зонтик VS Code-совместимых редакторов сразу.
Расширение [...] кладёт рядом с JavaScript-кодом скомпилированный на Zig нативный бинарник. Это не первый раз, когда GlassWorm прибегает к нативному коду в расширениях. Но теперь бинарник работает не как payload напрямую, а как скрытый слой, который незаметно заражает все остальные IDE на машине.
Если вы разработчик — самый быстрый прикладной вывод: пройдитесь по списку расширений во всех установленных редакторах прямо сейчас, особенно если недавно ставили что-то через Open VSX. И пересмотрите, чьим расширениям вы в принципе доверяете по умолчанию.
Источники: Aikido Security, The Hacker News.