deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak dev.to (home feed)

Sahte Sentry hataları Claude Code, Cursor ve Codex agent'larını saldırgan komutlarını çalıştırmaya ikna etti

Credential olarak Sentry'nin açıkta bırakılmasını güvenli saydığı bir anahtarla yerleştirilen sahte bir Sentry hata olayı, yapay zekâ kodlama agent'larını saldırgan kontrollü komutlar çalıştırmaya yönlendirdi.

Sahte Sentry hataları Claude Code, Cursor ve Codex agent'larını saldırgan komutlarını çalıştırmaya ikna etti

Sahte hatalar, gerçek komutlar

Güvenlik araştırmacıları, Sentry'nin dokümantasyonunda açıkta bırakılması güvenli olarak tanımlanan bir anahtar üzerinden yerleştirilen sahte bir Sentry hata olayının, yapay zekâ kodlama agent'larına saldırganın seçtiği shell komutlarını çalıştırmaları için talimat verdiği bir prompt injection saldırısını gösterdi. Tenet Security'nin agentjacking adını verdiği bu teknik Haziran 2026'da yayımlandı ve dev.to'daki teknik yazıya göre 12 Haziran'da The Hacker News tarafından ele alındı. Tenet, 100'den fazla kuruluşa karşı yapılan kontrollü bir testte yüzde 85 başarı oranı bildiriyor; Claude Code, Cursor ve Codex'in tümü yerleştirilen hatalara göre hareket etti. Tenet ayrıca Sentry DSN'leri enjeksiyona açık olan 2.388 kuruluş tespit etti.

Saldırı zinciri

Sentry uygulamaları çökmeleri bir DSN ile bildirir; bu, tarayıcı SDK'larının çalışması için frontend JavaScript'ine gömmek zorunda olduğu, URL içine gömülü bir anahtardır. Sentry'nin kendi dokümantasyonu, DSN'lerin yalnızca yeni olay göndermeye izin verip veri okumaya izin vermediği için herkese açık tutulması güvenli olduğunu söyler. Bu yalnızca yazma özelliği, hata akışını yalnızca insanlar okurken zararsızdı.

Saldırgan bir DSN'yi site JavaScript'i üzerinden, Sentry'nin ingest host'una yapılan Censys taramalarıyla veya GitHub kod aramasıyla bulur, ardından ingest endpoint'ine tek bir hazırlanmış olay gönderir; endpoint, DSN dışında kimlik doğrulama istemez. Payload, olayın mesaj alanında ve context anahtar adlarında bulunur; sahte bir Resolution başlığı ve bir npx komutu içeren markdown biçiminde düzenlenmiştir ve Sentry'nin MCP çıktısının zaten kullandığı şablonu taklit eder.

Daha sonra bir geliştirici, agent'tan çözülmemiş Sentry sorunlarını düzeltmesini ister. OAuth üzerinden hesaba giriş yapmış olan Sentry MCP sunucusu, artık saldırganın markdown'ını içeren gerçek sorun verisini döndürür. Tenet'e göre agent, yerleştirilmiş bir olayı gerçek bir çökmeden ayırt edemez ve saldırganın kontrol ettiği bir npm paketine karşı npx komutunu çalıştırır; komut geliştiricinin ayrıcalıklarıyla çalışır.

Tenet'in testinde paket bir doğrulama sondasıydı: ortam değişkenlerini inceledi, ~/.aws/config ve ~/.npmrc gibi credential dosyalarının boyutlarına baktı, VPN aradı ve bir beacon'a iki giden POST isteği gönderdi. Tenet, sonda verilerinin hiçbirini saklamadığını söylüyor. Zincirdeki her adım tek tek izinliydi — Tenet'in özeti, her adımın yetkili olduğuydu — ve şirket bu yaklaşımın EDR, WAF, IAM, VPN, Cloudflare ve güvenlik duvarlarını aştığını iddia ediyor, çünkü yakalanacak bir malware imzası yok: sadece bir HTTPS isteği, bir tool call ve sıradan bir npx çağrısı.

Prompt kuralları neden işe yaramıyor

Tenet bariz önlemi test etti: agent'lara güvenilmeyen tool çıktısını yok saymalarını söylemek. Payload'lar yine de çalıştı ve Tenet'in sonucu, bunun daha iyi bir prompt ile düzeltilemeyeceği. dev.to'daki yazı, Tenet'in agent'ların hangi permission modlarını kullandığını ya da geliştiricilerin onay istemlerini onaylayıp onaylamadığını söylemediğini, ancak sandbox'lı, CI tabanlı ve iç ağdaki agent'lara da ulaşıldığını belirtiyor; dolayısıyla bir sandbox yalnızca engellediği ölçüde yardımcı olur.

Sentry'nin yanıtı

Tenet konuyu 3 Haziran 2026'da bildirdi ve Sentry aynı gün yanıt verdi; konuyu kabul ederken kök nedeni düzeltmeyi reddetti — Tenet'e göre Sentry bunu "teknik olarak savunulabilir değil" diye niteledi. Bir Cloud Security Alliance araştırma notu, Sentry'nin reddettiği iki kök çözümü adlandırıyor: kimlik doğrulamalı ingestion ve MCP sunucusu olay içeriğini döndürmeden önce temizlemek. Bunun yerine gönderilen şey, tek bir belirli payload dizisini engelleyen global bir içerik filtresi oldu.

Kimlik doğrulamalı ingestion, sır saklayamayan tarayıcı SDK'ları için gerçekten zordur. Temizleme ise bu kadar kolay geçiştirilemez: Sentry'nin MCP deposundaki bir taslak pull request, issue-details aracının saldırgan tarafından yazılabilen kısımlarını untrusted-content etiketiyle sarıyor ve 7 Kasım itibarıyla hâlâ açıktı. Birleştirilse bile model etiketin içindeki her şeyi yine okur.

Son adımda savunmalar

Zincirin ilk beş adımı kurbanın kontrol etmediği sistemlerde gerçekleşir; son adım geliştiricinin makinesinde çalışır ve dev.to yazısı kontrolleri tam da buraya yerleştiriyor. Shell komutları için onayları açık tutun; npx ve benzeri paket çalıştırıcılar için ask kuralları tanımlayın. İzole container'lar dışında permission bypass modlarından kaçının. Agent sandbox'unu credential dosyası reddetmeleri ve bilinmeyen bir hostla ilk temasta sessizce bağlanmak yerine durup soran bir network allowlist'i ile etkinleştirin.

Neden önemli

Buradaki hiçbir şey Sentry'ye özgü değil. Dışarıdan birinin yazabildiği metni döndüren her MCP aracı — issue tracker'lar, destek kutuları, log araması — aynı yolu sunuyor ve Cloud Security Alliance bu enjeksiyon yolunu mimari bir sorun olarak çerçeveliyor. Yalnızca insanlar okurken etkisiz olan içerik, shell'e sahip bir agent okuduğunda çalıştırılabilir talimata dönüşüyor ve Tenet'in testleri yalnızca prompt ile bu açığın kapanmayacağını gösteriyor. Yaptırım noktası yürütme sınırına taşınmak zorunda: agent'a ne yapması söylendiğine değil, neyi çalıştırmasına izin verildiğine dair.

  • #security
  • #prompt-injection
  • #ai-agents
  • #mcp
  • #sentry

İlgili yazılar