Технологии

GlassWorm год прятался в расширениях VS Code, пока его не обезвредили

Susan Hill

Больше года часть разработчиков, создающих приложения в вашем телефоне, сама того не зная, работала на кого-то ещё. Вредоносная программа GlassWorm сидела внутри расширений для Visual Studio Code, самого популярного в мире редактора кода, и внутри пакетов с открытым исходным кодом, которые эти разработчики каждый день подключают к своим проектам. Она собирала их пароли, угоняла учётные записи и использовала их, чтобы внедряться во всё новое программное обеспечение. CrowdStrike, Google и фонд Shadowserver только что обрезали ей нити.

Это касается даже тех, кто никогда не открывал редактор кода, потому что цепочка поставок ПО — это именно цепочка. Мессенджер в телефоне, банковское приложение, игра на консоли опираются на тысячи мелких кирпичиков с открытым кодом, которые пишут и поддерживают другие люди. Отравите один такой кирпичик — и яд может стечь вниз по течению вплоть до готовых продуктов, которыми пользуются миллионы. GlassWorm был сделан так, чтобы плыть по этому течению незаметно.

От других его отличал способ прятаться. Операторы записывали вредоносные команды невидимыми символами Unicode — кодом, который в редакторе выглядит как пустое место, так что разработчик при проверке файла не видел ничего подозрительного. Исследователи из Koi Security, первыми выявившие кампанию, назвали его первым червём, способным самостоятельно распространяться через расширения редакторов кода. Каждая заражённая машина становилась стартовой точкой для следующей.

Большинство атак на цепочку поставок — это быстрый налёт: отравленный пакет находят, отзывают и исправляют за считаные дни. GlassWorm был рассчитан надолго. Поскольку он сам крал нужные для распространения учётные данные, он мог заново внедряться спустя долгое время после удаления любого расширения, и так одна операция дотянулась до сотен проектов и десятков тысяч загрузок за период более года.

Пути заражения были обычной сантехникой современной работы над ПО. Операторы загружали заминированные расширения в Open VSX — площадку, питающую VS Code и его собратьев Cursor, Windsurf, Positron и VSCodium, выдавая их за безобидные инструменты вроде таймеров или форматировщиков кода. Они подсовывали испорченный код в пакеты npm и в индекс пакетов Python через установочные скрипты, которые запускаются сами, а с помощью данных, отнятых у прежних жертв, силой вносили вредоносные изменения в основные ветки более чем 300 репозиториев на GitHub. Оказавшись на машине, GlassWorm искал ключи: токены npm, учётные записи GitHub, токены публикации, позволяющие выкладывать расширения, и криптокошельки. Он превращал заражённые компьютеры в серверы-ретрансляторы для прочего криминального трафика, а в ряде случаев ставил скрытую программу удалённого доступа, дававшую операторам живой обзор экрана.

Чтобы его обезвредить, нужно было ударить по тому, как операторы поддерживали связь со своими машинами, а здесь GlassWorm был построен на выживание. Вместо того чтобы полагаться на один командный сервер, который можно отключить, он использовал сразу четыре канала. Один кодировал команды внутри транзакций блокчейна Solana — публичного реестра, задуманного как постоянный и недосягаемый. Другой прятал настройки в файлообменной сети BitTorrent. Третий вставлял закодированные веб-адреса в названия событий Google Calendar. Четвёртым был обычный арендованный сервер. Команда Counter Adversary Operations из CrowdStrike вместе с Google и Shadowserver перерезала весь набор одним скоординированным ударом.

Обрезать провода — не то же самое, что обработать рану. Перерезка каналов мешает операторам отдавать новые приказы и слать свежие нагрузки, но никак не убирает GlassWorm с машин, которыми он уже владеет, и каждый уже украденный пароль остаётся украденным. Это и не первое прерывание кампании. После того как Koi Security её раскрыла, GlassWorm вернулся — сначала с двумя десятками новых вредоносных расширений, а спустя месяцы ещё с десятками. Блокчейн-канал, который исследователи описывали как невозможный для отключения, теперь отключён, но стоящие за ним люди не раз показывали, что отстраиваются заново.

Следователи полагают, что операторы, скорее всего, находятся в России. Программа при запуске проверяет язык и часовой пояс компьютера и тихо завершает работу, если оказывается в системе в России или в соседней стране бывшего советского пространства — знакомый почерк преступных групп, что работают из региона и щадят местных жертв. CrowdStrike подвёл итог сдвигу прямо: злоумышленники целятся уже не только в продукты, а в разработчиков, которые их создают. Фонд Shadowserver начал оповещать пострадавшие организации, чтобы те очистили свои системы и сменили все данные, которые могли утечь, а для всех, кто ниже по цепочке, настоящая работа начинается сейчас — команды проверяют, какие расширения и пакеты они установили с начала 2025 года. Инфраструктура погашена. Очистка едва началась.

Обсуждение

Имеется 0 комментариев.