Черви в расширениях VS Code: новая угроза для разработчиков

information security

Безопасность экосистемы расширений для инструментов разработки вновь оказалась под угрозой. Эксперты обнаружили вредоносное расширение для популярного редактора кода Visual Studio Code (VS Code), которое более двух недель находилось в открытом репозитории Open VSX и было скачано более 5000 раз. Угроза имитирует легитимный инструмент - Angular Language Service - и использует сложные методы маскировки и обфускации для кражи конфиденциальных данных разработчиков, включая токены доступа к NPM и GitHub.

Описание

Расширение, замаскированное под сервис для работы с Angular, содержит как легальные зависимости, так и вредоносный код. Его главная особенность - активация при открытии любого HTML или TypeScript файла, что гарантирует запуск на машине разработчика. После активации расширение расшифровывает скрытую полезную нагрузку (payload) с помощью алгоритма AES-256-CBC, встроенной прямо в код. Этот процесс включает искусственную задержку в 500 миллисекунд, чтобы усложнить анализ.

Расширение, замаскированное под сервис для работы с Angular

Однако ключевая инновация угрозы заключается в механизме командования и управления (C2, Command and Control). Вместо использования традиционных серверов злоумышленники применяют технику, известную как Etherhiding. Первый этап вредоносного кода обращается к блокчейну Solana, извлекая конфигурационные данные из поля memo определённого кошелька. Этот подход обеспечивает анонимность, устойчивость к блокировкам и возможность динамического обновления инструкций без модификации самого расширения.

Интересно, что вредоносная программа содержит механизм геофильтрации. Перед выполнением основных действий она анализирует локаль, часовой пояс и смещение UTC системы. Если обнаруживаются признаки, указывающие на российский регион (например, языковой пакет ru_RU или часовой пояс Europe/Moscow), выполнение кода прекращается. Такая практика часто наблюдается у угроз, связанных с русскоязычными акторами, и, предположительно, служит для минимизации рисков преследования на внутреннем рынке.

Для обеспечения устойчивости (persistence) вредоносное ПО создаёт скрытый файл в системной директории пользователя, например, "init.json". Этот файл отслеживает временную метку последнего успешного выполнения, что позволяет контролировать периодичность активации. Кроме того, программа определяет операционную систему (Windows, macOS, Linux) для загрузки и выполнения соответствующего этапа атаки.

Конечная цель атаки - кража критически важных данных. Финальная полезная нагрузка представляет собой стилер (stealer), который целенаправленно ищет учётные данные разработчиков. Он сканирует системы на наличие файлов ".npmrc" для извлечения токенов аутентификации NPM, а также использует команду "git credential fill" для получения кэшированных паролей GitHub. Украденные токены немедленно проверяются на активность через запросы к соответствующим API.

Помимо этого, стилер ищет данные более чем 60 типов криптовалютных кошельков, включая MetaMask и Ledger Live. Чтобы получить доступ к заблокированным файлам браузеров, он принудительно завершает процессы Chrome и Firefox. Для скрытого исполнения может загружаться отдельный бинарный файл Node.js, а для обеспечения автозапуска создаются задания в Планировщике задач Windows или добавляются записи в реестр.

Собранные данные архивируются и отправляются на контролируемый злоумышленниками сервер. В качестве резервного канала связи для получения новых адресов C2 может использоваться публичная ссылка на Google Календарь.

Данный инцидент демонстрирует эволюцию атак на цепочку поставок программного обеспечения (supply-chain attacks). Использование легитимных репозиториев расширений, сложная обфускация и устойчивые децентрализованные механизмы C2 создают серьёзные проблемы для традиционных средств защиты. Угроза оставалась незамеченной в течение двух недель, что повышает вероятность того, что разработчики, имеющие доступ к критическим аккаунтам NPM или GitHub, могли стать её жертвами.

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

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

IPv4

  • 108.61.208.161
  • 217.69.11.57

Extension ID

  • angular-studio.ng-angular-extension

Solana address

  • BjVeAjPrSKFiingBn4vZvghsGj9KCE8AJVtbc9S8o8SC
Комментарии: 0