1 puan yazan GN⁺ 4 시간 전 | 1 yorum | WhatsApp'ta paylaş
  • 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_fetch rastgele URL erişimini engelliyordu, ancak önceki sayfadaki bağlantıları takip edebildiği için /a/ay/ayu gibi 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_search sonuç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_search sonuç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_search aracı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_search ile salt okunur web_fetch kullanıyor
  • Saldırgana ait bir sunucu web_fetch ile ziyaret ettirildiğinde, Claude-User user-agent içeren GET istekleri görülebildi
    • İlk istek, sitede Cloudflare tarafından ayarlanmış robots.txt yüzünden başarısız oldu
    • robots.txt değiştirildikten sonra istekler sunucu günlüklerinde görünmeye başladı
  • 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_fetch bir 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_search sonuçlarında yer alıyor
    • İlgili URL, önceki web_fetch sonucunun 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, /c gibi 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 /a isteği kaydedildi
  • Her yolda bir sonraki harfi seçebilmesi için bağlantı yapısı dinamik olarak genişletildi
    • /a, /aa, /ab, /ac gibi yollara bağlanıyordu
    • Sonraki yollar da /aaa gibi aynı mantıkla üretilmeye devam etti
  • Adı harf harf tamamlaması sağlanınca /a/ay/ayu/ayus/ayush/ayush-paul istekleri 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-User user-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_search sonuç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_search sonuç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

 
