12–13 ноября 2026 года GitHub пометил как вредоносные пакеты npm и PyPI, связанные с инструментами для работы с ИИ, а HoneyLabs описала сканер, который искал на веб-серверах файлы с токенами ассистентов. Эти случаи затрагивают разные звенья среды разработки: зависимости, MCP-серверы, локальные конфигурации и файлы, случайно открытые через веб.

Общая техническая проблема — секреты часто оказываются ближе к коду и автоматизации, чем ожидает их владелец. Речь о токенах Claude Code, настройках MCP с доступом к GitHub, базам данных или Slack и правах агента выполнять команды. Если вы устанавливали упомянутые пакеты или веб-сервер может отдавать домашний каталог либо репозиторий, проверки стоит начать с инвентаризации зависимостей и доступности конфигураций.

Пакеты @rclaude: удалённый сервис и неизвестный код в сборках

Пакеты @rclaude/darwin-x64 версии 0.2.1 и @rclaude/darwin-arm64 версии 0.2.0 помечены в GitHub Advisory Database как вредоносные. Это не официальные сборки Anthropic: названия настоящих платформенных пакетов начинаются с @anthropic-ai/claude-code. Упомянутые компоненты были нативными клиентами для macOS до пакета rclaude, который появился в npm 9 ноября.

В README сервис описывался как способ запускать Claude Code на удалённом сервере rclaude.xyz, тогда как файлы и команды выполняются на компьютере пользователя. Для входа предлагали токен или браузер; устанавливать сам Claude Code и учётные данные модели, согласно описанию, не требовалось. В то же время документация сообщала, что по умолчанию удалённая сторона может изменять локальные файлы и выполнять команды. Флаг --read-only должен был ограничивать эти права.

Такой механизм означает, что во время работы клиента доверие распространяется не только на локальный компьютер, но и на удалённый сервис. В версии 0.2.1 клиент, согласно описанию, сначала обращался к «ускоренной линии» и переходил на основной сайт, если запрос не удавался; учётные данные хранились в ~/.rclaude. Но GitHub не опубликовал технического анализа вредоносных сборок, поэтому неизвестно, что именно они делали.

Рекомендация GitHub жёсткая: компьютер, на котором эти версии устанавливали или запускали, следует считать полностью скомпрометированным. Нужно сменить с другого устройства все секреты и ключи, которые могли быть на нём доступны. Одного удаления пакета недостаточно, чтобы гарантировать очистку системы. На 13 ноября указанных версий уже не было в npm; другие версии и основной пакет rclaude в базе вредоносных пакетов не значились. Это не отменяет необходимости проверить собственные зависимости.

Кампания PyPI: загрузчики под видом голосовых утилит

Пакет qwen3ttsui в PyPI представлен как небольшой загрузчик и запускатель удалённых Python-профилей. Согласно описанию исследователя kam193, он относится к кампании 2026-10-voice-synthesis-profiles. Подобные пакеты сами не содержат основной вредоносной нагрузки: их функция — загрузить код с заданного URL-адреса и запустить его. Какой именно код мог загружаться, неизвестно.

В GitHub Advisory Database исследователи насчитали 83 записей с меткой этой кампании. Первые 43 появились 22 октября 2026 года, ещё 21 — на следующий день; 12 ноября добавили 15 пакетов, а 13 ноября — ещё четыре. Примерно половина названий имитирует средства синтеза или распознавания речи: например, ferrotts, lumitts і voxgramasr. Другие напоминают утилиты для очередей задач или оценки, в частности taskquay и evalometer. Во всех advisory указана версия 0.1.0.

Среди пакетов, добавленных 12–13 ноября, — acustoviasr, eulaliatts, evalometer, ferrotts, flowmetry, garviscope, garvisometerui, garvisuite, inframetric, lumitts, melstagen, phoneliasr, qwen3ttsui, spectrova, stackvane, voxcpmttslora, voxgramasr, voxrelitts і wavforge. Наличие загрузчика не доказывает, что он похищал данные; однако загруженный и запущенный им код мог выполнять другие действия. Поэтому проверять нужно не только название пакета, но и среду, в которой его запускали.

MCP-сервер для водительских удостоверений отправлял изображения на IP-адрес

Пакет my-mcp-server-driving-license-ocr предоставлял агенту инструмент analyze_image для распознавания водительских удостоверений. Согласно advisory, в версии 0.1.3 изображения — в виде ссылки или байтов в base64 — отправлялись POST-запросом на http://42.193.222.35:8000/ocr_pic. Передача выполнялась по обычному HTTP, без TLS, а значит, соединение не было зашифровано.

Код читал адрес из MY_API_URL, но затем перезаписывал его жёстко заданным IP-адресом. Поэтому пользователь не мог направить запросы на собственный сервер, просто изменив переменную среды. В остальных четырёх опубликованных версиях, согласно проверке исходного кода, адрес брали из MY_API_URL; жорстко заданий IP знайшли саме у 0.1.3. Причини такої реалізації невідомі, але результат для користувача конкретний: документи, передані цій версії, надсилалися невідомому отримувачу. Якщо пакет використовували для справжніх посвідчень, такі документи слід вважати розкритими.

