Вредоносы возвращаются из мёртвых — с теми же именами, но новыми руками.
Специалисты ReversingLabs обнаружили опасную лазейку на Marketplace. Площадка позволяет публиковать новые расширения под теми же именами, что раньше использовали другие пакеты, если те были удалены, а не сняты с публикации. Злоумышленники таким образом маскируют вредоносный код под названия популярных расширений, что представляет серьёзную угрозу для всей цепочки поставок ПО.
Поводом для исследования стала кампания, впервые замеченная в марте 2025 года, когда были обнаружены вредоносные расширения ahban.shiba и ahban.cychelloworld, загружавшие вторую стадию вредоносного ПО. Тогда она представляла собой раннюю версию шифровальщика, работавшего с тестовой папкой на рабочем столе. Расширения удалили, но в июне появилось новое — ahbanC.shiba — с идентичным именем shiba, но другим издателем. Оно имело ту же вредоносную функциональность, включая загрузку скриптов с внешнего сервера и шифрование файлов, хотя криптокошелёк для выкупа так и не был указан.
По документации VS Code Marketplace каждое расширение должно иметь уникальное имя. Однако при удалении расширения (в отличие от снятия с публикации) имя действительно становится доступным для повторного использования. Одним из примеров стало успешное повторное использование имени Solidity-Ethereum , под которым ранее распространялась вредоносная программа.
Уязвимость кроется в логике обработки идентификаторов расширений. В системе VS Code каждое расширение имеет уникальный ID формата <издатель>.<имя>
. То есть платформа отслеживает только ID, а не историю удаления имени. Однако сама платформа не блокирует повторное использование имени, если оригинальное расширение было именно удалено (а не просто снято с публикации). Это создаёт окно возможностей для атакующих: они могут выждать, пока автор удалит своё расширение, а затем занять освободившееся имя и внедрить вредоносный код.
Такие атаки особенно опасны, когда они маскируются под инструменты, на которые уже были ссылки или которые имели хорошую репутацию. Разработчики могут не заметить подмены, если доверяют старым именам, особенно при автоматизации процессов установки зависимостей.
Стоит отметить, что аналогичный подход уже применялся и в других экосистемах: в 2023 году была зафиксирована аналогичная атака на PyPI — там также использовалось имя ранее удалённого пакета termcolour для публикации вредоносного кода. В случае с PyPI после таких инцидентов администраторы платформы начали блокировать повторное использование имён, принадлежавших вредоносным пакетам. Однако в документации VS Code Marketplace аналогичного механизма пока не предусмотрено.
Временная шкала кампании с shiba показывает, что первые версии зловредов появились в октябре 2024 года, последнее обновление — в марте 2025, а уже 24 марта была загружена новая версия с другим ID, но тем же именем. В июне её сняли с публикации (но не удалили), что означает, что она может быть восстановлена в любой момент.
Наблюдения подчеркивают, насколько уязвимыми остаются даже официальные площадки распространения расширений. Несмотря на наличие защитных механизмов, таких как проверки и модерация, возможность повторного использования имён удалённых пакетов остаётся серьёзной брешью в безопасности. ReversingLabs призывает разработчиков быть внимательными при выборе расширений, особенно если речь идёт о недавно опубликованных или заново появившихся пакетах с известными именами.