GN⁺ 4 시간 전
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

    • Her seferinde tüm bağlamı baştan anlatmak gerekmemesi yüzünden hafıza bazen faydalı olabiliyor, ama başka konuşmalarda söylenen bir şeye takılıp mevcut konuşmayı alakasız bir yöne çekmesi aynı derecede sinir bozucu
    • Yatırımcı açısından veri toplama, bu şirketlerin temel değer önerilerinden biri. Açık veriler, yasa dışı scraping ve telifli eserlerle modeller kurdular; sayısız insanın en özel bilgilerini büyük ölçekte biriktirdiler; çöküş yaşanırsa devasa etkiler yaratacak bir balonu ve aşırı servet yoğunlaşmasıyla eşitsizliği de büyütüyorlar
  • İ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ı

    • Birçok programcı ve ileri kullanıcı, npm, pip, bundler gibi devasa bağımlılık ağaçlarını ana tarayıcıyla aynı kullanıcı hesabında sürekli kuruyor. Yeni hesap açmanın kolay olduğu Linux'ta bile durum böyleyse, AI ajanı çalıştırmak aslında çok da farklı değil
    • Çünkü sandbox yapılandırması oldukça zor. cco kullansan bile home dizini görünür oluyor; tek bir prompt ile ajan tarayıcı parolalarını curl ile dışarı gönderebilir
      Bunu ö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
    • Genel olarak kullanıcılar üşengeç; ayrıca büyük laboratuvarların güvensiz yazılım yayımlamayacağını ya da güvenliğin laboratuvarların sorumluluğu olduğunu düşünüyorlar. Daha çok işi halletsin diye izin kontrollerini tehlikeli biçimde atlayıp doğrudan çalıştırma yaklaşımı neredeyse varsayılan hale geliyor
    • Güvenlik modeli iki yöne yakınsıyor gibi görünüyor: en az yetki ve en az bağlam. Mevcut iş için gereken dosya ve hafızayı gören bir ajan, araç izinleri aynı olsa bile çok daha az riskli
      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
    • Sonuçta mesele kullanım kolaylığı. Ajanın hiçbir kısıtlama olmadan yanında çalışması anında tatmin sağlıyor ve buna karşı koymak zor
  • 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ü

    • Eternal September döneminden beri çevrimiçi sistemlerde isim ve doğum tarihi için tutarlı sahte bilgiler kullanmayı tavsiye ediyorum. Doğru kişisel tanımlayıcı bilgiye (PII) meşru biçimde ihtiyaç duyan site neredeyse yok; öyle yerlerde bile gerekirse hesap ya da profili çift tutuyorum
    • Adım iki farklı şekilde kısaltılabildiği için, Claude'a kaydolurken yapay “zeka” dünyasının kapıları açılır sanıp ad alanına " or " yazmıştım. Ama bu alanın modelle işlenmeyip hard-code edildiği anlaşılıyor
      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
    • Adı Sir yapınca aşırı kibar yanıtlar veriyor, ben de bundan keyif alıyorum. Banka uygulamam da “Good morning, Sir” diye selamlıyor; bankayla kurmak istediğim ilişki için tam doğru mesafe bu
    • İlk zamanlarda açtığım claude.ai hesabını unutmuştum; yakın zamanda Google ile giriş yapınca Hello, Master diye karşıladı, bu da bugünün standartlarına göre epey cüretkâr geldi
    • Claude ve ChatGPT'nin ödeme bilgilerindeki gerçek adı hâlâ görebiliyor olması muhtemel
  • Cloudflare'ın onay olmadan aşırı bir robots.txt uyguladığı kısmı, bir web sitesinin scraper'lardan korunduğundan şikayet ettiği ender anlardan biri

    • Cloudflare'ın robots.txt yö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ş olabilir
    • Asıl mesele onay verilmemiş olması. Kullandığım hizmet ister siteyi scraper'lardan engellesin ister her şeyi scraper'lara sunsun, her iki durumda da önceden yeterli bilgiye dayalı onay alınmasını isterim
    • Yine de mutlaka onay alınmalı ve robots.txt zaten kararlı scraper'ları durdurmaz
  • Claude 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-sdk gibi paketleri pacstrap komutuna eklemek yeterli. Misafir root'u bir BTRFS alt birimi yapıp snapshot kullanırsanız, sudo btrfs subvol snap template-root newvm ile 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 edebilirsiniz

    • Benzerini denedim ama kısıtları fazla. Pair programming gibi insanla AI'nın sürekli gidip gelmesini istiyorum; iki tarafın rol sınırları da işe göre, hatta işin ortasında bile değişebiliyor ve başta net olması nadir
      Bazen 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
    • Bu sorun Claude Code'da değil, Claude AI web sitesinde yaşandı
  • “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

    • Sosyal mühendislik gibi bu da bir ölçüde kalıcı bir sorun olacak gibi görünüyor ve toplumun kabul edebileceği bir taban seviyeye ulaşana kadar savunmaları katman katman ekleyeceğiz. Pek iç rahatlatıcı bir sonuç değil ama bir kez açılmış Pandora’nın kutusunu yeniden kapatmak da zor
    • Prompt tabanlı güvenli yapay zekanın sahip olduğu Gödelci sınırlar https://matthodges.com/posts/2025-08-26-music-to-break-model... yazısında ele alınıyor
    • İşlenmiş verilerin sohbet yoluyla LLM’yi ikna edip güvenlik sınırını aşabildiği fikrini kabullenmek zor. Kötü amaçlı prompt’lar mecaz değil, gerçek saldırı dizeleri; buna rağmen bu teknolojinin otomatik etkileşimlerde yaygın biçimde kullanılması ve mantıksal, temel düzeyde sınırlandırılamaması akıl almaz
      İç 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

    • ChatGPT’de bellek varsayılan olarak açık ve görünüşe göre tüm konuşmalar boyunca kullanıcı bilgilerini saklıyor. Bana da tarif sorularını yanıtlarken, vizeyle ilgisiz bir soru olmasına rağmen “bu malzemeler mağazada kolay bulunur, dolayısıyla vize sorun olmaz” gibi şeyler ekliyor
      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

    • Sorunun kaynağı SEC EDGAR aracı tarafında. Edgar MCP belgeleri 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 bu
    • Claude’un bunu yaptığını nasıl fark ettiğini merak ediyorum
    • Ad ve e-posta koymanın neden tamamen kötü bir fikir olmadığını düşündüğünü de merak ediyorum
  • Tü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

    • Mevcut projeyle alakasız bir şey sorsam bile bellek yüzünden bunu hep mevcut projeyle ilgili bir soru sanıyor. “Hayır, PostgreSQL hakkında soruyorum” diye düzeltince neden ayrı bir konuşma açtığımı anlayamıyor; hatta bazen projede PostgreSQL kullandığımı varsayıp belleğini buna göre güncelliyor
      Ö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

    • Benim için bellek yarardan çok engel oldu. Neredeyse alakasız kayıtlı bilgileri her seferinde ortaya çıkarıyor ve sanki bir iki şey daha bildiğini gösterişle sergiliyor; sonunda kapattım
    • Bu sorunun yalnızca bellekle sınırlı olup olmadığını merak ediyorum. Modelin şu anda erişebildiği mevcut proje bilgileri, kod veya kimlik bilgileri gibi veriler de aynı şekilde sızdırılabilir mi?