Скоординированная кампания, нацеленная на разработчиков программного обеспечения с использованием приманок в виде предложений о работе, задействует вредоносные репозитории, маскирующиеся под легитимные проекты Next.js и материалы для технических оценок, включая тестовые задания для найма.
Цель злоумышленника — добиться удаленного выполнения кода (RCE) на машинах разработчиков, эксфильтрации конфиденциальных данных и внедрения дополнительных полезных нагрузок в скомпрометированные системы.
Множественные триггеры выполнения
Next.js — это популярный JavaScript-фреймворк, используемый для создания веб-приложений. Он работает поверх React и использует Node.js для бэкенда.
Команда Microsoft Defender сообщает, что злоумышленник создал поддельные проекты веб-приложений на Next.js и замаскировал их под проекты для кодирования, чтобы делиться ими с разработчиками во время собеседований или технических оценок.
Исследователи изначально обнаружили репозиторий, размещенный на Bitbucket — облачном сервисе для хостинга и совместной работы с Git-репозиториями. Однако они обнаружили несколько репозиториев с общей структурой кода, логикой загрузчика и шаблонами именования.
Когда целевой пользователь клонирует репозиторий и открывает его локально, следуя стандартному рабочему процессу, он запускает вредоносный JavaScript, который выполняется автоматически при запуске приложения.
Скрипт загружает дополнительный вредоносный код (JavaScript-бэкдор) с сервера злоумышленника и выполняет его непосредственно в памяти с помощью запущенного процесса Node.js, что позволяет удаленно выполнять код на машине.
Чтобы повысить уровень заражения, злоумышленники внедрили несколько триггеров выполнения в свои вредоносные репозитории, как пояснили в Microsoft в статье. Они суммируются следующим образом:
- Триггер VS Code – Файл .vscode/tasks.json с параметром runOn: “folderOpen” выполняет скрипт Node, как только папка проекта открывается (и ей доверяют).
- Триггер Dev server – Когда разработчик выполняет команду npm run dev, зараженный актив (например, измененная JS-библиотека) декодирует скрытый URL, получает загрузчик с удаленного сервера и выполняет его в памяти.
- Триггер запуска бэкенда – При запуске сервера бэкенд-модуль декодирует конечную точку base64 из .env, отправляет process.env злоумышленнику, получает в ответ JavaScript и выполняет его с помощью new Function().
Процесс заражения оставляет JavaScript-полезную нагрузку (Этап 1), которая профилирует хост и регистрируется в конечной точке командно-контрольного центра (C2), опрашивая сервер через фиксированные интервалы.
Затем заражение переходит на контроллер задач (Этап 2), который подключается к отдельному C2-серверу, проверяет наличие задач, выполняет предоставленный JavaScript в памяти и отслеживает запущенные процессы. Полезная нагрузка также поддерживает перечисление файлов, просмотр каталогов и поэтапную эксфильтрацию файлов.

Microsoft обнаружила, что кампания включала несколько репозиториев с общими соглашениями об именовании, структурой загрузчика и инфраструктурой развертывания, что указывает на скоординированные действия, а не на единичную атаку.
Помимо технического анализа, исследователи не предоставили никаких подробностей о злоумышленнике или масштабах операции.
Технологический гигант советует разработчикам относиться к стандартным рабочим процессам как к высокорисковым поверхностям атаки и принимать соответствующие меры предосторожности.
Рекомендуемые меры смягчения последствий включают принудительное использование режима доверия/ограниченного режима рабочих областей VS Code, использование правил снижения поверхности атаки (ASR) и мониторинг рискованных входов в систему с помощью Entra ID Protection.
Секреты, хранящиеся на конечных точках разработчиков, должны быть сведены к минимуму, а там, где это возможно, следует использовать краткосрочные токены с минимально необходимыми привилегиями.
Всегда имейте в виду, что редакции могут придерживаться предвзятых взглядов в освещении новостей.
Автор – Bill Toulas




