VP
    Форум

    Я взломал Perplexity Computer и получил безлимитный доступ к Claude Code

    13 мар. 2026 г.
    1119
    2

    Один промпт. Три консольные команды. Я натравил их собственный ИИ на самого себя.

    Подобные уязвимости наверняка есть в любом современном многоагентном ИИ-продукте. А решение кроется в паттерне проектирования, который в индустрии пока вообще не обсуждают.

    Вот как это было.

    Изначально я не планировал ничего ломать. Я просто ковырялся в песочницах Perplexity Computer, потому что строю собственную агентную инфраструктуру. Хотел посмотреть, как в реальных боевых системах устроена изоляция сред: какие данные шарятся, а какие остаются закрытыми.

    Начал изучать систему изнутри. И вдруг заметил, что в песочнице стоит Claude Code.

    Я попросил агента запустить его и накидать простенький код — просто ради интереса. Все прошло гладко. Это был самый обычный Claude Code, запущенный в режиме автоматического согласия, чтобы не запрашивать у пользователя подтверждения действий. Для агентной системы — логичный шаг.

    Тут до меня дошло: стоп, а как они работают с API-ключами? Claude Code нужен ключ Anthropic, и он обязан где-то лежать прямо внутри этой песочницы. Как именно его туда пробрасывают? Какие у него права? Есть ли изоляция?

    С этого вопроса всё и началось.

    Субагент держал ключ в переменных своего окружения. Оставалось его стащить.

    Я пытался провернуть это шесть раз — безуспешно.

    1. Попросил субагента выгрузить переменные окружения — отказ.
    2. Подсунул троян в общую файловую систему — агент прочитал код, понял суть и наотрез отказался его выполнять.
    3. Отравил файлы .bashrc и .profile — они отработали слишком рано, когда API-ключ еще не подтянулся.
    4. Подложил фейковый бинарник node в PATH — он даже не запустился.
    5. Включил агента-программиста и стал мониторить дерево процессов — выяснилось, что субагент крутится в другой песочнице, поэтому перехватить ничего не вышло :(
    6. Искал системный промпт Claude Code, чтобы вырезать оттуда запрет на такие действия — самого промпта нигде не оказалось.

    Шесть провалов подряд. Защита Claude на уровне промптов оказалась на высоте. Любые мои хитрости модель рубила на корню.

    Изображение
    Изображение

    А потом до меня дошло, что Claude Code — это обычное Node.js-приложение, которое запускается через npm. При старте npm всегда читает файл ~/.npmrc из домашней директории. А папка эта общая, и у меня есть туда права на запись.

    У Node.js есть флаг --require, который подгружает нужный JS-модуль еще до старта основного приложения. Этот флаг можно прописать через NODE_OPTIONS прямо в .npmrc. Получается, если я закину свой .npmrc в общую домашнюю папку, любой процесс Node, созданный субагентом, автоматически выполнит мой код! Причем еще до инициализации самого Claude Code, до любых проверок безопасности — вообще до всего!

    Весь эксплойт уложился в три шага:

    1. Пишем скрипт на шесть строк, который дампит process.env в файл внутри общего рабочего пространства.
    2. echo 'node-options=--require /path/to/script.js' > ~/.npmrc
    3. Просим Perplexity Computer выполнить вообще любую задачу, связанную с кодом.

    Субагент запускается → npm читает мой .npmrc → срабатывает прелоад еще до загрузки Claude Code → полные учетные данные от API сливаются в общую файловую систему.

    Сработало! Я вытащил токен шлюза Perplexity. Через agent-proxy.perplexity.ai он проксирует все запросы прямо на их корпоративный аккаунт в Anthropic.

    Изображение
    Изображение

    Первым делом я, конечно же, прописал этот API-ключ и BASE_URL в Claude Code у себя на ноутбуке. Думал, что все запросы упадут с ошибкой, так как привязаны к песочнице. Но каково было мое удивление, когда я получил мгновенный ответ от Opus 4.6!

    Потом промелькнула мысль: «Они точно спишут деньги за эти запросы с моего аккаунта, ключ ведь наверняка привязан к профилю». И снова мимо.

    Я попросил модель сгенерировать огромный текст с подробным описанием мировой истории, всеми империями, изобретениями и открытиями. Запустил пять таких запросов параллельно, получив по 100 с лишним тысяч токенов на выходе в каждом. По идее, это должно было выжечь все мои лимиты в Perplexity Computer, но баланс даже не шелохнулся.

    Ни ограничений по IP, ни привязки к сессии, ни изоляции в песочнице. Платили за всё они.

    Один из самых богатых ИИ-стартапов планеты посыпался из-за простого дотфайла — метода, который используют для атак на цепочки поставок Node.js еще с 2019 года.

    Сама модель отработала идеально. А вот инфраструктура подвела.

    А теперь главное. То, что стоит усвоить всем фаундерам, которые сейчас пилят инфраструктуру для ИИ-агентов.

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

    Проблема в том, что их прокси-токен вообще никак не привязан к контексту. Стоит его перехватить — и он будет работать где угодно и когда угодно.

    Как нужно делать по-настоящему безопасно:

    Привязывайте токен к ID песочницы. Если токен и ID не совпадают — сразу отказ. Ключ утек, а доступа к песочнице нет? Значит, он бесполезен. В идеале его стоит привязать еще и к IP-адресу, но сервис E2B (их провайдер песочниц) не отдает эти данные до завершения инициализации.

    Используйте эфемерные токены. Выпускайте ключ только на время старта песочницы и убивайте при ее остановке. Никаких долгоживущих доступов. Прокси должен генерировать короткоживущий токен на старте сессии и уничтожать его в конце. Утекший ключ от мертвой песочницы — это мертвый ключ.

    Привяжите токен к биллингу конкретного пользователя. Если остальные уровни защиты пали, и кто-то всё же вытащил активный ключ из живой сессии — пусть хотя бы деньги списываются с его же баланса, а не из общего бюджета компании. Это превращает уязвимость типа «безлимитный халявный API» в банальный перерасход собственной квоты. Согласитесь, совсем другой уровень угрозы.

    Привязка к среде, эфемерность и персональный биллинг — вот те три кита, на которых держится паттерн проксирования. Без них вы просто плодите лишние сетевые узлы, которые никого и ни от чего не спасут.

    И это беда не только Perplexity. Сегодня такая архитектура стала де-факто стандартом: ее банально быстрее собрать. Общие диски для агентов, долгоживущие креды, списания с мастер-аккаунта — готов поспорить, что большинство запущенных многоагентных продуктов страдают от тех же болячек.

    Я сообщил об уязвимости @AravSrinivas и @denisyarats до публикации этого поста.

    Изображение
    Изображение

    Комментарии (2)

    Уже пофиксили?)

    GGleb Kudryavtcev13 мар. 2026 г., 17:35

    Я бы удивился, если нет 🙂

    Войдите, чтобы комментировать

    Глеб Кудрявцев

    AI Architecture & Engineering

    Системный подход к искусственному интеллекту. От архитектуры до продакшена.

    Контакты

    © 2026 Глеб Кудрявцев. Все права защищены.

    Built with precision

    Я взломал Perplexity Computer и получил безлимитный доступ к Claude Code