Содержание
Кампания Glassworm зацепила минимум 151 GitHub-репозиторий и вышла за пределы GitHub: следы той же техники нашли в npm и в маркетплейсе расширений VS Code. Вредоносный код прячут в Unicode-символах, которые выглядят как пустое место в редакторе.
По данным исследователей из Aikido Security, репозитории компрометировали в период 3-9 марта. Дальше кампания расширилась и затронула экосистемы пакетов и расширений.
Атака маскирует байты в «невидимом» Unicode и запускает их через eval()
Трюк держится на символах из Unicode Private Use Area. В отчёте перечислены диапазоны 0xFE00-0xFE0F и 0xE0100-0xE01EF. Во многих редакторах и терминалах они рендерятся как нулевой ширины пробел. В pull request это выглядит как обычные пустые отступы.
Дальше в коде сидит небольшой декодер. Он вытаскивает спрятанные байты и передаёт их в eval(). В итоге выполняется полноценный вредоносный payload, хотя визуальный код-ревью не цепляет инъекцию.
В прошлых инцидентах Glassworm использовал Solana как канал управления
В предыдущих эпизодах Glassworm вредоносная нагрузка подтягивала и запускала скрипт второго этапа. Он использовал блокчейн Solana как command-and-control канал. Такая схема, по описанию исследователей, годится для кражи токенов, учётных данных и секретов.
У этой модели есть практическая проблема для защиты: транзакции в блокчейне нельзя «подчистить» или откатить. Поэтому инфраструктуру управления сложнее отключать привычными способами.
Коммиты выглядят как «обычная работа», и это похоже на генерацию через LLM
Свежая волна отличается тем, как аккуратно злоумышленники упаковывают инъекции. Вместо кричащих правок они делают коммиты под видом version bump и мелких рефакторингов. И стиль этих изменений совпадает с манерой конкретного проекта.
Aikido Security пишет, что подозревает использование LLM для «обложки» коммитов. Логика простая: вручную сделать 151 правку под разные кодовые базы — долго и дорого. А с генерацией текста и кода это становится реалистично.
Часть репозиториев, которые исследователи видели в цепочке, уже удалили. Поэтому 151 — это, вероятно, нижняя граница. Среди заметных целей упомянуты проекты от Wasmer, Reworm и anomalyco (организация, связанная с OpenCode и SST).
Тот же паттерн декодера нашли ещё минимум в двух npm-пакетах и одном расширении VS Code, которое загрузили 12 марта.
Что известно о Glassworm по хронологии
Группу связывают с этой техникой минимум с марта 2025 года. Тогда Aikido Security впервые нашла «невидимые» Unicode-инъекции в вредоносных npm-пакетах. К октябрю тот же актор уже отметился в Open VSX и в GitHub-репозиториях.
В другом расследовании (его упоминают в сводке по теме) описывали распространение червя через украденные npm, GitHub и Git учётки. Там же говорилось, что декодированные payload разворачивали скрытые VNC-серверы и SOCKS-прокси для удалённого доступа.
Полный разбор Aikido Security с деталями по Glassworm доступен по ссылке: aikido.dev.