Not in the middle: why a Context AI–style breach against Caiioo would yield nothing useful

Bu belge, orijinal İngilizce metnin makine çevirisidir. Bu çeviri ile orijinal İngilizce sürüm arasında herhangi bir çelişki olması durumunda, İngilizce sürüm geçerli olacaktır. İngilizce orijinal metni oku


Arada değil: Caiioo'ya yönelik Context AI tarzı bir ihlal neden yararlı hiçbir şey sağlamaz?

2026-04-22 · Caiioo Team

19 Nisan 2026'da Vercel, tek bir çalışanın kullandığı üçüncü taraf yapay zeka aracının ele geçirildiğini ve ele geçirilen OAuth belirtecinin Vercel'in dahili ortamlarına sızmak için kullanıldığını açıkladı. Sınırlı bir müşteri grubunun hassas olmayan ortam değişkenleri açığa çıktı. Şifrelenmiş/hassas ortam değişkenleri etkilenmedi.

Söz konusu araç Context AI idi. Çalışan, kurumsal Google Workspace hesabına geniş kapsamlı "Hepsine İzin Ver" erişimi vermişti. Context AI sunucularında tutulan bu tek OAuth izni, sonrasında yaşanan her şey için bir kaldıraç noktası oldu.

BreachForums'daki bir tehdit aktörü, 580 Vercel çalışanı kaydı olduğunu iddia ettiği verileri 2 milyon dolara satışa çıkardı. Vercel bu listeyi doğrulamadı.

Olay henüz sona ermiş değil. Ancak mimari ders şimdiden netleşti ve bu, herhangi bir yapay zeka çalışma alanını değerlendiren herkes için faydalı bir ders.

Saldırının şekli

SaaS-AI modeli, verdiğiniz her OAuth izninde bir satıcıyı aracı konumuna koyar.

Üçüncü taraf bir yapay zeka üretkenlik aracı yüklediğinizde ve OAuth onay ekranını tıkladığınızda, Google (veya Microsoft veya herhangi bir kimlik sağlayıcı) tarafından verilen erişim belirteci ve yenileme belirteci cihazınızda kalmaz. Bunlar satıcının sunucularına iletilir, çünkü onlara ihtiyaç duyan yapay zeka satıcının bulutunda çalışır. Satıcının altyapısı, çoğu kullanıcının okumadan tıkladığı "Hepsine İzin Ver" izinleri kapsamındaki her bir kullanıcısı için sürekli yenilenen bir belirteç kümesi tutar.

Bu merkezi belirteç deposu, tam olarak saldırganların hedef aldığı şeydir. Satıcıyı bir kez ele geçirmek, binlerce müşteri için Workspace erişimi sağlar. Vercel'in kendi bülteni, zincirleme etkilerin "birçok kuruluştaki yüzlerce kullanıcıya" dokunabileceği konusunda uyarıyor.

Raporlar, orijinal zinciri Şubat 2026'da kişisel cihazı ele geçirilen bir Context AI çalışanına kadar takip ediyor; bildirildiğine göre bu durum, Lumma Stealer bilgi hırsızı kötü amaçlı yazılımını taşıyan indirilmiş bir Roblox oyun hilesi aracılığıyla gerçekleşti. Bu kötü amaçlı yazılım, çalışanın Google Workspace ve AWS kimlik bilgilerini sızdırdı ve bu da OAuth belirteç kasasının kilidini açtı. Bir enfekte kişisel cihaz, bir kurumsal SaaS kasası, yüzlerce zincirleme Workspace.

Caiioo'ye yönelik Context AI tarzı bir veri ihlalinin neden hiçbir işe yaramayacağına dair üç mimari neden

Caiioo, bir yan panelde çalışan ajan tabanlı bir orkestratör ve sohbet arayüzüne sahip, güçlü ve gizlilik odaklı bir çalışma alanıdır. "Gizlilik odaklı" ifadesi bir pazarlama sloganı değil, belirli bir mimari duruşu tanımlar. Burada işleyen üç somut özellik bulunmaktadır.

