В мире кибербезопасности для разработчиков программного обеспечения всё чаще актуальной становится угроза атак на цепочку поставок. Внимание специалистов приковано не только к репозиториям с открытым кодом, но и к экосистеме инструментов, в которых этот код создаётся. Последняя кампания продвинутой кибергруппировки GlassWorm наглядно демонстрирует эту тенденцию, представляя собой качественный скачок в методах заражения. Вместо точечных атак на отдельные проекты злоумышленники теперь используют троянские расширения для редакторов кода, которые способны скрытно распространить вредоносное ПО на все интегрированные среды разработки (IDE) в системе жертвы, превращая рабочее место программиста в плацдарм для дальнейшего вторжения.
Описание
Группа GlassWorm известна экспертам по информационной безопасности более года. Её активность впервые была зафиксирована в марте 2025 года, когда исследователи из Aikido обнаружили вредоносные пакеты в репозитории npm, скрывавшие полезную нагрузку с помощью невидимых символов Юникода. С тех пор кампания неоднократно расширялась, скомпрометировав сотни проектов на GitHub, npm и в экосистеме VS Code. В своих последних атаках группа использовала поддельное расширение для браузера Chrome, которое внедряло постоянного трояна удалённого доступа (RAT), регистрировало нажатия клавиш и извлекало файлы cookies сессий. Однако недавно аналитики зафиксировали принципиально новую технику, которая свидетельствует о серьёзной эволюции тактики группировки.
Новая схема была обнаружена в расширении для магазина OpenVSX под названием "code-wakatime-activity-tracker". Это расширение маскируется под популярный инструмент для учёта времени разработки WakaTime. В отличие от чисто JavaScript-кода, оно поставляется вместе со скомпилированным нативным бинарным файлом, написанным на языке Zig. Хотя GlassWorm уже использовала скомпилированный код в расширениях ранее, в данном случае бинарник выполняет не роль конечной полезной нагрузки, а служит скрытным механизмом для распространения уже известного специалистам дроппера GlassWorm. Его новая функция - тайное заражение всех остальных IDE, которые он может найти в системе.
Поверхностно троянское расширение почти неотличимо от легитимного WakaTime: те же команды, запросы API-ключа, иконки в статусной строке. Критическое расхождение скрыто в одной функции - "activate()". Прежде чем запускается какая-либо логика WakaTime, расширение загружает нативный бинарный файл из локальной директории "./bin/" и немедленно вызывает функцию "install()". На Windows это файл "win.node" (DLL), на macOS - "mac.node" (универсальный Mach-O-файл для архитектур x86_64 и arm64). Эти файлы представляют собой нативные аддоны для Node.js - скомпилированные библиотеки, которые загружаются напрямую в среду выполнения Node и выполняются вне песочницы JavaScript с полным доступом на уровне операционной системы. Примечательно, что в macOS-версии остались отладочные символы, указавшие на путь к проекту злоумышленника.
Основная задача бинарного файла - найти абсолютно все IDE, установленные на компьютере, которые поддерживают формат расширений VS Code, и скрытно установить в каждую из них вредоносное расширение. Алгоритм сканирует стандартные пути установки для целого ряда популярных редакторов: Microsoft VS Code, VS Code Insiders, Cursor, Windsurf, VSCodium и Positron. Это означает, что атака направлена не только на VS Code, а на всю экосистему редакторов, использующих общую систему расширений. Разработчик, использующий, например, Cursor в качестве основного инструмента, но имеющий также установленный VS Code, обнаружит, что обе среды разработки скомпрометированы.
После составления списка IDE бинарник загружает вредоносный файл ".vsix" со страницы релизов на GitHub, контролируемой злоумышленником. Пакет маскируется под легитимное и чрезвычайно популярное расширение "steoates.autoimport", которое имеет миллионы загрузок. Загруженный ".vsix" записывается во временный каталог, после чего автоматически устанавливается в каждую найденную IDE с использованием встроенного интерфейса командной строки редактора. На Windows этот процесс выполняется через "cmd.exe". После успешной установки файл ".vsix" немедленно удаляется, что позволяет эффективно скрыть следы первоначального заражения.
Установленное расширение ".vsix" представляет собой тот самый дроппер GlassWorm, который детально изучался экспертами ранее. Его функционал включает геофильтрацию, при которой вредоносное ПО может не активироваться на системах с русскоязычной локалью, использование командного центра (C2), замаскированного под транзакции в блокчейне Solana, а также скрытную эксфильтрацию данных. В рамках предыдущих этапов кампании этот дроппер в конечном итоге устанавливал постоянного трояна удалённого доступа и вредоносное расширение для браузера Chrome. Таким образом, новая техника с заражением всех IDE служит мощным усилителем, максимально расширяя точку внедрения в систему разработчика перед выполнением финальных деструктивных действий.
Данный инцидент подчёркивает несколько тревожных тенденций. Во-первых, атаки на цепочку поставок смещаются от заражения зависимостей проекта к компрометации самого инструментария разработки, что делает угрозу более персональной и целенаправленной. Во-вторых, злоумышленники демонстрируют глубокое понимание экосистемы: они не просто создают вредоносное расширение, а разрабатывают механизм его тиражирования внутри среды жертвы, используя легитимные функции самих IDE для собственных целей. В-третьих, комбинация скриптового и нативного скомпилированного кода усложняет статический анализ и обнаружение угрозы системами безопасности, полагающимися на сигнатуры. Для специалистов по защите и самих разработчиков этот кейс служит суровым напоминанием о необходимости повышенной бдительности при установке любых, даже кажущихся полезными, расширений и инструментов, особенно из непроверенных источников или репозиториев, не являющихся официальными магазинами поставщиков ПО.
Индикаторы компрометации
URLs
- https://github.com/ColossusQuailPray/oiegjqde/releases/download/12/autoimport-2.7.9.vsix
SHA256
- 112d1b33dd9b0244525f51e59e6a79ac5ae452bf6e98c310e7b4fa7902e4db44
- 2819ea44e22b9c47049e86894e544f3fd0de1d8afc7b545314bd3bc718bf2e02
Extensions
- specstudio/code-wakatime-activity-tracker (trojanized OpenVSX extension)
- autoimport-2.7.9 (second-stage implant into IDEs)
Strings
- vsx_installer_zig (Zig project name found in macOS binary)
- davidioasd (Username found in macOS binary)