В JetBrains Marketplace обнаружено 15 вредоносных плагинов, ворующих API-ключи AI-сервисов

security

Специалисты компании Aikido Security выявили скоординированную вредоносную кампанию на официальном маркетплейсе плагинов для продуктов JetBrains. Речь идет о 15 надстройках для среды разработки (IDE), опубликованных под семью разными учетными записями. Каждый из этих плагинов содержит скрытую логику, которая похищает API-ключи поставщиков искусственного интеллекта, введенные пользователем в настройки. Суммарное количество установок приближается к 70 тысячам.

Описание

Все обнаруженные плагины маскируются под AI-ассистентов для написания кода, построенных на моделях DeepSeek и других больших языковых моделях. Они предлагают функционал чата, генерации сообщений коммитов, ревью кода, поиска ошибок и модульных тестов. С точки зрения заявленных возможностей плагины работают полностью корректно - они действительно вызывают AI-модель и выполняют свои функции. Однако в момент сохранения ключа API провайдера (OpenAI, SiliconFlow, DeepSeek и других) этот ключ незаметно отправляется на сервер, контролируемый злоумышленником.

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

Механизм кражи устроен следующим образом. Чтобы воспользоваться плагином, разработчик открывает панель настроек и вставляет API-ключ от своего аккаунта у провайдера AI-услуг. Поскольку плагину действительно нужен этот ключ для вызова модели от имени пользователя, такое действие выглядит рутинным. Но в момент нажатия кнопки "Применить" обработчик настроек не только сохраняет ключ локально, но и немедленно передает его злоумышленнику через вызов метода "save()". Никакого запроса согласия, дополнительного диалога или уведомления в интерфейсе при этом не появляется.

Как показывает анализ кода, опубликованный Aikido Security, функция проверяет, что ключ начинается с "sk-", имеет длину 51 символ и не был перехвачен ранее. Затем ключ упаковывается в объект и отправляется POST-запросом на жестко прописанный IP-адрес 39.107.60[.]51 - по протоколу HTTP, без шифрования. Аутентификация запроса выполняется с помощью статического токена, также зашитого в коде плагина. Таким образом, ключ покидает машину разработчика в открытом виде и попадает на сервер, не имеющий никакого отношения к легитимным AI-провайдерам.

Дополнительную сложность представляет реализованная в плагинах модель платного уровня. После того как пользователь оплачивает небольшую сумму через встроенный донат, сервер злоумышленника возвращает клиенту другой API-ключ, и плагин переключается на использование этого ключа вместо собственного ключа пользователя. Такое поведение нехарактерно для легитимных сервисов: ни один добросовестный разработчик не станет безвозмездно передавать клиенту полноценный рабочий ключ к платному AI-провайдеру. Исследователи выдвигают версию, что одна группа жертв вставляет собственные ключи, которые сервер собирает, а вторая группа платит операторам и получает взамен ключ, украденный у первой. Таким образом, кампания превращается в сервис по перепродаже чужого доступа к AI-мощностям: оператор получает деньги с одной стороны и бесплатные учетные данные - с другой, а настоящие владельцы ключей оплачивают счета за чужое использование.

Экосистемы плагинов для редакторов кода уже давно стали частой целью атак на цепочку поставок. Достаточно вспомнить продолжающуюся кампанию GlassWorm против VS Code. Машины разработчиков представляют собой критически ценные активы. Среда разработки находится в центре рабочего процесса: в ней хранятся исходные коды, облачные учетные данные, ключи подписи, а теперь и API-ключи для платных AI-сервисов, которые можно перепродать или использовать для получения вычислительных ресурсов. Плагин работает внутри IDE без изоляции, в инструменте, которому доверяют и который держат открытым весь день. Это делает плагин идеальным укрытием для кода, который проявляет вредоносную активность только в фоновом режиме.

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

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

Network indicators

  • C2 server IP: 39.107.60.51

Affected plugins (name and plugin id)

  • DeepSeek Junit Test (org.sm.yms.toolkit)
  • DeepSeek Git Commit (com.json.simple.kit)
  • DeepSeek FindBugs (org.bug.find.tools)
  • DeepSeek AI Chat (org.translate.ai.simple)
  • DeepSeek Dev AI (com.yy.test.ai.simple)
  • DeepSeek AI Coding (com.dev.ai.toolkit)
  • AI FindBugs (com.json.view.simple)
  • AI Git Commitor (com.my.git.ai.kit)
  • AI Coder Review (org.check.ai.ds)
  • DeepSeek Coder AI (com.review.tool.code)
  • AI Coder Assistant (org.code.assist.dev.tool)
  • DeepSeek Code Review (com.coder.ai.dpt)
  • CodeGPT AI Assistant (com.my.code.tools)
  • DeepSeek AI Assist (ord.cp.code.ai.kit)
  • Coding Simple Tool (com.dp.git.ai.tool)

Vendor accounts

  • CodePilot (mycode)
  • StackSmith (misshewei)
  • CodeCrafter (keteme)
  • CodeWeaver (simpledev)
  • JetCode (skyblue)
  • DailyCode (dialycode)
  • ZenCoder (947cb4c8-5db1-4cf0-8182-0aae7c433bb3)

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