
Данный документ является машинным переводом оригинальной английской версии. В случае любых расхождений между переводом и оригиналом на английском языке, приоритет имеет английская версия. Читать оригинал на английском языке
Не посередине: почему взлом в стиле Context AI против Caiioo не принесет ничего полезного
2026-04-22 · Caiioo Team
19 апреля 2026 года компания Vercel сообщила, что сторонний ИИ-инструмент одного из сотрудников был взломан, и скомпрометированный OAuth-токен использовался для проникновения во внутренние среды Vercel. У ограниченного подмножества клиентов были раскрыты нечувствительные переменные среды. Зашифрованные/чувствительные переменные среды не пострадали.
Этим инструментом был Context AI. Сотрудник предоставил ему широкий доступ «Разрешить всё» к своему корпоративному Google Workspace. Это единственное разрешение OAuth, хранящееся на серверах Context AI, стало рычагом для всего последующего.
Злоумышленник на BreachForums отдельно выставил на продажу за $2 млн записи, которые, по его утверждению, принадлежат 580 сотрудникам Vercel. Vercel не подтвердила подлинность этого объявления.
Инцидент еще не исчерпан. Но архитектурный урок уже ясен, и он полезен для любого, кто оценивает рабочее пространство с ИИ.
Структура атаки
Модель SaaS-AI ставит вендора в середину каждого разрешения OAuth, которое вы ему даете.
Когда вы устанавливаете сторонний ИИ-инструмент для продуктивности и проходите через экран согласия OAuth, токен доступа и токен обновления, выданные Google (или Microsoft, или любым другим поставщиком удостоверений), не остаются на вашем устройстве. Они передаются на серверы вендора, потому что ИИ, которому они нужны, работает в облаке вендора. Инфраструктура вендора хранит постоянно обновляемый набор токенов для каждого из своих пользователей, ограниченный правами «Разрешить всё», которые большинство пользователей подтверждают не читая.
Это централизованное хранилище токенов — именно то, на что нацелены злоумышленники. Единоразовый взлом вендора дает доступ к Workspace тысяч клиентов. В собственном бюллетене Vercel предупреждается, что последствия могут затронуть «сотни пользователей во многих организациях».
Отчеты прослеживают исходную цепочку до сотрудника Context AI, чье личное устройство было скомпрометировано в феврале 2026 года, как сообщается, через загруженный эксплойт для игры Roblox, содержащий вредоносное ПО Lumma Stealer. Это вредоносное ПО похитило учетные данные Google Workspace и AWS сотрудника, что, в свою очередь, открыло хранилище OAuth-токенов. Одно зараженное личное устройство, одно корпоративное SaaS-хранилище, сотни пострадавших рабочих пространств далее по цепочке.
Три архитектурные причины, по которым взлом Caiioo в стиле Context AI не принес бы ничего полезного
Caiioo — это мощное рабочее пространство, ориентированное на конфиденциальность, с агентным оркестратором и интерфейсом чата, который работает в боковой панели. «Privacy-first» (конфиденциальность прежде всего) описывает конкретную архитектурную позицию, а не маркетинговый слоган. В основе лежат три конкретных свойства.
1. Токены OAuth вашего Workspace хранятся в зашифрованном виде на вашем устройстве, а не на наших серверах
Когда вы подключаете аккаунт Google или Microsoft в Caiioo, вы видите стандартный экран согласия OAuth от Google со списком разрешений (scopes), которые вы предоставляете. На этом этапе процесс выглядит идентично авторизации в Context AI.
Структурное различие заключается в том, что происходит с токенами, полученными в результате этого процесса. Токен доступа (access token) и токен обновления (refresh token), выданные Google, хранятся в зашифрованном виде на вашем устройстве — в Keychain на macOS и iOS, в Keystore на Android, в защищенном хранилище браузера в расширении. Они не хранятся в центральной базе данных Caiioo. У нас нет хранилища токенов, в котором они находились бы от вашего имени.
Когда агентному оркестратору необходимо прочитать ваш календарь или выполнить поиск в почтовом ящике, вызов API идет с вашего устройства напрямую в Google с приложением токена из защищенного хранилища вашего устройства. Наша инфраструктура не участвует в пути передачи данных для любого контента вашего Workspace.
Вы можете убедиться в этом сами в исходном коде: src/shared/auth/connections-manager.ts — это место, где сохраняются OAuth-соединения Google/Microsoft. Записи OAuthConnection, включая поля accessToken и refreshToken, записываются через адаптер локального хранилища и не передаются в центральное хранилище токенов.
2. Шина сообщений реле зашифрована сквозным методом (E2E)
Когда компонентам Caiioo на разных устройствах необходимо координировать действия — например, расширение браузера взаимодействует с десктопным приложением, телефон связывается с домашним сервером, или интерфейс боковой панели вызывает инструмент, работающий нативно на macOS — они делают это через реле (relay), которое мы хостим по адресу relay.pebbleflow.ai. Реле — это точка рандеву, которая позволяет вашим устройствам находить друг друга в разных сетях.
Это реле использует сквозное шифрование (end-to-end encryption). Устройства каждого пользователя выполняют обмен ключами через оболочку реле, и с этого момента сообщения между вашими устройствами являются зашифрованным текстом с точки зрения реле. Реле может маршрутизировать их, но не может прочитать.
Это не просто планы на будущее. Durable Object, который обрабатывает WebSocket-соединения, cloud/relay/src/user-relay.ts, задокументирован как: "Управляет WebSocket-соединениями для одного пользователя. Обрабатывает сообщения с E2E-шифрованием (непрозрачные для реле) и обмен ключами". Пути кода, обрабатывающие тип сообщения ENCRYPTED, содержат явные комментарии: "Зашифрованное сообщение для конкретного клиента (мы не можем его прочитать)". Реле архитектурно не способно проверять содержимое пересылаемых им сообщений.
3. Реле является однопользовательским (single-tenant) по своей конструкции
Реле Caiioo построено на базе Cloudflare Durable Objects. Каждый пользователь получает свой собственный экземпляр UserRelay — отдельный, изолированный на уровне среды выполнения блок вычислений и хранения. Не существует общей многопользовательской базы данных, хранящей состояние активных сессий всех пользователей, потому что для этой роли вообще нет многопользовательской базы данных. Реле каждого пользователя — это отдельный объект.
Это важно, так как исключает режим отказа «единая общая цель». Даже если злоумышленник найдет способ скомпрометировать Durable Object одного пользователя, он не получит бокового доступа к данным любого другого пользователя — нет общего хранилища, через которое можно было бы переключиться. Каждый пользователь структурно является своим собственным арендатором (tenant).
Что есть и чего нет в нашей центральной базе данных
Мы используем центральную базу данных (Cloudflare D1) для вещей, которые должны быть централизованными. Здесь важна честность. В базе данных хранятся:
- Идентификация аккаунта: ваша электронная почта, хешированный пароль (если вы используете вход по почте/паролю), ID провайдера, возвращаемый Google/Apple/Microsoft при использовании кнопок социального входа.
- Статус оплаты: ваш Stripe ID клиента, уровень подписки, лицензионный ключ и статус подписки.
- Пользовательские API-ключи для провайдеров ИИ-вывода (в частности, OpenRouter). Это учетные данные провайдера вывода — они отличаются от ваших токенов OAuth для Workspace. Они существуют для потока управляемых кредитов и для пользователей, которые хотят использовать свой собственный ключ OpenRouter во всех функциях ИИ caiioo.
- Список активаций устройств для контроля лицензий.
- Журналы аудита, хранящиеся для соответствия требованиям SOC 2.
- Таблица маршрутизации для входящих вебхуков (WhatsApp, Telegram и т. д.) — используется только если вы настроили эти интеграции.
База данных не хранит:
- Ваши токены OAuth для Workspace (Gmail, Календарь, Диск, Microsoft 365). Они находятся только на вашем устройстве.
- Содержимое ваших диалогов. Агентный оркестратор работает в вашей боковой панели; диалоги живут в вашем локальном хранилище.
- Ваши данные Workspace — письма, события календаря, файлы Диска. Они считываются напрямую из Google/Microsoft на ваше устройство, никогда не проходя через нашу инфраструктуру.
- Содержимое любых сообщений, проходящих через ретранслятор WebSocket. Ретранслятор видит только зашифрованный текст.
Взлом нашей центральной базы данных раскроет идентификационные данные аккаунта/оплаты, журналы аудита и колонку ключей вывода OpenRouter. Он не даст токенов Workspace, содержимого диалогов или данных Workspace, потому что их там просто нет.
Честные оговорки
Это иная модель угроз, а не магический щит. Вот несколько уточнений, о которых мы предпочли бы рассказать сами, прежде чем вы обнаружите их позже.
Обмен OAuth-кодами кратковременно проходит через наш ретранслятор. Google (а также Microsoft, GitHub, Slack) требуют предоставления client_secret на этапе обмена токенов, и этот секрет не может быть встроен в клиентский код. Поэтому наш ретранслятор без сохранения состояния (stateless relay) прикрепляет client_secret и пересылает ваш код авторизации в Google в обмен на фактические токены. Токены возвращаются через ретранслятор и немедленно передаются на ваше устройство для хранения. Они не сохраняются в нашей инфраструктуре. По этой же причине любое нативное приложение с интеграцией Google, которым вы когда-либо пользовались, имеет серверный компонент — это ограничение Google, а не архитектурный выбор caiioo.
Пользовательские эндпоинты позволяют полностью обойти наш OAuth-клиент. Caiioo поддерживает настройку кастомных OAuth-эндпоинтов. Это означает, что пользователь, готовый создать собственный OAuth-клиент в Google Cloud Console (или аналоге Microsoft Entra), может полностью избежать использования OAuth-скоупов Caiioo и этапа обмена через наш ретранслятор. После настройки процесс авторизации происходит напрямую между вашим устройством и Google, и Caiioo никак не участвует в этом цикле. Мы не выносим это в основные настройки для обычных пользователей, так как большинству это не требуется, а стандартная архитектура и так не допускает попадания данных вашего Workspace на наши серверы. Но такая возможность существует, и реализация будет знакома любому, кто раньше настраивал OAuth-клиент в Google Cloud Console.
Компрометация устройства по-прежнему имеет значение. Если ваш ноутбук взломан, ваши токены тоже взломаны. Принцип Local-first переносит поверхность атаки из «хранилища вендора» на «вашу конечную точку». Это более узкая и защищенная поверхность, но она не равна нулю.
Вход в аккаунт через «Sign in with Google» отделен от доступа к Workspace. Если вы входите в саму систему Caiioo через Google или Apple, этот процесс предназначен только для идентификации и создает базовое соединение, привязанное к вашему аккаунту. Это не тот же путь, что и описанный выше поток доступа к Workspace, и он не дает AI доступа к вашему почтовому ящику или календарю.
Атаки на цепочку поставок (supply-chain attacks) самого Caiioo все еще возможны. Скомпрометированный канал обновлений теоретически может доставить код, который эксфильтрует токены с вашего устройства. Мы минимизируем этот риск с помощью подписи кода и нотариального заверения на каждой платформе, где мы представлены, но методы защиты здесь отличаются от модели с централизованным хранилищем вендора — как и экономическая целесообразность для атакующих.
Как проверить это самостоятельно
Честный ответ заключается в том, что заявления вендора о конфиденциальности на маркетинговой странице невозможно доказать скептику. Поэтому ниже описано, как подтвердить наши заявления с помощью ваших собственных инструментов.
Запустите сетевой монитор во время использования caiioo. Little Snitch на macOS, GlassWire на Windows или Wireshark на любой платформе. Используйте Caiioo в обычном режиме в течение часа. Трафик, который вы увидите, и значение каждого соединения:
| Назначение | Когда | Что это значит |
|---|---|---|
oauth2.googleapis.com, gmail.googleapis.com, calendar.googleapis.com, www.googleapis.com |
Когда агент читает ваши данные Workspace | Ваше устройство напрямую связывается с Google, используя ваш локальный токен. Мы не участвуем в этом процессе. |
login.microsoftonline.com, graph.microsoft.com |
Если вы подключили Microsoft 365 | Аналогично: ваше устройство связывается с Microsoft. |
api.anthropic.com, openrouter.ai, api.openai.com, generativelanguage.googleapis.com, localhost:11434 (Ollama) |
Когда вы отправляете сообщение в чат или запускаете инструмент, использующий LLM | Ваше устройство связывается с тем AI-провайдером, которого вы настроили. Мы не участвуем в этом процессе. |
relay.pebbleflow.ai (HTTPS) |
Кратковременно, во время первоначальной настройки Workspace OAuth и при периодическом обновлении токена | Без сохранения состояния (stateless) обмен кодами OAuth. Токены проходят через сервер, но не сохраняются на нем. |
relay.pebbleflow.ai (HTTPS) |
Периодически | Проверка лицензии, получение примечаний к релизу / руководства пользователя, данные model-intelligence, проверка статуса подписки. |
relay.pebbleflow.ai (HTTPS) |
Когда вы загружаете веб-сайт или просматриваете статус подключенного аккаунта | Стандартный API-трафик. |
relay.pebbleflow.ai (WebSocket) |
Постоянно, если у вас установлено несколько компонентов Caiioo (расширение + десктопное приложение или мобильное + десктопное) | Мост возможностей, который позволяет вашим устройствам общаться друг с другом. Сквозное шифрование (end-to-end). Мы видим только зашифрованный текст. |
relay.pebbleflow.ai/api/messaging/... |
Только если вы настроили интеграции с мессенджерами (входящие WhatsApp, Telegram, Slack) | Маршрутизация вебхуков для входящих сообщений. |
Что вы не увидите никогда:
- Ваши данные Workspace (электронные письма, события календаря, файлы Drive), передаваемые на
relay.pebbleflow.ai. Эти вызовы идут с вашего устройства напрямую на*.googleapis.com. - Содержимое ваших диалогов, передаваемое на
relay.pebbleflow.ai. Оркестратор работает в вашей боковой панели; история чатов находится в вашем локальном хранилище. - Ваши API-ключи AI-провайдеров, передаваемые на
relay.pebbleflow.ai. Они хранятся на вашем устройстве. (Исключение: если вы используете поток с управляемыми кредитами, вы используете субаккаунт OpenRouter, выделенный сервером, но вызов инференса все равно выполняется с вашего устройства.)
Если вы когда-нибудь увидите запрос с вашего устройства к нашей инфраструктуре, который не соответствует приведенной выше таблице, это будет считаться инцидентом. Сообщите нам, и мы объясним это или исправим.
Что делать, если вы клиент Vercel или Context AI
Опубликованные рекомендации от Vercel, Context AI и сообщества исследователей безопасности сводятся к единому списку действий:
- Смените все секреты, хранящиеся в виде незашифрованных переменных среды Vercel. Сообщалось, что зашифрованные/чувствительные переменные не пострадали, но ротация стоит недорого.
- Проведите аудит сторонних разрешений OAuth вашей команды в Google Workspace (и Microsoft 365, если применимо). Отозвите всё, что вы не узнаете, и относитесь к любому инструменту, которому вы предоставили доступ «Разрешить всё», как к учетным данным, которые необходимо заменить.
- Ужесточите будущие согласия. Отдавайте предпочтение инструментам, запрашивающим минимально необходимые права, и рабочим пространствам, архитектура которых вообще не требует передачи долгоживущих токенов.
Третий пункт — это структурный шаг, который этот инцидент настойчиво рекомендует.
Попробуйте Caiioo
Если урок инцидента Vercel/Context AI заключается в том, что местоположение ваших токенов OAuth определяет радиус поражения при взломе вендора, то решение — выбрать рабочее пространство, которое их не хранит.
Caiioo — это мощное, ориентированное на приватность рабочее пространство с агентным оркестратором и интерфейсом чата, работающим в боковой панели. Доступно как расширение для браузера, нативное приложение для macOS, iOS, Android, а также десктопное приложение для Windows и Linux. Начните бесплатно.
Источники:
- База знаний Vercel: Бюллетень об инциденте безопасности в апреле 2026 года
- Context AI: Обновление безопасности
- TechCrunch: Хостинг приложений Vercel заявляет о взломе и краже данных клиентов
- The Hacker News: Взлом Vercel связан с атакой на Context AI
- BleepingComputer: Vercel подтверждает взлом, хакеры заявляют о продаже украденных данных
- Trend Micro: Взлом Vercel — атака на цепочку поставок OAuth обнажает скрытую угрозу