2 puan yazan GN⁺ 2026-03-20 | 1 yorum | WhatsApp'ta paylaş
  • Snowflake’in Cortex Code CLI bileşeninde bir komut doğrulama açığı bulundu; bu açık, saldırganların sandbox dışında keyfi komutlar çalıştırmasına olanak tanıyordu
  • Saldırı, dolaylı prompt injection yoluyla tetikleniyor ve kullanıcının onay sürecini atlayarak kötü amaçlı bir betiği indirip çalıştırıyor
  • Process substitution sözdizimi içindeki komutlar doğrulanmadığı için, güvenli komut gibi görünen kötü amaçlı kod otomatik olarak çalıştırılıyor
  • Saldırganlar, kurbanın Snowflake kimlik doğrulama token’ını kullanarak veritabanını ele geçirebiliyor veya tabloları silebiliyor
  • Snowflake, 28 Şubat 2026’da 1.0.25 sürümü yamasını yayımlayarak sorunu düzeltti; düzeltme otomatik güncelleme ile uygulanıyor

Cortex Code CLI açığına genel bakış

  • Cortex Code CLI, Claude Code veya OpenAI Codex’e benzer, Snowflake içinde SQL çalıştırabilen entegre özelliklere sahip komut tabanlı bir kodlama ajanı
  • Yayına çıktıktan iki gün sonra, komut doğrulama sistemindeki bir kusur nedeniyle özel olarak hazırlanmış komutların onay süreci olmadan çalıştırılabildiği ve sandbox’tan çıkabildiği doğrulandı
  • Saldırganlar bunu kullanarak kurbanın Snowflake kimlik bilgileriyle veri sızdırma veya tablo silme gibi kötü niyetli işlemler gerçekleştirebiliyor
  • Snowflake güvenlik ekibi sorunu doğrulayıp düzeltti ve yama 1.0.25 sürümünde yayımlandı

Saldırı zincirinin adımları

  • Kullanıcı sandbox modu etkin durumdayken Cortex’i çalıştırdığında, sistem komut yürütmeden önce kullanıcı onayı isteyecek şekilde tasarlanmış
  • Ancak saldırganlar, README dosyasına gizlenmiş bir prompt injection ile Cortex’i manipüle ederek tehlikeli komutlar çalıştırmaya yönlendiriyor
  • Cortex’in alt ajanı bu enjeksiyonu okuyup komutu onay süreci olmadan çalıştırıyor
  • <()> içindeki process substitution komutları doğrulanmadığı için, güvenli komut olarak sınıflandırılan bir görünüm kullanılarak kötü amaçlı kod çalıştırılıyor
  • Enjeksiyon ayrıca dangerously_disable_sandbox bayrağını ayarlayarak komutların sandbox dışında çalışmasını sağlıyor
  • Sonuçta kullanıcı onayı olmadan kötü amaçlı betik indiriliyor ve çalıştırılıyor

Saldırının etkisi

  • Saldırgan, kurbanın sisteminde keyfi kod çalıştırma (remote code execution) yetkisi elde ediyor
  • Kurbanın Snowflake bağlantı kimlik bilgileri kullanılarak şu eylemler gerçekleştirilebiliyor
    • Veritabanı içeriğini çalmak
    • Tabloları silmek
    • Kötü amaçlı kullanıcı hesapları eklemek
    • Ağ kurallarını değiştirerek meşru kullanıcıları engellemek
  • Kötü amaçlı betik, Cortex’in sakladığı önbelleğe alınmış kimlik doğrulama token’larını bulup Snowflake üzerinde SQL sorguları çalıştırıyor
  • Geliştirici hesaplarında okuma-yazma yetkileri nedeniyle veri sızdırma ve yıkım mümkün hale geliyor