1. Workspace OAuth token'larınız sunucularımızda değil, cihazınızda şifrelenmiş olarak saklanır

Caiioo'da bir Google veya Microsoft hesabını bağladığınızda, verdiğiniz izin kapsamlarını (scopes) içeren standart Google OAuth onay ekranını görürsünüz. Buraya kadar her şey Context AI yetkilendirmesiyle aynı görünür.

Yapısal fark, bu onay sürecinden çıkan token'lara ne olduğudur. Google tarafından verilen access token ve refresh token cihazınızda şifrelenmiş olarak saklanır — macOS ve iOS'te Keychain'de, Android'de Android Keystore'da, tarayıcı eklentisinde ise tarayıcının güvenli depolama alanında. Bunlar Caiioo'nun merkezi veritabanında saklanmaz. Sizin adınıza bunları tutan bir token kasamız (vault) yoktur.

Ajan tabanlı orkestratörün takviminizi okuması veya gelen kutunuzda arama yapması gerektiğinde, API çağrısı cihazınızdaki güvenli depolama alanından alınan token ile birlikte doğrudan cihazınızdan Google'a gider. Altyapımız, Workspace içeriklerinizin hiçbirinin veri yolunda (data path) yer almaz.

Bunu kaynak kodunda kendiniz de doğrulayabilirsiniz: Google/Microsoft OAuth bağlantılarının kalıcı hale getirildiği yer src/shared/auth/connections-manager.ts dosyasıdır. accessToken ve refreshToken alanlarını içeren OAuthConnection kayıtları, merkezi bir token deposuna iletilmek yerine yerel depolama adaptörü aracılığıyla yazılır.

2. Relay'in mesaj veri yolu uçtan uca şifrelidir

Farklı cihazlardaki Caiioo bileşenlerinin koordine olması gerektiğinde — tarayıcı eklentinizin masaüstü uygulamanızla konuşması, telefonunuzun ev sunucunuzla konuşması, yan panel kullanıcı arayüzünün macOS üzerinde yerel olarak çalışan bir aracı çağırması gibi — bu işlem relay.pebbleflow.ai adresinde barındırdığımız bir relay (aktarıcı) üzerinden gerçekleşir. Relay, cihazlarınızın ağlar üzerinden birbirini bulmasını sağlayan buluşma noktasıdır.

Bu relay uçtan uca şifrelidir. Her kullanıcının cihazları relay zarfı üzerinden bir anahtar değişimi gerçekleştirir ve bu noktadan sonra cihazlarınız arasındaki mesajlar relay'in bakış açısından şifreli metindir (ciphertext). Relay bunları yönlendirebilir ancak okuyamaz.

Bu sadece bir temenni değildir. WebSocket bağlantılarını yöneten Durable Object olan cloud/relay/src/user-relay.ts, şu şekilde belgelenmiştir: "Tek bir kullanıcı için WebSocket bağlantılarını yönetir. Uçtan uca şifrelenmiş mesajları (relay için opaktır) ve anahtar değişimini işler." ENCRYPTED mesaj tipini işleyen kod yolları açıkça şu şekilde yorumlanmıştır: "Belirli bir istemciye giden şifreli mesaj (biz okuyamayız)." Relay, ilettiği mesajların içeriğini inceleyebilecek bir mimariye sahip değildir.

3. Relay, yapı gereği kullanıcı başına tek kiracılıdır (single-tenant)

Caiioo'nun relay'i Cloudflare Durable Objects üzerine inşa edilmiştir. Her kullanıcı kendi UserRelay örneğine — çalışma zamanında izole edilmiş ayrı bir bilgi işlem ve depolama birimine — sahip olur. Her kullanıcının canlı oturum durumunu tutan paylaşımlı, çok kiracılı (multi-tenant) bir veritabanı yoktur; çünkü bu rol için hiçbir çok kiracılı veritabanı mevcut değildir. Her kullanıcının relay'i ayrı bir nesnedir.

