Атакующие охотятся за токенами Claude Code и MCP: что проверить
Свежая малварь в npm и PyPI и сканеры, которые ищут токены ИИ-ассистентов на веб-серверах: что проверить у себя.
12 и 13 ноября 2026 года GitHub пометил как вредоносные сразу несколько пакетов, рассчитанных на разработчиков, которые работают с ИИ: две сборки нативного клиента неофициального сервиса «удалённый Claude Code» в npm, ещё 19 загрузчиков из длинной кампании в PyPI под видом голосовых ИИ-утилит и MCP-сервер, который отправлял фотографии водительских прав на сервер по голому IP-адресу. Днём раньше, 11 ноября, компания HoneyLabs опубликовала разбор сканера, который спрашивал у веб-серверов файлы с токенами Claude Code, Cursor и других ассистентов.
Общее у этих историй одно: атакующих интересуют уже не только ключи облаков и пароли к базам, но и всё, что окружает ИИ-агента разработчика. Токены подписки, конфигурации MCP с секретами от GitHub и баз, сам агент, которому разрешено выполнять команды на машине. Если вы ставили что-то из перечисленного ниже или держите доступный из интернета сервер, который раздаёт домашний каталог или чекаут репозитория, это повод проверить машину и сменить ключи.
Ключевые выводы
- В npm вредоносными признаны
@rclaude/darwin-x640.2.1 (GHSA-gm9f-q9rw-p3gm, 12 ноября) и@rclaude/darwin-arm640.2.0 (GHSA-mq7w-jmv5-vq3p, 13 ноября): машину с ними GitHub советует считать полностью скомпрометированной. - Кампания загрузчиков в PyPI с названиями вроде
qwen3ttsuiиferrottsнасчитывает в базе GitHub 83 пакета, 19 из них добавлены 12–13 ноября. - MCP-сервер
my-mcp-server-driving-license-ocr0.1.3 игнорировал настройку и слал снимки документов на42.193.222.35по HTTP без шифрования. - По данным HoneyLabs, сканер из Google Cloud за 11 дней отправил 366 845 запросов, в его списке 32 пути файлов ИИ-ассистентов, включая
/.claude/.credentials.json. - Проверка простая: поискать пакеты в зависимостях, запросить эти пути у своих серверов и сменить все секреты, если что-то нашлось.
Что за пакеты @rclaude и чем они опасны
@rclaude/darwin-x64 и @rclaude/darwin-arm64 не подделки под официальные пакеты Anthropic: у настоящего Claude Code платформенные сборки называются @anthropic-ai/claude-code-darwin-arm64 и так далее. Это нативные клиенты для macOS к пакету rclaude, который появился в npm 9 ноября. Его README на китайском описывает сервис так: Claude Code работает на удалённом сервере rclaude.xyz, а файлы и команды выполняются на компьютере пользователя; сам Claude Code и учётные данные модели ставить не нужно, вход по токену или через браузер.
По умолчанию, как сказано в том же README, клиент разрешает удалённой стороне менять локальные файлы и выполнять команды, а флаг --read-only эти права сужает. Даже без вредоносного кода такая схема означает, что чужой сервер управляет вашим терминалом. С версии 0.2.1 клиент, по описанию, сначала ходит на «ускоренную линию» и лишь при ошибке возвращается на основной сайт, а учётные данные кладёт в ~/.rclaude.
В advisory GitHub нет технических подробностей, только стандартный вердикт для малвари: компьютер, где пакет был установлен или запущен, следует считать полностью скомпрометированным, все секреты и ключи с него нужно сменить с другого устройства, а удаление пакета не гарантирует, что вредоносный код исчезнет. Затронуты конкретные версии: @rclaude/darwin-x64 0.2.1 и @rclaude/darwin-arm64 0.2.0. Сейчас этих версий в реестре npm уже нет, а остальные (последняя 0.2.6) и основной пакет rclaude на 13 ноября в базе вредоносных не числятся. Что именно делали помеченные сборки, публично не описано.
Как устроена кампания загрузчиков в PyPI
13 ноября GitHub опубликовал advisory по пакету qwen3ttsui, название которого отсылает к голосовой модели Qwen3-TTS. Он входит в кампанию, которую исследователь под ником kam193 назвал 2026-10-voice-synthesis-profiles. По его описанию, это семейство похожих загрузчиков: сами пакеты вредоносной нагрузки не содержат, а умеют скачать и выполнить код по заданному URL. Как их используют, неизвестно, но скоординированный выпуск множества обманчивых способов загрузить чужой код исследователь считает явно вредоносным. Сам qwen3ttsui в PyPI описан как «крошечный загрузчик и запускатель удалённых Python-профилей».
Мы выгрузили из GitHub Advisory Database все записи с меткой этой кампании: их 83. Первые 43 появились 22 октября, ещё 21 на следующий день, 15 добавлены 12 ноября и 4 утром 13 ноября. Примерно половина названий маскируется под синтез и распознавание речи (ferrotts, lumitts, voxcpmttslora, acustoviasr), остальные похожи на утилиты для очередей задач и бенчмарков (taskquay, evalometer, stackvane). Во всех записях затронута версия 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-сервер для распознавания прав признан вредоносным
my-mcp-server-driving-license-ocr предлагает агенту инструмент analyze_image для распознавания водительских удостоверений. По advisory на основе находки Amazon Inspector, в версии 0.1.3 инструмент принимает ссылку на картинку или её байты в base64 и отправляет их POST-запросом на http://42.193.222.35:8000/ocr_pic. Код читает адрес из переменной окружения MY_API_URL, но сразу перезаписывает его захардкоженным IP, так что направить запросы на свой сервер нельзя. Адрес никак не раскрыт издателем, соединение идёт без TLS, а получатель видит изображения документов с персональными данными.
Мы скачали все пять опубликованных версий: в 0.1.0–0.1.2 и в последней 0.1.5 адрес берётся только из MY_API_URL, захардкоженный IP есть лишь в 0.1.3. В 0.1.5 сообщение об ошибке отсылает к настройкам на ModelScope, китайской площадке моделей и MCP-серверов. Похоже ли это на небрежную отладку или на сознательный сбор данных, по коду не скажешь, но для пользователя результат один: документы уходили на неизвестный сервер. Для MCP-серверов из каталогов это хороший пример, почему стоит читать код инструмента до подключения, а версии фиксировать.
Кто просит у веб-серверов .claude/.credentials.json
HoneyLabs держит сеть ловушек-honeypot и разобрала незапрошенный трафик с 27 августа по 9 ноября 2026 года. 4 сентября сканер из Google Cloud (AS396982), который с 27 августа ежедневно запрашивал одни и те же 543 пути (логи Laravel, ключи почтовых сервисов, дампы баз), за одну секунду добавил в список 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. Остальные 17 путей — история и стартовые файлы оболочки вроде /.zsh_history и /.bashrc, где тоже оседают строки вида export ANTHROPIC_API_KEY=....
За первые 11 дней наблюдения сканер отправил 366 845 запросов с 2 894 адресов, 2 499 из них встречались лишь один день: похоже на короткоживущие облачные машины, поэтому блокировать по IP почти бесполезно. Запросы шли на 203 порта, и 443 был только 28-м по нагрузке; чаще всего стучались на 8190, 8085 и 4567, где обычно оказываются открытые внутренние панели и dev-серверы. Файлы ИИ-ассистентов этот сканер запрашивал с 4 по 7 сентября, 8 сентября исчез, но другие клиенты продолжили: с 8 сентября по 9 ноября HoneyLabs насчитала 8 067 таких запросов, хотя бы несколько каждую неделю. Для масштаба: только за неделю с 4 сентября их было 18 707.
Оговорка авторов важна: ловушки видят только то, что сканеры спрашивают, и узнать, отвечал ли им хоть один настоящий сервер, нельзя. Первые такие запросы ещё в июле описал SANS Internet Storm Center на логах одного маленького хостинга, а к сентябрю эти пути попали в общий словарь для поиска учётных данных.
Что проверить у себя прямо сейчас
- npm:
npm ls -g --allдля глобальных установок иnpm ls --allв проектах (платформенные сборки ставятся как необязательные зависимостиrclaude), плюс каталог~/.rclaude. Если стояли@rclaude/darwin-x640.2.1 или@rclaude/darwin-arm640.2.0, по рекомендации GitHub считайте машину скомпрометированной и меняйте с другого устройства все ключи и токены, которые на ней были. - PyPI: поищите пакеты кампании в окружениях и lock-файлах, например
pip list | grep -iE 'tts|asr|qwen3ttsui|garvi|wavforge|spectrova', и сверьте с полным списком в базе GitHub по метке кампании. Загрузчик сам по себе ничего не крадёт, но код, который он скачал и выполнил, мог сделать что угодно. - MCP: если подключали
my-mcp-server-driving-license-ocr, проверьте версию; 0.1.3 отправляла картинки на сторонний IP. Документы, которые через неё проходили, стоит считать утёкшими. - Веб-серверы: запросите у своих хостов пути
/.claude.json,/.claude/.credentials.json,/.cursor/mcp.json,/.mcp.json,/.aider.env. Код 200 сам по себе ничего не доказывает: сайт может отдать обычную страницу. Откройте тело ответа; если там действительно лежит запрошенный файл, корень сайта указывает на домашний каталог или чекаут, и все секреты из этого файла нужно сменить, для MCP-конфига это каждый токен в блокеenv. - Блокировка по путям: адреса сканеров меняются ежедневно, поэтому HoneyLabs советует отсекать сами пути, например одним блоком
locationв nginx (ниже).
Те же файлы утекают и через Git: в начале ноября Apiiro нашла 1 122 публичных копии .claude/settings.local.json с настоящими секретами, мы разбирали, как они туда попадают. А мартовская атака на LiteLLM показала, как пакет для работы с нейросетями превращается в стилер секретов разработчика: полный разбор той атаки. Каталоги .claude/, .cursor/ и MCP-конфиги на ноутбуке и сервере стоит защищать так же, как .env.
Чего пока не известно
Число пострадавших ни по одному из пакетов не названо. GitHub не объяснил, что именно делали помеченные сборки @rclaude, и не пометил остальные версии; у кампании загрузчиков в PyPI неизвестна полезная нагрузка, которую они должны были скачивать. HoneyLabs не может сказать, получил ли сканер хоть один настоящий файл с токенами. Если появятся разборы кода @rclaude или сведения об отзыве токенов со стороны Anthropic и Cursor, мы обновим материал.
Источники: GitHub Advisory: Malware in @rclaude/darwin-x64 (GHSA-gm9f-q9rw-p3gm), GitHub Advisory: Malware in @rclaude/darwin-arm64 (GHSA-mq7w-jmv5-vq3p), GitHub Advisory: Malicious code in qwen3ttsui (GHSA-jh3g-jv4f-xccp), kam193 Bad packages: qwen3ttsui, GitHub Advisory: Malicious code in my-mcp-server-driving-license-ocr (GHSA-wg5f-m5mv-gmjg), HoneyLabs: We analyzed 366,845 requests from a scanner that asks web servers for .claude.json and .cursor/mcp.json, npm: rclaude
Изображение на обложке: Данные: GitHub Advisory Database; расчёт Tproger