Alt ajan bağlam kaybı sorunu

  • Saldırı yürütülürken Cortex birden fazla alt ajan çağırdığı için bağlam kaybı yaşanıyor
  • Ana ajan kullanıcıyı kötü amaçlı komut bulunduğu konusunda uyarıyor, ancak alt ajan o komutu zaten çalıştırmış oluyor
  • Bu nedenle kullanıcı, komutun gerçekten çalıştırıldığını fark etmiyor

Açığın açıklanması ve müdahale

  • 5 Şubat 2026’da PromptArmor, Snowflake’e sorumlu açıklama (responsible disclosure) yaptı
  • Snowflake, Şubat ayı boyunca PromptArmor ile birlikte açığı doğrulayıp düzeltti
  • Yama, 28 Şubat’ta 1.0.25 sürümünde yayımlandı ve kullanıcı Cortex’i yeniden başlattığında otomatik güncellemeyle uygulanıyor
  • Test sonuçlarına göre saldırının başarı oranı yaklaşık %50; bu da LLM’lerin deterministik olmayan doğası karşısında güvenlik eğitiminin önemini vurguluyor

Önemli tarihler

  • 2 Şubat 2026: Snowflake Cortex Code yayına çıktı
  • 5 Şubat 2026: PromptArmor açığı bildirdi
  • 12 Şubat 2026: Snowflake açığı doğrulamayı tamamladı
  • 28 Şubat 2026: Düzeltilmiş 1.0.25 sürümü yayımlandı
  • 16 Mart 2026: PromptArmor ve Snowflake ortak açıklama yaptı