Bu önemlidir çünkü tek bir paylaşımlı hedef üzerindeki hata modunu ortadan kaldırır. Bir saldırgan bir kullanıcının Durable Object'ine sızmanın bir yolunu bulsa bile, başka bir kullanıcının verilerine yatay geçiş (lateral access) sağlayamaz; çünkü üzerinden geçiş yapılabilecek paylaşımlı bir ana depo yoktur. Her kullanıcı, yapısal olarak kendi kiracısıdır.

Merkezi veritabanımızda neler var ve neler yok?

Merkezi olması gereken şeyler için merkezi bir veritabanı (Cloudflare D1) işletiyoruz. Burada dürüstlük önemlidir. Veritabanı şunları saklar:

  • Hesap kimliği: e-postanız, e-posta/şifre girişi kullanıyorsanız karma şifreniz, sosyal giriş düğmesi kullanıyorsanız Google/Apple/Microsoft tarafından döndürülen sağlayıcı kimliği.
  • Faturalandırma durumu: Stripe müşteri kimliğiniz, abonelik kademeniz, lisans anahtarınız ve abonelik durumunuz.
  • Yapay zeka çıkarım sağlayıcıları için kullanıcı başına API anahtarları (özellikle OpenRouter). Bunlar çıkarım sağlayıcı kimlik bilgileridir — Workspace OAuth belirteçlerinizden farklıdır. Yönetilen kredi akışı ve Caiioo'nun yapay zeka özellikleri genelinde kullanmak üzere kendi OpenRouter anahtarını getirmek isteyen kullanıcılar için mevcuttur.
  • Lisans uygulaması için cihaz aktivasyon listesi.
  • SOC 2 kanıt gereksinimleri için tutulan denetim günlükleri.
  • İsteğe bağlı gelen web kancaları için bir yönlendirme tablosu (WhatsApp, Telegram vb.) — yalnızca bu mesajlaşma entegrasyonlarını yapılandırdıysanız kullanılır.

Veritabanı şunları saklamaz:

  • Workspace OAuth belirteçleriniz (Gmail, Takvim, Drive, Microsoft 365). Bunlar yalnızca cihazınızdadır.
  • Konuşma içeriğiniz. Ajan orkestratörü yan panelinizde çalışır; konuşmalar yerel depolama alanınızda yaşar.
  • Workspace verileriniz — e-postalar, takvim etkinlikleri, Drive dosyaları. Bunlar doğrudan Google/Microsoft'tan cihazınıza okunur, asla altyapımızdan geçmez.
  • WebSocket rölesinden akan herhangi bir mesajın içeriği. Röle yalnızca şifreli metni görür.

Merkezi veritabanımızın ihlali; hesap/faturalandırma kimliğini, denetim günlüklerini ve OpenRouter çıkarım anahtarı sütununu açığa çıkarır. Workspace belirteçlerini, konuşma içeriğini veya Workspace verilerini vermez, çünkü bunlar alınacak şekilde orada değildir.

Dürüst uyarılar

Bu farklı bir tehdit modelidir, sihirli bir kalkan değildir. Daha sonra keşfetmek yerine bizden duymanızı tercih ettiğimiz birkaç husus şunlardır:

OAuth kod değişimi (code-exchange) kısa süreliğine relay sunucumuza temas eder. Google (ve Microsoft, GitHub, Slack), token değişimi adımında OAuth client_secret bilgisinin sunulmasını gerektirir ve bu gizli anahtar istemci kodunun içinde gönderilemez. Bu nedenle, durumsuz (stateless) relay sunucumuz client_secret bilgisini ekler ve yetkilendirme kodunuzu gerçek tokenlarla takas etmek üzere Google'a iletir. Tokenlar relay üzerinden geri gelir ve depolanmak üzere anında cihazınıza döndürülür. Altyapımızda kalıcı olarak saklanmazlar. Bu, şimdiye kadar kullandığınız her yerel Google entegreli uygulamanın bir sunucu bileşenine sahip olmasının nedenidir — bu bir Google kısıtlamasıdır, bir Caiioo tasarım tercihi değildir.

