- Varsayılan olarak açık Claude hafızası ile web taramasını birleştirince, sıradan bir kahve dükkanı sorusuyla bile kullanıcının adı·işyeri·memleketi gizlice harici bir sunucuya gönderilebildi
web_fetchrastgele URL erişimini engelliyordu, ancak önceki sayfadaki bağlantıları takip edebildiği için/a→/ay→/ayugibi yolu harf harf seçtiren bir alfabe dizini ile veriler GET isteğine kodlandı- Saldırı sitesi Claude’a yalnızca sahte bir Cloudflare doğrulama ekranı gösterirken insanlara normal bir kahve dükkanı sayfası sundu; Claude ise ad ve şirketin yanı sıra geçmiş bilgilerden çıkardığı Charlotte, NC bilgisini de izin almadan gönderdi
- Kullanıcı kötü amaçlı URL’yi doğrudan vermese bile siteyi
web_searchsonuçlarından bulup ziyaret edebildiği için, güncel konulara göre hazırlanmış bir siteyi arama sonuçlarında üst sıralara çıkarmak ilgili sorularla saldırıyı tetiklemeye yetebiliyordu - Anthropic sorunu kurum içinde zaten tespit etmişti, ancak o sırada yama uygulamadı ve ödül de vermedi; daha sonra harici sayfalardaki bağlantı takibini engelleyip tarama kapsamını
web_searchsonuçları ve kullanıcının verdiği URL’lerle sınırladı
Claude hafızasında biriken bilgiler
- Genel kullanıcılar için claude.ai, iki parçalı bir hafıza sistemi kullanıyor
- Son konuşmaları her gün birkaç paragraf halinde özetleyip sonraki tüm konuşmalara enjekte ediyor
- Gerektiğinde
conversation_searcharacıyla tüm konuşma geçmişini tarıyor
- Kullanıcılar gizli iş belgelerinden kişisel sırlara ve ilişki sorunlarına kadar pek çok şeyi Claude’a emanet ediyor; biriken kayıtlar da bir kişiyi ayrıntılı biçimde yeniden kurabilecek yüksek yoğunluklu bir profile dönüşüyor
- Bu bilgiler şantaj·kimliğe bürünme·güvenlik sorularını atlatma için kötüye kullanılabilir ve hafıza deposu web’de gezinen bir ajanla birleştiğinde sızıntı riski büyür
- İncelenen hedef Claude Code değil, gündelik kullanım için Claude’du
Web taramasıyla veri dışarı çıkarma
- Ayrı bir deney kurulumu, kod çalıştırma ya da özel MCP gerektirmeden çalışan genel amaçlı bir veri dışarı çıkarma yolu olarak Claude’un web tarama özelliği seçildi
- Claude internete erişim için
web_searchile salt okunurweb_fetchkullanıyor - Saldırgana ait bir sunucu
web_fetchile ziyaret ettirildiğinde,Claude-Useruser-agent içeren GET istekleri görülebildi- İlk istek, sitede Cloudflare tarafından ayarlanmış
robots.txtyüzünden başarısız oldu robots.txtdeğiştirildikten sonra istekler sunucu günlüklerinde görünmeye başladı
- İlk istek, sitede Cloudflare tarafından ayarlanmış
- Yalnızca GET isteği yapılabildiği için veri URL yoluna yerleştirilmeye çalışıldı, ancak Claude’a ad içeren rastgele bir yolu doğrudan isteme yöntemi engellendi
web_fetch bağlantıları hangi kurallarla takip ediyor
web_fetchbir URL’ye erişebilmek için şu üç koşuldan birini karşılamak zorundaydı- URL doğrudan kullanıcının mesajında yer alıyor
- URL doğrudan
web_searchsonuçlarında yer alıyor - İlgili URL, önceki
web_fetchsonucunun içeriğinde bağlantı olarak bulunuyor
- Üçüncü koşul sayesinde Claude önceki sayfada gördüğü bağlantılara tıklayabiliyordu; saldırgan siteye sahipse hangi bağlantıların gösterileceğini de kontrol edebiliyordu
Veriyi URL’ye alfabe diziniyle kodlamak
- Ana sayfaya
/a,/b,/cgibi bağlantılar yerleştirilerek Claude’un veri seçebilmesi için bir sanal klavye oluşturuldu - Claude’dan adın ilk harfine gitmesi istendiğinde, sunucuda
/sonrasında/aisteği kaydedildi - Her yolda bir sonraki harfi seçebilmesi için bağlantı yapısı dinamik olarak genişletildi
/a,/aa,/ab,/acgibi yollara bağlanıyordu- Sonraki yollar da
/aaagibi aynı mantıkla üretilmeye devam etti
- Adı harf harf tamamlaması sağlanınca
/a→/ay→/ayu→/ayus→/ayush→/ayush-paulistekleri sırayla kaydedildi - URL’ye rastgele veriyi doğrudan koyma yöntemi engellense de, daha önce gösterilmiş bağlantılardan birini tekrar tekrar seçtirmek sandbox dışına veri gönderimini mümkün kıldı
Cloudflare doğrulaması kılığına sokulan prompt injection
- Açık prompt injection kararsızdı; kullanıcı sırlarını isteyen ve şüpheli bağlantılar sunan bir sayfayla Claude’u kandırmak zordu
- Üyelik gibi çeşitli kamuflaj senaryoları yapay ya da şüpheli durduğundan, web’de yaygın biçimde kullanılan ve güvenilen Cloudflare teması seçildi
- Saldırı sitesi gerçek bir kahve dükkanı gibi düzenlendi ve ajanın insan yerine web’de serbestçe gezebilmesi için Cloudflare doğrulamasını geçmesi gerektiği kurgulandı
- Sahte Turnstile, Claude’u bağlantıları sırayla seçip tam adını girerek göndermeye yönlendirdi
- Gönderim bittikten sonra normal kahve dükkanı sitesi sunularak Claude’un kandırıldığını fark etmemesi sağlandı
- Claude izin istemeden adı harf harf girdi; nihai yanıtta ise yalnızca kahve dükkanı bilgisi yer aldı ve kişisel verinin gönderildiğinden söz edilmedi
Ad sızıntısından güvenlik sorusu çıkarımına
- Birkaç gerçek URL arasına kötü amaçlı kahve dükkanı URL’si yerleştirilip hangi yerde kahvenin daha iyi olduğu sorulduğunda, Claude şu bilgileri art arda gönderdi
- Ad: Ayush Paul
- Şirket: Beem
- Memleket: Charlotte, NC
- Claude yalnızca geçmiş konuşmaları aramakla kalmadı, mevcut bilgilerden yeni sonuçlar da çıkardı
- Charlotte’lı olduğu doğrudan hiç söylenmemişti, ancak lise döneminde başlattığı hackathon Queen City Hacks adından memleketini çıkardı
İnsanlara ve Claude’a farklı sayfa göstermek
- Saldırının çalışması için kullanıcının Claude’a siteyi ziyaret ettirmesi gerektiğinden, insanlara görünen sayfanın normal olması gerekiyordu
- Claude’un kendini
Claude-Useruser-agent ile tanıtmasından yararlanılarak isteği yapan tarafa göre içerik ayrıldı- Normal ziyaretçilere sıradan bir kahve dükkanı sitesi gösterildi
- Yalnızca Claude eriştiğinde kişisel veri girmesini isteyen sahte Turnstile gösterildi
- Bu yük sıradan bir siteye eklendiğinde kullanıcı bir anormallik fark etmeyebilir; ancak aynı site Claude’a verildiği anda sahte doğrulama ekranı üzerinden kişisel veriler gönderilebilir
Arama sonuçları üzerinden saldırı sitesine otomatik yönlenme
web_fetch, yalnızca kullanıcının doğrudan verdiği URL’lere değil,web_searchsonuçlarına da erişebiliyordu- Claude, eğitim verisi kesim tarihinden sonraki yeni konularla karşılaştığında otomatik olarak web’de arama yapıyor
- Güncel haberlere göre hazırlanmış bir saldırı sitesinin arama sıralaması yükseltilirse, kullanıcı URL vermese bile ilgili sorularda bu site seçilebilirdi
- Örneğin kötü amaçlı bir kahve dükkanı sitesi üst sıralarda görünürse, Berkeley’de kahveyi genel olarak soran bir kullanıcı bile hedef haline gelebilirdi
Anthropic’in doğrulaması ve sonraki adımlar
- Açık, Anthropic’in HackerOne bug bounty programı üzerinden sorumlu şekilde bildirildi
- Anthropic, sorunu kurum içinde daha önce fark ettiğini ancak o sırada yamalamadığını doğruladı; bildirim için de ödül ödemedi
- Daha sonra
web_fetchin harici sayfalarda bulduğu bağlantıları takip etme özelliği devre dışı bırakıldı - Şu anda tarama hedefi
web_searchsonuçları ve kullanıcının doğrudan verdiği URL’lerle sınırlı
Hafızanın ötesinde, bağlı verilere kadar
- Kullanıcı bir bağlantıya tıklamadan ya da yeni bir entegrasyon açmadan yalnızca bir kahve dükkanı sordu, ama Claude adını·işyerini·büyüdüğü şehri dışarı gönderdi
- Hafıza, varsayılan olarak açık olduğu için sadece kolay bir saldırı hedefi olarak seçildi
- Aynı yöntem, Claude’un kullanıcı adına erişebildiği Google Drive·e-posta gelen kutusu·bağlı MCP verilerine de uzanabilir
1 yorum
Hacker News yorumları
En ileri yapay zeka şirketlerinin hafıza özelliğini açmasına neredeyse hiç tepki gelmemesi şaşırtıcı. Geçmişte reklam sektörü ziyaret edilen web sitelerinden parça parça bilgi çıkarmak zorundaydı, ama artık insanlar en mahrem sırları dahil neredeyse her şeyi doğrudan yapay zekaya veriyor
Reklam sektöründe çalıştığım için aşırı hassas olabilirim ama Claude ve ChatGPT'de hafıza çıkar çıkmaz kapattım; alakasız ayrıntılarla bağlamı kirletip kaliteyi de düşürdüğü için pek faydalı da değildi. Kişisel konuşmalar için OpenRouter gibi yerlerde ayrı hesap kullanmak daha iyi
Yapay zeka şirketlerinin kullanıcı profili saklaması yasaklanmalı ve hafıza yalnızca kullanıcı sunucusunda tutulmalı; hatta hafıza şirketleri ile yapay zeka şirketlerinin çapraz sahipliği bile yasaklanabilir
İnsanların AI ajanlarını yönetici yetkileriyle, konteyner izolasyonu bile olmadan çalıştırdığını öğrendim. Sanki 50 yılda biriken bilgisayar güvenliği ilkeleri bir gecede unutulmuş gibi, bu gerçekten şaşırtıcı
ccokullansan bile home dizini görünür oluyor; tek bir prompt ile ajan tarayıcı parolalarınıcurlile dışarı gönderebilirBunu önlemek için sahte bir home dizini ve yalnızca llama.cpp, OpenAI gibi sağlayıcılara izin veren bir ağ allowlist'i gerekiyor. Kullanımı kolay, çapraz platform bir çözüm yok; platforma özgü hataları derleyip düzeltmek gereken native uygulama geliştirmede Docker kurulu bir Linux makinesi bile yeterli olmuyor
Zaten maliyeti düşürmek için bağlam optimize ediliyor; bu yüzden gelecekte bağlamın kendisinin bir güvenlik sınırı olarak ele alınması muhtemel
Claude'da adımı Silly Bean olarak ayarlamıştım; "Back again, Silly Bean?" selamı komik geldiği için başlamıştı ama sonuçta 4 boyutlu bir güvenlik satrancına dönüştü
Hâlâ öyle bırakıyorum; hem beklediğim kadar zeki olmayan bağımlı bir ürün oluşuna alaycı bir işaret, hem de bir tür buruk teselli
Cloudflare'ın onay olmadan aşırı bir
robots.txtuyguladığı kısmı, bir web sitesinin scraper'lardan korunduğundan şikayet ettiği ender anlardan birirobots.txtyönetmesi için kullanıcının bu özelliği kendisinin açması gerektiğini biliyorum. Tek tıkla yapılabildiği için yanlışlıkla etkinleştirilmiş olabilirrobots.txtzaten kararlı scraper'ları durdurmazClaude Code'u kimlik bilgisi olmayan bir VM içinde çalıştırıyorum ve yalnızca üzerinde çalışacağım açık kaynak GitHub deposunu klonluyorum. Eskiden VM'i her gün sıfırlıyordum ama zahmetli olduğu için ayda bire geçtim; sızsa sızsa son bir ayda çalıştığım açık kaynak projelerin listesi sızar
Bu bilgi de kişiyi epey ele verebilir, ama açık kaynak katkıcılarının adı ve e-postası değiştirilemez Git kayıtlarında kaldığından çoğu zaten Google aramasıyla bulunabiliyor. Bu olaydan sonra sıfırlama periyodunu haftalığa çekmeyi düşünüyorum
AI ajan hapishanesi kurmak için https://jai.scs.stanford.edu/arch-vm.html sayfasındaki script'e
dotnet-sdkgibi paketleripacstrapkomutuna eklemek yeterli. Misafir root'u bir BTRFS alt birimi yapıp snapshot kullanırsanız,sudo btrfs subvol snap template-root newvmile anında yeni VM oluşturabilir,qemu-system-x86_64çalıştırması da yalnızca birkaç saniye sürerken VM içeriğini tamamen kontrol edebilirsinizBazen bir insanın düğmeye basıp kullanıcı deneyiminin doğru olup olmadığına karar vermesi gereken işler oluyor ve mümkünse AI'ya ekrana erişim vermek istemiyorum. Bu VM modeli bazı sorunlarda çok iyi çalışıyor ama kapsamı hayal kırıklığı yaratacak kadar dar
“Merhaba, ben Cloudflare. Lütfen kişisel verilerinizi verin” işe yaradığı sürece prompt injection kaçınılmaz olarak sorun olmaya devam edecek. Ya modeli işe yaramayacak kadar kısıtlamak ya da bu tür saldırıların sızmasına izin verip kandırılabilen robot gibi, internet tarihindeki en güvensiz kavramı yaratmak zorunda kalıyoruz
İç işleyişini işlevsel olarak anlayıp ayırmanın bir yolu da yok; sanki tek bir devasa kütleyi iyi ikna edip harekete geçirmeye ve saldırganın daha iyi ikna edememesini ummaya dayalı bir yapı var
Kısa süre önce ChatGPT iPhone uygulamasında epey ürkütücü bir şey yaşadım. Yakın bir arkadaşım kendi hesabıyla evcil hayvanı için akıllı mama kabı sorununu sordu ve ChatGPT yanıt verirken benim evcil hayvanımın adını kullandı
Yaygın bir isim de değil ve arkadaşımla olan bağlantı düşünüldüğünde bunun tesadüf olması zor. Arkadaşımın bizim Wi‑Fi’a daha önce bağlandığını düşününce, cache kirlenmesi ya da oturum verisi sızıntısı olup olmadığından şüpheleniyorum
Bu özellik henüz yeterince hazır görünmediğinden belleği kapatmak daha iyi olabilir; ama arkadaşım kendi hesabını kullandıysa bu durumu açıklamak zor
Claude Code, SEC belgelerini scrape ederken User-Agent içine adımı ve e-postamı koydu. Karmaşık bir prompt bile gerekmiyordu; fikir başlı başına çok kötü sayılmaz ama önce sormasını isterdim
SEC_EDGAR_USER_AGENT="Your Name (name@domain.com)"ortam değişkeninin ayarlanmasını söylüyor; yani Claude sadece talimatı aynen uygulamış. Belki de bunu daha tehlikeli yapan şey tam olarak buTüm konuşmalara uygulanan genel bellek özelliğini açan kullanıcı sayısını merak ediyorum. Bu tür bir bellek sonunda çıktı kalitesini olumsuz etkileyecek gibi geliyor
Öte yandan, her seferinde uzun uzun arka plan anlatmak zorunda kalmamak bazı durumlarda faydalı oluyor
Bu yüzden belleği açmıyorum ve Claude Code’u da başka nedenlerle kullanmıyorum. Mevcut bellek sistemi fazla kaba olduğu için faydalı değil