Скрытая программа удалённого доступа обнаружена в восьми расширениях Visual Studio Marketplace

Скрытая программа удалённого доступа обнаружена в восьми расширениях Visual Studio Marketplace

Восемь расширений с восьми отдельных учётных записей издателей появились или обновились на Visual Studio Marketplace в течение десяти часов 24 и 25 октября 2026 года. Среди них мост к Roblox, менеджер задач, панель управления проектами и пять канбан-досок. Каждый пакет несёт скрытый модуль, который стартует вместе с редактором, обращается к внешнему серверу и ждёт команд. Получив их, модуль выполняет присланный JavaScript и команды оболочки без запроса подтверждения.

Описание

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

Инфраструктура у пакетов общая. Три расширения по умолчанию обращаются к одному домену, пять - к другому; оба зарегистрированы у одного регистратора и указывают на одну и ту же цель в сервисе ngrok. Второй домен появился за 29 минут до публикации листинга MarkersBoard. Маршруты совпадают у всех восьми: регистрация, опрос, подтверждение и возврат результата. Совпадают также формат регистрационных данных, интервал опроса, ограничения на размер ответа и строки журнала.

История версий показывает, как набор проходил проверку. MarkersBoard в версиях 2.2.0 и 2.2.3 заявляла об отсутствии исполнения кода. Версия 2.2.4 добавила запуск присланного кода, и обновление легло через 52 минуты после публикации листинга. LuaSlope начиналась с заглушки размером 2,6 КБ без файлов JavaScript, а полный движок появился в версии 1.0.2 шестнадцать дней спустя. Parsley успела выпустить сборку, которая отклоняла все действия, и через десять минут - сборку, которая их исполняет.

Канбан-доска удобна как прикрытие, потому что подразумевает фоновую синхронизацию. Опрос сервера раз в пять секунд не выглядит странно для менеджера задач, и описания расширений называют его фоновой синхронизацией рабочих процессов. Процесс расширения при этом не изолирован: он имеет те же права, что и редактор, включая чтение файлов, запуск процессов и сетевые запросы. Отдельного шага загрузки вредоносной программы не требуется, потому что исполнение идёт внутри самого редактора.

Во время разбора один домен отвечал отказом без клиентской сессии и принимал тестовые регистрации. Несколько таких регистраций получили идентификатор и токен, а опрос в течение шести минут возвращал признак активности без единого действия; второй домен отдавал страницу недоступного туннеля ngrok. Ни один ответ не содержал команды. Счётчики листингов небольшие: MarkersBoard показывала 69 загрузок и 19 установок, DawnTask - 24 загрузки и 12 установок, GreenBeans - 10 загрузок и 3 установки, StarkTask - 23 загрузки. У Parsley заявлены 1380 установок при 94 загрузках, и эти числа не согласуются между собой.

Полезной нагрузки внутри пакетов нет: все восемь содержат клиент, а не список команд. Что именно сервер отправлял установленным экземплярам, не установлено; локальная панель LuaSlope содержала только примеры команд, а очередь действий начиналась пустой. Связь между пакетами подтверждают совпадающие артефакты сборки, включая идентичную по байтам иконку в двух пакетах и ссылки на несуществующие репозитории GitHub во всех восьми, но единого владельца учётных записей это не доказывает. Описанные признаки не показывают, был ли исполнен хотя бы один присланный код, и могут давать ложные срабатывания при совпадении шаблонов опроса. Листинг LuaSlope 25 октября не открывался.

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

Комментарии: 0