Özel uç noktalar (custom endpoints), OAuth istemcimizi tamamen devre dışı bırakmanıza olanak tanır. Caiioo, özel OAuth uç noktalarının yapılandırılmasını destekler; bu da Google Cloud Console (veya Microsoft Entra eşdeğeri) üzerinden kendi OAuth istemcisini oluşturmaya istekli bir kullanıcının, Caiioo'nun OAuth kapsamlarından ve relay sunucumuzun değişim adımından tamamen kaçınabileceği anlamına gelir. Yapılandırıldıktan sonra, kimlik doğrulama akışı cihazınız ile Google arasındadır ve Caiioo hiçbir şekilde döngüde yer almaz. Çoğu kullanıcının buna ihtiyacı olmadığı ve varsayılan mimari zaten Workspace verilerinizi sunucularımızdan uzak tuttuğu için bunu tüketiciye yönelik bir ayar olarak öne çıkarmıyoruz. Ancak bu seçenek mevcuttur ve uygulama, daha önce Google Cloud Console'da bir OAuth istemcisi kurmuş olan herkese tanıdık gelecektir.

Cihazın ele geçirilmesi hala önemlidir. Eğer dizüstü bilgisayarınız ele geçirilirse, tokenlarınız da ele geçirilir. Yerel öncelikli (local-first) yaklaşım, saldırı yüzeyini "tedarikçinin kasasından" "sizin uç noktanıza" taşır. Bu daha küçük ve daha savunulabilir bir yüzeydir, ancak sıfır değildir.

Oturum açma düzeyindeki "Google ile Giriş Yap", Workspace erişiminden ayrıdır. Caiioo'nun kendisine Google veya Apple ile giriş yaparsanız, bu akış yalnızca kimlik amaçlıdır ve hesabınızla sınırlı bir Temel bağlantı oluşturur. Bu, yukarıda açıklanan Workspace erişim akışıyla aynı yol değildir ve AI'ya gelen kutunuza veya takviminize erişim izni vermez.

Caiioo'nun kendisine yönelik tedarik zinciri saldırıları hala akla yatkındır. Güvenliği ihlal edilmiş bir güncelleme kanalı, teorik olarak cihazınızdan tokenları sızdıran bir kod gönderebilir. Bunu, sunduğumuz her platformda kod imzalama ve noter onayı (notarization) ile hafifletiyoruz, ancak bu hafifletme yöntemi tedarikçi kasası modelinden farklıdır — saldırganların ekonomik dinamikleri de öyledir.

Kendiniz nasıl doğrulayabilirsiniz?

Dürüst cevap şudur ki; bir satıcının pazarlama sayfasındaki gizlilik beyanı, şüpheci birine kanıtlanamaz. Bu nedenle, iddia ettiklerimizi kendi araçlarınızı kullanarak nasıl teyit edebileceğiniz aşağıda açıklanmıştır.

Caiioo kullanırken bir ağ monitörü çalıştırın. macOS'ta Little Snitch, Windows'ta GlassWire veya herhangi bir sistemde Wireshark kullanın. Caiioo'yu bir saat boyunca normal şekilde kullanın. Göreceğiniz trafik ve her bir bağlantının ne anlama geldiği şöyledir:

