Open VSX удалил 77 расширений-двойников, крадущих данные разработчиков
Исследователи Manifold Security обнаружили в каталоге Open VSX кластер из 77 расширений, выдававших себя за легитимные инструменты разработчика, но на деле собиравших сведения о системах, где они были установлены. Пакеты загрузили в репозиторий в период с 26 июля по 1 августа 2026 года, а 3 августа их удалили.
«Злые двойники»
Схема оказалась простой и оттого опасной: злоумышленники брали имена, пространства имён и описания реальных расширений, публиковали копии через посторонние аккаунты и присваивали низкий номер версии — например, 0.0.1. Внутри подменялось содержимое файла extension.js, куда встраивался код сбора и отправки данных, поданный под видом «анонимной статистики использования». Ни одно из расширений не выполняло заявленной функции: они лишь показывали в статус-баре сообщение о том, что «активны», и запускали выгрузку.
Большинство — 58 штук — были простыми сборщиками, передававшими имя хоста, а иногда имя рабочей папки или версию редактора. Остальные 19 оказались полноценными разведывательными полезными нагрузками. Они отправляли имя пользователя ОС, название и версию редактора, идентификатор машины, платформу, архитектуру, локаль, часовой пояс и полный путь к открытому проекту.
Что интересовало разведчиков
Продвинутая версия заглядывала в каталог .git, чтобы вытащить удалённые Git-хосты и организации, домен из настроенного email разработчика, текущую ветку и хеш последнего коммита. Она перечисляла до 60 установленных расширений, считывала переменные CI-окружений (GITHUB_REPOSITORY, URI коллекции Azure DevOps, слаг организации Buildkite, имя Codespace, контекст рабочего пространства Gitpod) и даже проверяла, включена ли в редакторе телеметрия — и рапортовала об этом.
Все 77 расширений отправляли данные на домен mangorbit[.]com, зарегистрированный 15 июля — за 11 дней до появления первых пакетов. На случай блокировки предусмотрен запасной вариант: код запрашивает DNS-запись типа TXT, чтобы получить резервный адрес выгрузки.
Разведывательный вариант настойчив: попытки повторяются примерно через 15 и 50 минут, три с половиной часа, затем каждые семь-восемь часов, возобновляясь при каждом перезапуске редактора, и прекращаются лишь спустя неделю. Машина, которая была офлайн или за прокси, всё равно будет опрошена снова. Более того, расширение проверяет, упомянут ли его идентификатор в devcontainer.json или .vscode/extensions.json проекта — то есть отличает установку, навязанную конфигурацией репозитория, от осознанного выбора человека. Как отмечают исследователи, это именно тот вопрос, который задают, когда хотят понять: «как и через что меня втягивают».
Инцидент совпал с другой атакой на цепочку поставок: скомпрометированы 450 npm-пакетов, распространявших самораспространяющегося червя-похитителя учётных данных, получившего кодовое имя ChainDrop.
Источник: The Hacker News
Комментарии
Войдите, чтобы комментировать.