sedİş akışının issues: opened
Değişikliğin commit kaydında “Copilot Autofix powered by AI” ortak yazar olarak kredilendirildi ve yapay zekâ destekli inceleme sorunu işaretlemedi. Ancak mevcut kanıtlar, Copilot’ın güvensiz değişikliği üretip üretmediğini ya da insan tarafından yazılmış bir değişikliği yalnızca inceleyip ortak yazar olarak mı yer aldığını kesin biçimde göstermiyor. Bu nedenle en temkinli ifade, Copilot’ın değişiklikle ilişkilendirildiği ve komut enjeksiyonu sorununu yakalayamadığıdır; hatanın kesin olarak model tarafından yazıldığı söylenemez.
Wiz’in Red Agent’ı, Snowflake’ın herkese açık GitHub organizasyonunda riskli CI/CD kalıplarını taradı. Sistem, Jira iş akışında güvenilmeyen issue verisinin bir run: bloğuna aktarıldığını belirledi ve özel hazırlanmış bir issue başlığının GitHub-hosted Actions çalıştırıcısında keyfi komut çalıştırabileceğini çıkarsadı.
23 Haziran’da, açığın birleştirilmesinden beş gün sonra, Snowflake’ın HackerOne güvenlik bildirim programı kapsamında özel hazırlanmış bir issue açtı. Başlık, kabuk dizesinden çıkacak şekilde oluşturuldu ve iş akışının Jira kimlik bilgilerini, yetkili kavram kanıtı için kontrol edilen bir out-of-band geri çağrı adresine göndermesine neden oldu.
Bu çalışma kontrolsüz bir sızma değil, onaylı bir güvenlik testiydi. Bununla birlikte ortaya konan teknik bulgu gerçekti: Herkese açık bir issue, kimlik bilgilerini işleyen bir iş akışına ulaşabiliyor ve sıradan issue oluşturma eylemini komut çalıştırma fırsatına dönüştürebiliyordu.
Ele geçirilen iş akışında Snowflake’ın dahili Jira yapılandırmasına ait bilgiler bulunuyordu. Bunlar Jira adresi, kullanıcı e-postası ve API belirtecini içeriyordu. Kurtarılan belirteç qa@snowflake.net hesabıyla ilişkilendirildi; Wiz bu belirteci dahili Jira portalında kimlik doğrulamayı ve olası erişimi değerlendirmeyi doğrulamak için kullandı.
Raporlamaya göre belirteç, mühendislik, güvenlik uyumluluğu ve hata ödül programı faaliyetlerini kapsayan Jira projelerine okuma erişimi sağlıyordu. Ancak sunulan kanıtlar belirtecin tüm izinlerini veya erişilebilen her kaydın kesin listesini ortaya koymuyor. Bu nedenle desteklenebilen en güçlü sonuç, belirtecin Snowflake’ın hassas dahili Jira içeriğine erişim sağladığı; Snowflake sistemlerine sınırsız erişim vermediğidir.
Etkilenen varlık, herkese açık deponun CI/CD otomasyonuydu. Sorun GitHub Actions iş akışında bulunduğu için yayımlanmış herhangi bir Snowflake Connector for .NET sürümünün etkilendiği bildirilmedi.
Wiz bulguyu 23 Haziran’da bildirdi. Snowflake aynı gün iş akışını düzeltti ve açığa çıkan Jira kimlik bilgisini ertesi gün değiştirdi.
Şirket daha sonra denetim kayıtlarını inceledi ve maruz kalma süresi boyunca tek aktörün Wiz olduğu sonucuna vardı. Wiz de eriştiği kavram kanıtı verilerini güvenli biçimde sildiğini açıkladı.
Yetkisiz üçüncü taraf erişimi, CVE ataması veya etkilenen bir Connector sürümü bildirilmedi. Bu noktalar olayın doğrulanmış etkisine dair sınırları ortaya koyuyor; ilk iş akışı tasarımının güvenli olduğu anlamına gelmiyor. Herkese açık bir issue başlığı, dahili kimlik bilgilerini işleyen bir iş akışında kabuk komutunun parçası hâline getirilmemeliydi.
Bu olayın dersi Snowflake ve Copilot’ın ötesine uzanıyor. Issue başlıkları, pull request başlıkları, dal adları ve yorumlar gibi GitHub ifadeleri, kabuk komutuna aktarıldıkları anda güvenilmeyen, hatta düşmanca girdiler olarak ele alınmalı.
Daha güvenli iş akışları için:
run: betiklerine yerleştirmek yerine ortam değişkenleri üzerinden aktarın.jq gibi yapılandırılmış araçlar kullanın.Olay, ortaya çıkan yeni güvenlik dinamiğini net biçimde gösteriyor: Bir yapay zekâ destekli kodlama sistemi tehlikeli bir CI/CD değişikliğini kaçırabilirken, otonom bir saldırı ajanı bunu günler içinde bulup doğrulayabiliyor. Otomasyon hem düzeltmeyi hem de istismarı hızlandırabilir; ancak bağımsız güvenlik incelemesinin yerini tutmaz.