Hedef Ne Zaman Ne Anlama Gelir
oauth2.googleapis.com, gmail.googleapis.com, calendar.googleapis.com, www.googleapis.com Agent, Workspace verilerinizi her okuduğunda Cihazınızın, cihaz üzerindeki token'ınızla doğrudan Google ile konuşması. Biz bu yolda değiliz.
login.microsoftonline.com, graph.microsoft.com Microsoft 365 bağladıysanız Aynı yapı, cihazınızdan Microsoft'a.
api.anthropic.com, openrouter.ai, api.openai.com, generativelanguage.googleapis.com, localhost:11434 (Ollama) Bir sohbet gönderdiğinizde veya LLM kullanan bir araç çalıştırdığınızda Cihazınızın, yapılandırdığınız AI sağlayıcısı ile konuşması. Biz bu yolda değiliz.
relay.pebbleflow.ai (HTTPS) Kısa süreliğine, ilk Workspace OAuth kurulumu ve periyodik token yenileme sırasında Durumsuz (stateless) OAuth kod değişimi. Token'lar üzerinden geçer, sunucu tarafında kalıcı olarak saklanmaz.
relay.pebbleflow.ai (HTTPS) Periyodik olarak Lisans doğrulama, sürüm notları / kullanıcı kılavuzu içerik alımları, model-intelligence verileri, abonelik durumu kontrolleri.
relay.pebbleflow.ai (HTTPS) Web sitesini yüklediğinizde veya bağlı hesap durumunu görüntülediğinizde Standart API trafiği.
relay.pebbleflow.ai (WebSocket) Sürekli olarak, eğer birden fazla Caiioo bileşeni yüklüyse (uzantı + masaüstü uygulaması veya mobil + masaüstü) Cihazlarınızın birbiriyle konuşmasını sağlayan yetenek köprüsü. Uçtan uca şifrelenmiş (end-to-end encrypted). Biz sadece şifreli metni (ciphertext) görürüz.
relay.pebbleflow.ai/api/messaging/... Sadece mesajlaşma entegrasyonlarını yapılandırdıysanız (WhatsApp, Telegram, Slack gelen mesajlar) Gelen mesajlar için Webhook yönlendirmesi.

Asla görmeyeceğiniz şeyler:

  • Workspace verilerinizin (e-postalar, takvim etkinlikleri, Drive dosyaları) relay.pebbleflow.ai adresine akışı. Bu çağrılar cihazınızdan doğrudan *.googleapis.com adresine gider.
  • Sohbet içeriğinizin relay.pebbleflow.ai adresine akışı. Orkestratör yan panelinizde çalışır; sohbet geçmişi yerel depolama alanınızdadır.
  • AI sağlayıcısı API anahtarlarınızın relay.pebbleflow.ai adresine akışı. Bunlar cihazınızda bulunur. (İstisna: Yönetilen kredi akışını kullanıyorsanız, sunucu tarafından atanan bir OpenRouter alt hesabı kullanırsınız ve çıkarım (inference) çağrısı yine cihazınızdan yapılır.)

Cihazınızdan altyapımıza giden ve yukarıdaki tabloya uymayan bir istek görürseniz, bu bir bulgudur. Bize bildirin, açıklayalım veya düzeltelim.

Vercel veya Context AI müşterisiyseniz ne yapmalısınız?

Vercel, Context AI ve güvenlik araştırma topluluğu tarafından yayınlanan kılavuzlar tutarlı bir kontrol listesinde birleşti:

  1. Şifrelenmemiş Vercel ortam değişkeni olarak saklanan her sırrı yenileyin. Şifrelenmiş/hassas değişkenlerin etkilenmediği bildirildi, ancak yenileme maliyeti düşüktür.
  2. Google Workspace (ve varsa Microsoft 365) üzerindeki ekibinizin üçüncü taraf OAuth izinlerini denetleyin. Tanımadığınız her şeyi iptal edin ve geniş kapsamlı "Hepsine İzin Ver" kapsamları verdiğiniz her araca, değiştirmeniz gereken bir kimlik bilgisi gibi davranın.
  3. Gelecekteki onayları sıkılaştırın. En az ayrıcalıklı kapsamları talep eden araçları ve mimarisi uzun ömürlü belirteçleri teslim etmenizi gerektirmeyen çalışma alanlarını tercih edin.

Üçüncüsü yapısal hamledir ve bu olayın sessizce tavsiye etmeye devam ettiği şeydir.

Caiioo'yu Deneyin

Vercel/Context AI olayından çıkarılacak ders, satıcı ihlal edildiğinde OAuth belirteçlerinizin konumunun etki alanınızı belirlediği ise, cevap onları tutmayan bir çalışma alanı seçmektir.

Caiioo, bir yan panelde çalışan ajan orkestratörü ve sohbet arayüzüne sahip güçlü, gizlilik öncelikli bir çalışma alanıdır. Tarayıcı uzantısı, yerel macOS uygulaması, yerel iOS uygulaması, yerel Android uygulaması ve Windows ile Linux için masaüstü uygulaması olarak mevcuttur. Ücretsiz başlayın.


Kaynaklar: