GlassWorm атакует разработчиков через цепочки расширений VS Code, маскируя вредоносный код в обновлениях

information security

Кампания вредоносного ПО GlassWorm, нацеленная на разработчиков программного обеспечения, сделала опасный шаг в сторону большей скрытности и масштабируемости. Вместо прямого размещения вредоносного кода в расширениях для редакторов кода, таких как VS Code и Open VSX, злоумышленники стали использовать легитимные механизмы платформы для скрытой доставки угроз. Новая тактика превращает изначально безобидные расширения в скрытые транспортные каналы через автоматическую установку зависимостей, что существенно затрудняет обнаружение и оценку рисков. Эта эволюция представляет серьёзную угрозу для безопасности корпоративной среды разработки, так как атака направлена на рабочие станции программистов, где часто хранятся критически важные учётные данные, токены доступа и секреты.

Описание

Злоумышленники злоупотребляют двумя полями в манифесте расширения ("package.json"): "extensionPack" и "extensionDependencies". Эти функции легально предназначены для удобства - например, для автоматической установки набора связанных расширений для PHP-разработки. Однако GlassWorm использует их в злонамеренных целях. Угроза действует по схеме отложенной активации: сначала в репозиторий, такой как Open VSX, публикуется расширение, которое выглядит совершенно безвредным при первичном анализе. Затем, в одном из последующих обновлений, злоумышленник добавляет в манифест ссылки на "extensionPack" или "extensionDependencies", которые указывают на другое, уже вредоносное расширение, связанное с GlassWorm. В результате, когда пользователь обновляет, казалось бы, безопасный плагин, его среда разработки автоматически и без лишних уведомлений устанавливает настоящий вредоносный компонент.

Этот переход на транзитивную доставку, как подтверждают исследователи, коренным образом меняет модель кампании и расширяет её охват. Теперь злоумышленникам не нужно встраивать загрузчик в каждое отдельное расширение. Вместо этого одно доброкачественное на вид расширение может служить троянским конём для целого ряда других вредоносных пакетов. Специалисты по безопасности компании Socket обнаружили живые примеры такой тактики, включая расширение "otoboss.autoimport-extension", которое в версии 1.5.6 ссылалось на "federicanc.dotenv-syntax-highlighting", а в версии 1.5.7 - на "oigotm.my-command-palette-extension". Оба этих зависимых расширения были идентифицированы как связанные с GlassWorm. Кроме того, активными на момент анализа оставались пакеты "twilkbilk.color-highlight-css" и "crotoapp.vscode-xml-extension", что указывает на незавершённость процесса удаления угроз из реестра.

Технически ядро вредоносной программы остаётся прежним, однако её создатели активно работают над живучестью и маскировкой. GlassWorm по-прежнему использует многостадийное выполнение кода на JavaScript, проверку локали и часового пояса на предмет русского языка (геофильтрация), извлечение команд из мемо-транзакций в блокчейне Solana (так называемые «мёртвые точки» или dead drops) и выполнение последующего кода непосредственно в памяти процесса. Однако в новых вариантах, таких как "aadarkcode.one-dark-material@3.20.1", произошли значительные изменения. Злоумышленники сменили используемый кошелёк Solana, добавили новые IP-адреса для командного центра (C2), включая 70[.]34[.]242[.]255 и 45[.]32[.]151[.]157, а также усилили обфускацию полезной нагрузки, заменив статическое AES-шифрование на комбинацию RC4, base64 и массивов строк. Ключевым нововведением стало вынесение материала для дешифрования - например, вектора инициализации (IV) и секретного ключа - из тела расширения в заголовки HTTP-ответов, что позволяет операторам угрозы динамически контролировать процесс.

Основная поверхность атаки - это путь установки и обновления расширений в Open VSX и VS Code. Наибольшему риску подвергаются рабочие станции разработчиков, а конечной целью злоумышленников являются локальные учётные данные, API-токены, конфигурационные файлы (например, ".env") и любые секреты окружения, к которым можно получить доступ после выполнения вредоносного кода в памяти. Угроза особенно коварна, потому что она эксплуатирует доверие, возникающее после установки легального расширения, и автоматизированные процессы, на которые полагаются разработчики.

