Ne bulundu?
Claude Code, her oturumda modele bir sistem talimatı (system prompt) gönderiyor. İçinde sıradan bir satır var: “Today’s date is 2026-06-30.” Yani bugünün tarihi. Thereallo adlı bir geliştirici, gizlilik merakıyla Claude Code 2.1.196’yı incelerken bu satırın her zaman aynı yazılmadığını fark etti.
Blog yazısına göre satırda iki gizli sinyal vardı:
- Kesme işareti. “Today’s” kelimesindeki
'işareti, duruma göre gözle neredeyse ayırt edilemeyen üç farklı Unicode karakterden biriyle değişiyordu. Hangisinin seçildiği, iki şeyi kodluyordu: Kullandığın API adresi bilinen bir listede mi, adreste bir yapay zekâ laboratuvarının adı geçiyor mu? - Tarih ayracı. Bilgisayarının saat dilimi
Asia/Shanghaiya daAsia/Urumqiise tarih2026-06-30yerine2026/06/30yazılıyordu.
Bu kontrol herkes için çalışmıyordu. Sadece ANTHROPIC_BASE_URL ayarıyla Claude Code’u Anthropic dışında bir adrese, yani bir aracıya ya da ağ geçidine (gateway) yönlendirenlerde devreye giriyordu. Adres listesi; Çinli şirketlerin, yapay zekâ laboratuvarlarının ve API aracılarının alan adlarını içeriyordu. Listeler kodda base64 ve XOR ile gizlenmişti.
Bunu kendimiz de kontrol ettik. npm’de yayımlanan paketlerde bu kod 2.1.91’de (2 Nisan 2026) ortaya çıkıyor, 2.1.196 ve 2.1.197’de hâlâ duruyor.
Steganografi ne demek?
Şifreleme bir mesajı okunamaz yapar. Steganografi ise mesajın varlığını gizler. Mesaj, sıradan görünen bir şeyin içine saklanır. Burada taşıyıcı, tarih satırının kendisi. Bir insan ya da log okuyan biri normal bir cümle görüyor. Ama karakterleri tek tek karşılaştıran bir sunucu, gizli bilgiyi okuyabiliyor.
Metne benzer görünen Unicode karakterleri ya da görünmez karakterler koymak, metin filigranı (watermark) yapmanın bilinen bir yolu. Kim nereden geliyor, bir metin nereye sızdı, bunları izlemek için kullanılıyor.
Neden yapılmış?
The Decoder’ın aktardığına göre Claude Code ekibinden Thariq Shihipar, X’te bunun Mart’ta başlatılan bir deney olduğunu söyledi. Anthropic’e göre amaç, yetkisiz aracıların hesap kötüye kullanımını ve damıtmayı (distillation), yani Claude’un cevaplarıyla başka bir model eğitmeyi engellemekti. Claude, Çin’de resmi olarak sunulmuyor. Bu yüzden oradaki erişimin bir kısmı aracı servisler üzerinden geliyor.
Blog yazarı da amacın anlaşılır olduğunu, ama yöntemin yanlış olduğunu söylüyor. Sunucunun bu işareti gerçekten okuduğu ise yazara göre bir tahmin, kanıtlanmış değil.
Sorun nerede?
- Belgelenmemişti. Sürüm notlarında yoktu, kod bilerek gizlenmişti.
- Kolay atlatılıyor. Saat dilimini değiştirmek yetiyor. Yani asıl hedef olan büyük kötüye kullanımları zor yakalar, sıradan kullanıcıları ise etiketler.
- Güven meselesi. Dosyalarına ve terminaline erişen bir araçta gizli bir davranış bulunursa, aracın diğer gizlilik sözlerine de şüpheyle bakarsın.
Senin için ders şu: Bir yapay zekâ aracının gönderdiği her şeyi göremeyebilirsin. Hassas bir ortamda çalışıyorsan, giden istekleri bir test ortamında yerel bir proxy ile incele ve metinde beklenmedik Unicode karakterleri ara.
Sonra ne oldu?
- Shihipar, kaldırma değişikliğinin birleştirildiğini ve bir sonraki sürümle tamamen geri alınacağını söyledi. Bizim npm kontrolümüze göre 1 Temmuz’da çıkan 2.1.198’de bu kod artık yok. Resmi değişiklik günlüğü (changelog) bundan bahsetmiyor.
- Malwarebytes’e göre Anthropic ayrıntılı bir açıklama yayımlamadı.
- Anthropic, Eylül’de damıtma kampanyalarıyla ilgili bir rapor yayımladı. Onu damıtma saldırıları yazımızda anlattık.
Düşün
- Bir şirketin kötüye kullanımı engellemek için kullanıcılarını gizlice işaretlemesi ne zaman kabul edilebilir?
- Kullandığın kod ajanının modele ne gönderdiğini hiç gördün mü?
Videoyu izle
Kaynaklar (6, İngilizce)
- Better Stack: Claude Sonnet 5 is a Disappointment... (video, 4:23) (yeni sekmede açılır)
- Thereallo: Claude Code Is Steganographically Marking Requests (yeni sekmede açılır)
- The Decoder: Hidden code in Claude Code secretly flagged Chinese users (yeni sekmede açılır)
- Malwarebytes: Claude Code's hidden tracker was an 'experiment,' says Anthropic (yeni sekmede açılır)
- npm: @anthropic-ai/claude-code (sürüm geçmişi) (yeni sekmede açılır)
- Claude Code CHANGELOG (yeni sekmede açılır)
Kendi cümlelerimizle yazılmış bir özettir, çeviri değildir. Tüm kaynaklar yukarıda.