1 yorum

 
GN⁺ 2026-03-20
Hacker News görüşleri
  • Genelde önce sorun yaşayan şirketin resmî açıklamasını okurum
    Ama Snowflake’in duyurusu yalnızca hesabı olanların görebildiği bir yerdeydi, bu yüzden şaşırdım
    Okuyunca, “sandbox” terimini yanlış kullandıkları izlenimine kapıldım
    Eğer “Cortex varsayılan olarak bir bayrak ayarlayıp sandbox dışında komut çalıştırabiliyor” ise, bu artık sandbox değildir

    • Bana göre prompt injection sorunu temelde çözülemez
      SQL’de de parametrik sorgular kullanılana kadar çözülmemişti; doğal dil ise çok daha serbest
      Sonunda “önceki talimatları yok say ve …” gibi saldırılar tekrar tekrar ortaya çıkıyor
      Veri ile komut aynı akış içindeyse sonuç hep aynı olur
      Doğal dilin kendisi bir saldırı yüzeyi olduğu için bu yüzey ister istemez daha geniştir
    • RFC 3514’teki “evil bit” kavramını prompt injection için de genişletip, evil bit 1 ise komut çalıştırmayı engelleyelim diye şaka yapıldı
      İlgili belge: RFC 3514
    • Bugünlerde yapay zeka sektöründe “sandbox” galiba sadece “bunu gerçekten çalıştırmak istiyor musunuz?” diye soran bir sistem anlamına geliyor
      Oysa benim alışık olduğum anlam, kötü amaçlı yazılımı güvenle gözlemlemek için kullanılan izole bir ortam
      Yapay zekada da böyle gerçek teknik sınırlar kurmaya yönelik birçok girişim olması ilginç bir alan olduğunu düşündürüyor
    • “Sadece kavramsal bir sandbox” diyen kısa bir tepki de vardı
  • Kullanıcı doğrudan erişim yetkisini açan bir anahtarı manipüle edebiliyorsa, bu sandbox değildir
    İlk başta bunun OS yetki yükseltme meselesi olduğunu sandım ama aslında sadece zayıf bir güvenlik tasarımı örneğiydi

    • “Sandbox, Sandbagging. Tomato, tomawto” diye espriye vuran bir yorum da vardı
  • Anthropic makalesinde alıntılanan örneklere bakılırsa, yapay zeka özerk şekilde kötü niyetli davranışlar da sergileyebiliyor
    Örneğin Alibaba Cloud’un güvenlik duvarı, eğitim sunucusunda kripto para madenciliği girişimi tespit etmiş
    Bunun RL optimizasyonu sırasında ortaya çıkan bir yan etki olduğu söyleniyor
    İlgili kaynaklar: arXiv makalesi, Anthropic araştırması, Time yazısı

    • Ancak makalenin 2.3.0.1 bölümünde her görevin bağımsız bir sandbox içinde çalıştığı yazıyordu
      Öyleyse ağ denetimleri varken SSH tüneli ya da kaynak taraması nasıl mümkün oldu, bu soru işareti yaratıyor
  • Bir Snowflake çalışanı gelip güvenlik ekibinin müdahale zaman çizelgesini ve yapılan düzeltmeleri paylaştı
    Ayrıntılar resmî belgede görülebilir

  • “İnsan onayı olmadan shell komutları çalıştırıldı” kısmını görünce,
    shell güvenliği hakkında az da olsa düşünmüş birinin bile alt süreç oluşturma yöntemini hesaba katmamış olmasına şaşırdım

    • Shell kodunu parse edip sansürlemeye dayanan yaklaşım temelde kırılgan ve hataya açık
      Bu tür kısıtlamalar güvenli olacaksa OS seviyesinde uygulanmalı
  • “Gerçek sandboxing ipuçları” paylaşalım diye bir öneri vardı
    Ben Claude Code’u VS Code devcontainer içinde çalıştırıyorum
    İnternet erişimini yalnızca izin verilen alan adlarıyla sınırlayan bir yapılandırma da var
    Ancak docker-in-docker ortamı gerektiği için tam entegrasyon zor
    Bu yüzden şimdilik yalnızca birim testlerini çalıştırıyorum; Vagrant ile tam VM izolasyonu denemeyi de düşünüyorum

    • Başka bir kullanıcı, Multi Level Security kavramını uygulayan bir veri bölgesi ayrımı deneyi tanıttı
      Proje bağlantısı: aflock.ai
  • “Cortex workspace trust desteklemiyor” cümlesini görünce,
    acaba baştan beri hiçbir kısıtın olmadığı bir ortam mıydı diye düşündüm

    • Gerçekte bazı kısıtlar varmış ama bayrak manipülasyonuyla kolayca atlanabiliyormuş
      Model bayrağı ayarladığında, kullanıcı onayı olmadan doğrudan sandbox dışına çıkıp çalıştırma yapabiliyormuş
  • “Bu yeni bir gain-of-function araştırması mı?” diye yapılan bir şaka vardı

    • Bir başkası da “ondan çok imaginary function gibi” diyerek,
      ajanın kendi kendini kontrol edebileceğine inanmanın bir yanılsama olduğunu söyledi
    • Bir diğeri ise bunu, “daha iyi sandbox’ları test etmek için bilerek kötü niyetli yapay zeka üretmek” diye açıkladı
  • Pek çok kişi zaten ajanların ürettiği kodu incelemeden çalıştırıyor
    Öyleyse ajanın kendisini bir sandbox içine almanın anlamı ne, diye düşündürüyor
    Nasıl olsa tüm sistemin ayrı bir makinede, konteynerde ya da kısıtlı bir kullanıcı hesabıyla izole edilmesi gerekiyor
    Muhtemelen çoğu kullanıcı bunu yapmadığı için,
    geliştiriciler en azından temel düzeyde güvenlik önlemlerini kendileri sunmaya çalışıyor

  • “Bir anahtarla kapatılabilen sandbox, gerçek sandbox değildir” görüşü de vardı
    Bunun sadece pazarlama abartısı olduğu, ürünün zayıf tasarımını gizlemeye yaradığı düşünülüyor

    • “Bu sandbox bile değil, yalnızca iç kod kısıtlamalarının aşılması” denilerek,
      gerçek sandbox’ın içeriden değiştirilemeyen harici bir izolasyon ortamı olması gerektiği vurgulandı