В свете этих событий приоритетными действиями для отделов информационной безопасности становятся аудит и мониторинг. Статического анализа кода расширения при первой публикации теперь недостаточно. Необходимо отслеживать историю изменений манифеста ("package.json") между версиями, уделяя особое внимание появлению новых полей "extensionPack" или "extensionDependencies". Кроме того, следует внедрить поиск индикаторов компрометации (IoC), характерных для GlassWorm: многостадийных загрузчиков в JavaScript-коде, проверок на русскую локаль, обращений к блокчейну Solana за мемо-транзакциями, а также использование известных вредоносных IP-адресов и криптографических констант. Проактивная блокировка связанных пакетов и сетевых индикаторов в средах разработки должна осуществляться без ожидания официального удаления из репозиториев. В конечном счёте, защита от подобных атак требует пересмотра подходов к безопасности цепочки поставок программного обеспечения (Software Supply Chain Security) и признания того, что даже доверенные каналы обновлений могут быть использованы для скрытой доставки угроз.

Индикаторы компрометации

IPv4

  • 45.32.150.251
  • 45.32.151.157
  • 70.34.242.255

Malicious Open VSX Extensions

  • aadarkcode.one-dark-material
  • aligntool.extension-align-professional-tool
  • angular-studio.ng-angular-extension
  • awesome-codebase.codebase-dart-pro
  • awesomeco.wonder-for-vscode-icons
  • bhbpbarn.vsce-python-indent-extension
  • blockstoks.easily-gitignore-manage
  • brategmaqendaalar-studio.pro-prettyxml-formatter
  • codbroks.compile-runnner-extension
  • codevunmis.csv-sql-tsv-rainbow
  • codwayexten.code-way-extension
  • cosmic-themes.sql-formatter
  • craz2team.vscode-todo-extension
  • crotoapp.vscode-xml-extension
  • cudra-production.vsce-prettier-pro
  • daeumer-web.es-linter-for-vs-code
  • dark-code-studio.flutter-extension
  • densy-little-studio.wonder-for-vscode-icons
  • dep-labs-studio.dep-proffesinal-extension
  • dev-studio-sense.php-comp-tools-vscode
  • devmidu-studio.svg-better-extension
  • dopbop-studio.vscode-tailwindcss-extension-toolkit
  • errlenscre.error-lens-finder-ex
  • exss-studio.yaml-professional-extension
  • federicanc.dotenv-syntax-highlighting
  • flutxvs.vscode-kuberntes-extension
  • gvotcha.claude-code-extension
  • gvotcha.claude-code-extensions
  • intellipro.extension-json-intelligence
  • kharizma.vscode-extension-wakatime
  • ko-zu-gun-studio.synchronization-settings-vscode
  • kwitch-studio.auto-run-command-extension
  • lavender-studio.theme-lavender-dreams
  • littensy-studio.magical-icons
  • lyu-wen-studio-web-han.better-formatter-vscode
  • markvalid.vscode-mdvalidator-extension
  • mecreation-studio.pyrefly-pro-extension
  • mswincx.antigravity-cockpit
  • mswincx.antigravity-cockpit-extension
  • namopins.prettier-pro-vscode-extension
  • oigotm.my-command-palette-extension
  • otoboss.autoimport-extension
  • ovixcode.vscode-better-comments
  • pessa07tm.my-js-ts-auto-commands
  • potstok.dotnet-runtime-extension
  • pretty-studio-advisor.prettyxml-formatter
  • prismapp.prisma-vs-code-extension
  • projmanager.your-project-manager-extension
  • pubruncode.ccoderunner
  • pyflowpyr.py-flowpyright-extension
  • pyscopexte.pyscope-extension
  • redcapcollective.vscode-quarkus-elite-suite
  • rubyideext.ruby-ide-extension
  • runnerpost.runner-your-code
  • shinypy.shiny-extension-for-vscode
  • sol-studio.solidity-extension
  • ssgwysc.volar-vscode
  • studio-jjalaire-team.professional-quarto-extension
  • studio-velte-distributor.pro-svelte-extension
  • sun-shine-studio.shiny-extension-for-vscode
  • sxatvo.jinja-extension
  • tamokill12.foundry-pdf-extension
  • thing-mn.your-flow-extension-for-icons
  • tima-web-wang.shell-check-utils
  • tokcodes.import-cost-extension
  • toowespace.worksets-extension
  • treedotree.tree-do-todoextension
  • tucyzirille-studio.angular-pro-tools-extension
  • turbobase.sql-turbo-tool
  • twilkbilk.color-highlight-css
  • vce-brendan-studio-eich.js-debuger-vscode
  • yamaprolas.revature-labs-extension

Solana addresses

  • BjVeAjPrSKFiingBn4vZvghsGj9KCE8AJVtbc9S8o8SC
  • 6YGcuyFRJKZtcaYCCFba9fScNUvPkGXodXE1mJiSzqDJ

Embedded Crypto Material

  • AES key: wDO6YyTm6DL0T0zJ0SXhUql5Mo0pdlSz
  • AES IVs (hex): c4b9a3773e9dced6015a670855fd32b
Комментарии: 0