Троян в расширениях VS Code: скрытые PNG и node_modules
Недавнее исследование выявило сложную кампанию, в которой злоумышленники разместили на Visual Studio Code (VS Code) Marketplace 19 вредоносных расширений. Атака использовала нетривиальные приёмы маскировки: злоумышленники встраивали вредоносные компоненты в структуры, внешне напоминающие легитимные пакеты, и прятали исполняемый код внутри файлов формата PNG. Это свидетельствует о росте атак на цепочку поставок ПО и о переходе злоумышленников к более изощрённым тактикам.
Ключевые находки
- Вредоносные расширения — 19 экземпляров — были опубликованы в VS Code Marketplace и содержали модифицированную структуру пакета.
- Внутри расширений обнаруживалась папка node_modules, имитирующая привычную структуру npm-пакетов, но с изменённым главным скриптом.
- Файл index.js был подменён: в него внедрён новый класс, инициирующий вредоносное поведение и устанавливающий связь с «скрытым» исполняемым кодом.
- Сам исполняемый код был замаскирован под изображение PNG; расшифровка этого файла выявила JavaScript-дроппер, раскрывающий механику кампании.
Как работала кампания
Атакующие использовали знакомые разработчикам паттерны и инфраструктуру, чтобы снизить подозрительность расширений. Последовательность действий выглядела примерно так:
- Создание расширения, внешне похожего на легитимный пакет (наличие папки node_modules, корректные метаданные).
- Подмена основного скрипта — index.js — для внедрения нового класса, который запускает дальнейшие этапы загрузки и исполнения.
- Хранение вредоносного бинарного компонента внутри файла формата PNG, что позволяет обойти простые проверки целостности или фильтрации по типам файлов.
- Дешифровка/распаковка PNG на стороне пользователя с последующей загрузкой или выполнением вредоносного кода (JavaScript-дроппер).
«вредоносные двоичные файлы в тип файла, который обычно воспринимается как безвредный»
Этот приём эксплуатирует доверие разработчиков к распространённым форматам и инструментам: PNG-файлы и структура npm-пакета редко вызывают подозрение у пользователей и автоматических сканеров.
Почему это опасно
Результат такой подмены — прямое выполнение вредоносного кода в среде разработчика или на CI/CD-инфраструктуре. Последствия включают:
- компрометацию рабочих машин разработчиков;
- распространение вредоносного ПО по цепочке поставок;
- утечку учётных данных и секрентов;
- возможность дальнейшего распределённого развёртывания в целевых инфраструктурах.
Рекомендации по защите
Исходя из обнаруженных методов, эксперты советуют предпринять следующие шаги:
- Проверять издателя и популярность расширения перед установкой в VS Code Marketplace.
- Ограничивать привилегии расширений и по возможности использовать политики организации для контроля установок.
- Проводить аудит содержимого расширений: просматривать node_modules и основной скрипт (index.js) на предмет неожиданных классов и сетевых вызовов.
- Использовать средства статического и динамического анализа для поиска зашифрованных/встроенных бинарников в нестандартных типах файлов (включая PNG).
- Обновлять и настраивать EDR/AV так, чтобы они могли детектировать поведенческие индикаторы загрузчиков и дропперов.
- Внедрять контроль цепочек поставок: подписывание пакетов, проверка целостности и мониторинг необычных зависимостей.
Вывод
Эта кампания демонстрирует, что злоумышленники становятся изощрённее: они целенаправленно атакуют доверенные экосистемы разработчиков и маскируют вредоносный код в форматах, которые редко проверяются. Рост подобных инцидентов подчёркивает необходимость комбинированного подхода — повышение осведомлённости разработчиков, жёсткий контроль установок и внедрение современных механизмов обнаружения и защиты. Без этого риск компрометации проектов и инфраструктур остаётся высоким.
Отчет получен из сервиса CTT Report Hub. Права на отчет принадлежат его владельцу.
Ознакомиться подробнее с отчетом можно по ссылке.



