Команда Mend.io обнаружила фальшивое расширение для VS Code – truffelvscode, которое осуществляет тайпсквоттинг популярного расширения truffle для VS Code. Это расширение выступает в качестве троянского коня для многоступенчатого вредоносного программного обеспечения. В этом блоге подробно рассматривается, как работает вредоносное расширение, его методы обфускации и IOC, связанные с этим инцидентом.

Расширения VS Code
Расширения VS Code – это дополнения, которые улучшают Visual Studio Code, добавляя новые функции, темы, дебаггеры и другие интеграции. Это помогает разработчикам настраивать рабочий процесс, улучшать качество кода и интегрироваться с такими инструментами, как Git, Docker и даже вспомогательными приложениями для кодирования на основе искусственного интеллекта. Расширения устанавливаются из VS Code Marketplace.
Анализ пакета
Пакет был опубликован 1 февраля 2025 года. Изучив код, было обнаружено, что пакет состоит только из двух файлов: package.json и index.js. Файл package.json выглядит нормальным, без неправильных установочных скриптов. Но он имеет такое же описание, как и оригинальное расширение truffle: “Создание, дебаг и развертывание смартконтрактов на EVM-совместимых блокчейнах”.

Рассматривая файл index.js, было обнаружено сильно обфусцированный код. Изучив этот файл немного глубже, с помощью инструмента деобфускатор, получилось обнаружить в конце файла команду “exec”. Эта команда соединяется с внешним хостом для загрузки и выполнения первой стадии вредоносного программного обеспечения.

Многоэтапная цепочка атаки
Атака состоит из нескольких этапов, каждый из которых основывается на предыдущем. Все сделано таким образом, чтобы в конечном итоге обеспечить злоумышленнику удаленный контроль над скомпрометированной системой.
Этап 1: Загрузка обфусцированного пакетного файла
После выполнения обфусцированный файл index.js инициирует загрузку пакетного файла. Примечательно, что этот пакетный файл сам является обфусцированным с помощью Abobus-obfuscator – инструмента, который значительно усложняет статический анализ. Обфускация не только скрывает истинную цель скрипта, но и затрудняет обнаружение и реинжиниринг для автоматизированных инструментов анализа.

Этап 2: Выполнение вредоносной DLL
Чтобы понять поведение этого пакетного файла, он был запущен в изолированной среде. После выполнения было установлено, что пакетный файл был запрограммирован на загрузку файла библиотеки динамических ссылок (dynamic-link library, DLL) с помощью тихого вызова powershell WebRequest – второго этапа работы вредоносного программного обеспечения. После загрузки пакетный файл немедленно запускает эту DLL, которая служит критически важным компонентом в цепочке атаки и является пусковым механизмом для следующего этапа.

Этап 3: Установка предварительно настроенного клиента ScreenConnect и получение удаленного доступа к скомпрометированному компьютеру
Чтобы исследовать подозрительную DLL, она была запущена через сервис any.run. Это онлайн-песочница для автоматического и динамического анализа поведения вредоносного ПО. После просмотра экспортированного отчета, цель выполнения этой DLL стала сразу очевидна: загрузить и запустить третью, завершающую стадию вредоносного ПО.

Этот этап предусматривает загрузку и запуск инсталлятора ScreenConnect, который обычно известен как легитимная программа удаленного рабочего стола. В этом случае, распаковав инсталлятор, был обнаружен файл system.config, который содержал предварительно настроенный удаленный хост, порт и ключ шифрования. Это дает возможность настроить ScreenConnect для немедленного создания соединения между скомпрометированным компьютером и компьютером злоумышленника.

Наконец, чтобы доказать, что соединение действительно было установлено, была выполнена команда “netstat -ano | findstr 8041” после чего стало подтверждено, что анализ прошел успешно.

Вывод
Обнаружение расширения truffelvscode указывает на тревожную тенденцию атак на цепочки поставок программного обеспечения, которые все чаще нацелены на разработчиков. Путем тайпсквоттинга злоумышленники могут распространять многоступенчатое вредоносное ПО, что позволяет им получить удаленный доступ к скомпрометированным системам. Этот инцидент служит напоминанием о необходимости быть осторожными при установке расширений VS Code, особенно тех, которые получены из публичных реестров пакетов, таких как npm.
Чтобы уменьшить эти типы угроз, разработчики и команды безопасности должны учитывать следующее.
- Проверять подлинность пакетов, проверяя данные об издателе, количество загрузок и отзывы пользователей.
- Анализировать содержимое пакетов перед установкой, особенно для расширений с минимальным количеством файлов и обфусцированных скриптов.
- Отслеживать сетевую активность на предмет подозрительных исходящих соединений, которые могут свидетельствовать о выполнении вредоносного программного обеспечения.
- Использовать автоматизированные инструменты сканирования безопасности для выявления тайпсквоттинга, запутанных скриптов и вредоносных зависимостей.
Поскольку злоумышленники становятся все более инновационными в своих тактиках, проактивные меры безопасности имеют решающее значение для предотвращения атак на цепи поставок ПО. Постоянное информирование и использование правильных инструментов безопасности может помочь защитить среду разработки от подобных угроз в будущем.







