AI Vibe Craft
← Назад к AI Vibe News

Редакция 5 мая 2026 г.

Разборы

Когда прединтервью code review в LinkedIn упирается в NPM-трояна

Когда прединтервью code review в LinkedIn упирается в NPM-трояна.

На Dev.to автор разбирает переписку с «рекрутером»: обещание удалённой роли «Software Engineer at a DEX», просьба просмотреть код до техинтервью, ссылки на GitHub и приглашение в Calendly. В типичном сценарии фигурирует легенда «remote Web3/AI engineering role» — то есть слова про ИИ входят в приманку найма. Там же приводят ссылку на Microsoft Security Blog (Contagious Interview): в материале отмечены маски «поставщиков решений на базе ИИ» (AI-based solution providers) и среди цепочек — пример Visual Studio Code / Cursor App → cmd / PowerShell / bash без количественных метрик кампании — как пересечение социальной инженерии в найме и привычного инструментария IDE.


Легенда вакансии: DEX, Web3 и «AI engineering» перед ссылкой на репозиторий

В развёрнутом тексте связка такая: рекрутинг в LinkedIn и просьба «заранее» открыть код. Репозиторий выставлен как React + web3 dApp, имя metabiteorg/NitroGem указано явно; отмечено, что репозиторий зарепорчен в категории GitHub Trust & Safety — по описанию первоисточника, с ожиданием удаления.

Смысл сюжета не в угадывании мотива «рекрутёра», а в наблюдаемом шаблоне «инженер наймается под стек AI/Web3/DEX» с запросом на локальные действия над репозиторием. Именно этот переход между социальной инженерией и техникой Microsoft описывает отдельно для сегментов криптовалютные торговые фирмы и поставщиков решений на базе ИИ, где жертве предлагают клонировать и выполнять NPM-пакет с GitHub, GitLab или Bitbucket.

Подменённый процесс найма упирается в артефакты привычного dev-пайплайна: аккаунт на Git-хостинге, клонирование и установка зависимостей.


После npm install: пять стадий, Google Doc и отправка переменных окружения

Цепочка по описанию сценария в статье выглядит так:

  1. Скрипт жизненного цикла prepare в package.json запускает node app/index.js.
  2. app/index.js подтягивает frontController.js; при загрузке модуля вызывается getGoogleDriveValue() в диапазоне строк 591–619 этого файла.
  3. Оттуда загружается публичный Google Doc по HTTPS.
  4. Тело документа декодируют (указано как base64) в URL; вспомогательная verify() во settingController.js отправляет содержимое process.env на этот URL через axios.post.
  5. Ответ управляющего сервера исполняется через new (Function.constructor)("require", responseData) с переданным настоящим require — в итоге описывают произвольное исполнение JavaScript и доступ к модулям вроде fs, child_process, net.

Важное следствие для работы разработчика: lifecycle-скрипты NPM включаются при установке там, где дерево файлов принимают без проверки.

В том же официальном разборе Microsoft про кампанию Contagious Interview говорится о social engineering, таргете на разработчиков, злоупотреблении доверием в рекрутинге и сценарии с Visual Studio Code: при первом открытии предлагают доверять автору репозитория, после чего конфигурация задач запускается автоматически и ведёт к загрузке бэкдора — параллель к цепочке выше через запуск кода после быстрого знакомства с чужим репозиторием.


Маскировка под CRA, install.cmd и отсечение Gitpod с Codespaces

В package.json строка prepare оформлена как длинная связка с react-scripts и флагами вроде --kill-others; рабочая часть — npm run app:pre, остальное имитирует «Create React App» как «визуальное украшение». Есть npm install.cmd, который запускает обычный npm install без --ignore-scripts, и скрипт install:fix с более безопасным --ignore-scripts.

Вспомогательный check-environment.js может отказать при npm start в Gitpod, GitHub Codespaces или терминале VS Code под Windows 11 — в материале это трактуют как антианалитический фильтр. Речь уже не про ИИ-агента, а про конфигурации сред разработки и облачных IDE, где часто открывают «кандидатские» задачи перед собеседованием.

npm install --ignore-scripts

(У легитимных нативных модулей позже может понадобиться точечный npm rebuild.)


Совпадение двух текстов: браузер против локального клонирования

Первоисточник подчёркивает разницу поверхности: просмотр на github.com в браузере не выполняет lifecycle-скриптов; риск — у локального клонирования и npm install.

Рекомендации: сначала читать package.json, проверять scripts, особенно prepare / postinstall / preinstall / install, при странностях останавливаться и читать скрипт; для незнакомого репозитория — ставить npm install --ignore-scripts.

В материале Microsoft, опубликованном 2026-03-11, в блоке про реагирование приводят кампанию Contagious Interview с активностью не ранее декабря 2022 и отдельно выделяют примеры цепочек «Visual Studio Code / Cursor App → cmd / PowerShell / bash → …» как шаблон для поиска подозрительного исполнения.

Это не инструкция «куда кликнуть», а готовое пересечение: официально описанная угроза и рабочее место, где IDE, NPM и секреты в окружении идут рядом.

В том же тексте на Dev.to кейс связан с блоком отчётов Microsoft Threat Intelligence, Mandiant, Palo Alto Unit 42 и набором имён (Sapphire Sleet, DEV#POPPER, BeaverTail, InvisibleFerret, UNC4899); приложена ссылка на gist с таблицей IOC.


Источники

  1. Vladimir Novick, A LinkedIn Recruiter Sent Me Malware Disguised as a "Pre-Interview Code Review"Dev.to (дата доступа: 2026-05-04, UTC).
  2. Microsoft, Contagious Interview malware delivered through fake developer job interviews — https://www.microsoft.com/en-us/security/blog/2026/03/11/contagious-interview-malware-delivered-through-fake-developer-job-interviews/ (дата доступа: 2026-05-04, UTC).
  3. Gist с IOC (ссылка из поста на Dev.to) — https://gist.github.com/vnovick/86dc0af8ffcb39260b7d9d01278a6263 (дата доступа: 2026-05-04, UTC).