Сканеры ищут конфигурации Claude Code, Cursor и MCP

11 ноября HoneyLabs опубликовала анализ незапрошенных запросов, зафиксированных её honeypot-системами с 27 августа до 9 ноября 2026 года. Один сканер из Google Cloud сначала регулярно проверял 543 путей, включая типичные журналы, дампы баз данных и файлы с ключами. 4 сентября он за секунду добавил в список ещё 49 путей, среди которых 32 относились к ИИ-ассистентам.

В список входили /.claude.json, /.claude/settings.json, /.claude/.credentials.json, /.cursor/mcp.json, /.windsurf/mcp.json, /.aider.env, /.continue/config.json, /.mcp.json, /.vscode/mcp.json и /litellm_config.yaml. В файле ~/.claude/.credentials.json Claude Code хранит OAuth-токены без системного хранилища ключей. MCP-конфигурации могут содержать в блоке env секреты для GitHub, баз данных и Slack. Среди остальных запрашиваемых файлов были история команд и файлы оболочки, где могут оставаться строки вроде export ANTHROPIC_API_KEY=....

За первые 11 дней наблюдений сканер отправил 366 845 запросов с 2 894 IP-адресов. 2 499 адресов встречались только в один день, поэтому блокировка отдельных IP вряд ли станет надёжной защитой. Запросы шли на 203 портов; порт 443 занял лишь 28-е место по количеству обращений. Чаще всего сканер проверял порты 8190, 8085 и 4567, на которых могут работать внутренние панели и среды разработки.

Именно этот сканер обращался к файлам ИИ-ассистентов с 4 по 7 сентября, а 8 сентября прекратил такие запросы. Другие клиенты продолжали их отправлять: с 8 сентября по 9 ноября HoneyLabs насчитала 8 067 запросов, связанных с такими путями. Авторы анализа подчёркивают ограниченность этих данных: honeypot видит запросы к своим ловушкам, но не может установить, получил ли сканер настоящий файл с токенами на реальном сервере.

Что проверить на компьютере и веб-сервере

  1. Проверьте npm. Для глобальных зависимостей выполните npm ls -g --all, а в проекте — npm ls --all. Платформенные сборки могли быть необязательными зависимостями rclaude, поэтому проверьте и его. Отдельно осмотрите ~/.rclaude. Если найдены @rclaude/darwin-x64 0.2.1 или @rclaude/darwin-arm64 0.2.0, следуйте рекомендации GitHub: считайте машину скомпрометированной и меняйте секреты с другого устройства.

  2. Проверьте среды Python и lock-файлы. Сверьте зависимости с полным списком пакетов в GitHub Advisory Database по метке кампании. Например, поиск по частям названий можно выполнить через pip list | grep -iE 'tts|asr|qwen3ttsui|garvi|wavforge|spectrova'. Если один из пакетов запускался, выясните, какие файлы и сетевые ресурсы были доступны процессу: сам загрузчик не показывает, что именно выполнялось после загрузки.

  3. Выясните, подключался ли MCP-сервер. Проверьте версию my-mcp-server-driving-license-ocr. Для 0.1.3 изображения отправлялись на сторонний IP-адрес. Если через эту версию проходили настоящие документы, исходите из того, что они могли быть раскрыты.

  4. Проверьте ответы веб-сервера, а не только код статуса. Запросите как минимум /.claude.json, /.claude/.credentials.json, /.cursor/mcp.json, /.mcp.json і /.aider.env. Код 200 сам по себе ничего не доказывает: сервер мог вернуть обычную страницу. Проверьте тело ответа. Если там действительно есть запрошенный файл, выясните, указывает ли корень сайта на домашний каталог или рабочую копию репозитория, и смените секреты из доступного файла. Для MCP-конфигурации это касается каждого токена в блоке env.

  5. Ограничьте доступ к конфигурациям по путям. Поскольку адреса сканеров быстро меняются, блокировка только по IP может не помочь. HoneyLabs советует отсекать запросы к чувствительным каталогам на уровне веб-сервера, например правилом location в nginx для путей Claude, Cursor, Aider, Continue, Windsurf и MCP.

Проверка не заканчивается на сервере: такие файлы могут попасть и в Git. В начале ноября Apiiro обнаружила 1 122 публичных копий .claude/settings.local.json с настоящими секретами. Поэтому каталоги .claude/, .cursor/ и MCP-конфигурации на ноутбуках и серверах требуют такого же контроля, как файлы .env: не открывать их через веб и не добавлять в публичные репозитории.

Что пока неизвестно

Количество пострадавших от пакетов не названо. GitHub не объяснил, какие именно действия выполняли помеченные сборки @rclaude; для PyPI-завантажувачів невідоме завантажуване навантаження. HoneyLabs також не може підтвердити, чи отримав сканер справжні секрети з будь-якого сервера. Тому оцінка ризику має спиратися на власні журнали, список залежностей і вміст відповідей вебсерверів, а не лише на те, що потенційний витік поки не підтверджений.