Мелкие разработчики Open-Source стали целью атаки через вредоносные задачи VS Code

information security

Исследовательская группа OpenSourceMalware сообщает о целенаправленной кампании, нацеленной на сопровождающих (мейнтейнеров) проектов с открытым исходным кодом. В течение последних 72 часов было скомпрометировано как минимум 21 репозиторий. Атака использует малоизвестную функцию автоматического запуска задач в популярном редакторе кода Visual Studio Code (VS Code). Данный инцидент опровергает распространённое заблуждение о том, что небольшие проекты неинтересны для сложных угроз.

Описание

Вредоносная активность была зафиксирована в файлах конфигурации ".vscode/tasks.json". Эти файлы предназначены для автоматизации рутинных действий, таких как сборка или тестирование. Однако злоумышленники настроили задачи на выполнение при каждом открытии папки проекта в VS Code. Задача автоматически загружает и исполняет скрипт с внешнего домена, причём используется разный вредоносный код (malicious payload) для Linux, macOS и Windows.

Например, для систем Linux конфигурация может содержать команду, которая через "curl" загружает и запускает скрипт. Это особенно коварный вектор атаки, поскольку выполнение происходит автоматически, а папка ".vscode" часто остаётся без внимания при проверке кода. Многие разработчики безусловно доверяют содержимому собственных репозиториев.

Кампания демонстрирует стратегический выбор целей. Скомпрометированные репозитории не являются крупными или широко известными. Напротив, это личные проекты, экспериментальные инструменты и узкоспециализированные утилиты. Атакующие понимают, что небольшие проекты часто подвергаются меньшему аудиту безопасности. Кроме того, их сопровождающие могут быть менее осведомлены о рисках. Такие проекты имеют потенциал роста или могут быть включены в более крупные зависимости.

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

Аналитики отмечают сходство методов данной кампании с тактиками, техниками и процедурами (TTPs), ранее ассоциировавшимися с северокорейскими группировками, в частности Lazarus. Речь идёт о кампаниях, известных под общим названием «Contagious Interview». Конфигурации файлов "tasks.json" в этом инциденте выглядят практически идентично тем, что использовались угрозой DPRK.

Если в будущем полезная нагрузка будет заменена на классический похититель информации (infostealer), такой как Beavertail, последствия могут быть серьёзными. Злоумышленники получат возможность красть учетные данные и cookies из браузеров, извлекать данные криптовалютных кошельков, а также похищать ключи разработчика. К ним относятся SSH-ключи, персональные токены доступа (PAT) к GitHub и API-токины. Кроме того, атакующие могут установить механизм сохранения (persistence) для последующего доступа к системе.

Для сопровождающих open-source-проектов кража учётных данных особенно опасна. Она открывает путь для атак на цепочку поставок (supply chain attacks) любых проектов, в которые они вносят вклад. Исследователи связались с некоторыми пострадавшими разработчиками. Один из них подтвердил, что не имел отношения к добавлению вредоносного файла. Его предположение сводится к компрометации персонального токена GitHub. Другой разработчик обнаружил, что для аутентификации в GitHub и загрузки файла были использованы украденные SSH-ключи.

Специалисты не исключают, что первоначальная компрометация этих жертв могла произойти в рамках других известных кампаний, таких как Shai-Hulud и S1ngularity. Расследование продолжается совместно с другими экспертами. Чтобы защититься от подобных атак, исследователи рекомендуют всем сопровождающим проектов предпринять несколько шагов.

В первую очередь, необходимо отключить автоматический запуск задач в настройках VS Code. Для этого в параметрах редактора следует найти опцию "task.allowAutomaticTasks" и установить для неё значение "off". Кроме того, нужно внимательно проверять содержимое папки ".vscode" при клонировании или создании ответвлений (fork) репозиториев.

Следует с подозрением относиться к непрошеным запросам на слияние (pull requests), которые вносят изменения в конфигурации VS Code. Полезно регулярно проверять свои репозитории на наличие неожиданных файлов "tasks.json". Для автоматизации можно использовать Git-хуки, которые будут предупреждать о любых изменениях в директории ".vscode".

Эта кампания служит суровым напоминанием. В современной экосистеме открытого кода не существует понятия «слишком маленький проект». Каждый сопровождающий является потенциальной целью для сложных угроз, включая группировки, связанные с государствами (APT). Бдительность и базовые меры безопасности становятся обязательными для всех.

Индикаторы компрометации

Domains

  • vscode-extension-260120.vercel.app

URLs

  • https://vscode-extension-260120.vercel.app/settings/linux?flag=5-
  • https://vscode-extension-260120.vercel.app/settings/win?flag=5-

Malicious File Pattern

  • .vscode/tasks.json (с командами runOn:folderOpen и curl/wget)
Комментарии: 0