Siber Güvenlik

Copilot Autofix, Snowflake’ın CI/CD Boru Hattında Kabuk Enjeksiyonu Oluşturdu

mm
Unite.AI sitesini Google'daki tercih ettiğiniz kaynaklara ekleyin

GitHub’un Copilot Autofix’i tarafından yazılan ve 18 Haziran 2026’da bir Snowflake deposuna birleştirilen bir güvenlik düzeltmesi, temizlenmiş giriş desenini kaldırdı ve şirketin CI/CD boru hattını komut enjeksiyonuna açık bıraktı; beş gün sonra, otonom bir AI araştırma ajanı deliği buldu, istismar etti ve bir GitHub Actions çalıştırıcısından çalışan Jira kimlik bilgilerini çekti, Wiz Research 17 Ağustos 2026’da açıkladı.

Güvenlik açığı jira_issue.yml dosyasında, Snowflake’ın .NET veri bağlayıcısının halka açık deposu snowflakedb/snowflake-connector-net içindeki bir GitHub Actions iş akışında bulunuyordu. İş akışı, herkes bir GitHub sorunu açtığında tetikleniyor ve sorunun başlığını (tamamen başvuran kişi tarafından kontrol edilen metin) doğrudan bir kabuk betiğine yerleştiriyordu. Tetikleyici issues: opened olduğundan, internetteki herhangi bir GitHub hesabı kimlik doğrulaması yapmadan bu iş akışına ulaşabiliyordu.

Wiz’in “Red Agent” adlı, Snowflake’ın HackerOne hata ödül programı aracılığıyla çalışan otonom güvenlik araştırma aracı, iş akışını işaretledi, çalışan bir istismar geliştirdi ve çalıştırıcının ortamından bir Jira API jetonu dışa aktardı. Snowflake, raporu aldığı aynı gün, 23 Haziran 2026’da iş akışını düzeltti, bir gün sonra kimlik bilgilerini yeniledi ve Wiz’e, denetim günlüklerinin beş günlük pencere içinde başka bir aktörün açık sistemlere dokunmadığını gösterdiğini bildirdi.

The “Autofix” Removed the Sanitizer

Enjekte edilebilir deseni tanıtan commit, PR #1218, “SNOW-2069227: Update jira workflows” üzerinden 18 Haziran 2026’da birleştirildi. Çekme isteği geçmişi, Ağustos 2025’ten beri Jira otomasyonu üzerinde çalışan bir insan yazarını gösteriyor — ve bir noktada, Copilot Autofix powered by AI tarafından ortak yazar olarak eklenmiş bir commit, kod tarama uyarıları için önerilen düzeltmeleri oluşturan GitHub Advanced Security botunu işaret ediyor.

AI önerisi, iş akışının sorun başlığını nasıl işlediğini değiştirdi. Mevcut kod, başlığı bir env: değişkeni aracılığıyla geçiriyor ve JSON yükünü jq --arg ile oluşturuyordu; bu desen, güvensiz metnin kabuğa girmesini engelliyordu. Önerilen değişiklik, doğrudan dize genişletmesini tercih ederek bunu bıraktı:

run: | TITLE=$(echo '${{ github.event.issue.title }}' | sed 's/"/\"/g' | sed "s/'/\'/g")

sed kaçış işlemi, GitHub’ın şablon motoru başlığı betiğe zaten yerleştirdikten sonra çalışıyor. Başlıktaki tek tırnak, echo '...' sarmalayıcısından çıkıyor ve sonrasındaki her şey kabuk olarak yürütülüyor. GitHub’ın kendi Copilot Autofix belgeleri, özelliği “bir uyarı için tek bir önerilen düzeltme üretir, siz de gözden geçirip kendiniz uygularsınız” şeklinde tanımlıyor — gözden geçirme adımı, bu düzeltmenin geçmesine izin veren noktadır.

İş akışı ayrıca, kimlerin tetikleyebileceğini sınırlıyor gibi görünen bir koruma koşulu taşıyordu:

if: (github.event_name == 'issues' && github.event.pull_request.user.login != 'whitesource-for-github-com[bot]')

Sorun olaylarında github.event.pull_request her zaman null olduğundan, karşılaştırma her zaman doğru değerlendiriliyor. Tüm GitHub kullanıcıları bu kapıyı geçebiliyordu.

An Agent on Each Side of the Exploit

Red Agent’ın ilk dışa aktarma girişimi başarısız oldu. Yük, enjekte edilen satırın geri kalanını yutmak için bir # yorum karakteri kullandı, ancak yorum aynı zamanda TITLE=$(...) kapanış parantezini de tüketti ve çalıştırıcı bir bash sözdizimi hatası döndürdü, çalıştırmadı. Wiz’in raporuna göre, ajan hatayı analiz etti, yükünü ; echo ' ile kabuk bloğunu kapatacak şekilde yeniden yazdı ve tekrar denedi.

Çalışan yük, bir sorun başlığı olarak teslim edildi ve çalıştırıcının JIRA_API_TOKEN, JIRA_USER_EMAIL ve JIRA_BASE_URL ortam değişkenlerini base64 kodlayarak curl aracılığıyla bant dışı bir dinleyiciye gönderdi. Geri arama, birkaç saniye içinde Azure’da barındırılan bir GitHub Actions çalıştırıcısından geldi.

Kurtarılan jeton, qa@snowflake.net olarak snowflakecomputing.atlassian.net üzerinden kimlik doğrulaması yaptı ve Snowflake’ın mühendislik, güvenlik uyumu ve hata ödülü izleme projelerinde okuma erişimi sağladı.

Snowflake’ın iyileştirmesi, 23 Haziran 2026’da PR #1402 ile birleştirildi ve güvenli env: değişkeni ve jq --arg ayrıştırma desenini geri getirdi. Jira jetonu 24 Haziran 2026’da iptal edildi ve yenilendi. Wiz, kanıt‑konsept testleri sırasında erişilen tüm verileri güvenli bir şekilde sildiğini belirtti.

“Snowflake, Wiz’in sorumlu raporlamasını ve HackerOne üzerinden yürüttüğümüz güvenlik açıklama ve hata ödül programı kapsamında bu bulgular üzerindeki iş birliğini takdir ediyor,” şirket, Wiz raporu ile birlikte yayımlanan bir açıklamada söyledi. “Açıklama 23 Haziran 2026’da alındı, hemen araştırıldı ve düzeltildi ve incelememiz yetkisiz erişim kanıtı bulmadı.”

What the Five-Day Window Shows

Açıklama, belgelenmiş bir modelin ortasında yer alıyor: AI destekli değişiklikler, güvenlik varsayımlarından daha hızlı bir şekilde gözden geçirme sürecine giriyor. Snowflake’ın kendi denetim günlükleri, bu olayı anlaşılır kılan şeydir: şirketin beş günlük maruz kalma süresince üçüncü taraf erişimi olmadığını, Wiz’in de bunu doğruladığını gösteriyor. Snowflake’ın denetim günlüğü analizi, beş günlük pencere içinde dış bir üçüncü tarafın uç noktaya erişmediğini doğruladı.

Zaman çizelgesi, endüstrinin hâlâ varsayımsal olarak gördüğü bir diziyi de sıkıştırıyor. Bir kodlama asistanı, özellikle kabuk enjeksiyonunu önlemek için konulmuş savunma desenini, o deseni neden var olduğuna dair bir kaydı olmadığı için kaldırdı. Ardından saldırgan bir ajan, sonucu günler içinde buldu ve silahlandırdı, canlı hata çıktısına karşı istismarını kendi kendine düzeltti. Saldırı tarafı, klavye başında bir insan olmadan çalıştı; kodlama tarafında ise AI değişikliği üretti, ancak bir insan öneriyi uygulayıp birleştirdi — bu, tam olarak başarısız olan gözden geçirme adımıdır.

Wiz’in raporu, AI‑tarafından oluşturulan çekme isteklerinin insan kodu gibi aynı statik analizden geçmesini, ekiplerin kimlik bilgisi ömrünü otomatik keşif hızlarıyla eşleyecek şekilde kısaltmasını ve koruma önlemlerinin, yapılandırılmış ayrıştırıcıların doğrudan dize interpolasyonu ile değiştirilmesini engellemesini öneriyor. Check Point AI trafiği için istemci denetimini kurumsal güvenlik duvarlarına taşıdı bu yazın başında, ve Unite.AI ajan sandbox kaçışlarını ve ajanik sistemlerin gerçek üretim hedeflerine ulaşmasını saldırgan taraf olgunlaştıkça ele aldı. Snowflake olayı, bir CI boru hattının içinden anlatılan aynı hikayedir: güvenlik açığı beş gün boyunca canlıydı ve bunun bir vaka çalışması olarak görülmesinin tek nedeni, hangi ajanın önce oraya ulaşmasıydı.

Miles Okada yapay zeka ve siber güvenlik alanında bir analisttir, Unite.AI'de çalışmaktadır. Yeni tehditlere, savunma altyapılarına ve saldırganlar ile otomatik sistemler arasındaki değişen dinamiklere odaklanmaktadır. Çalışmaları, yapay zekanın güvenlik operasyonlarını nasıl yeniden şekillendirdiğini, otonom tehdit tespiti ve yanıtı ile adversarial AI tekniklerinin yükselişini incelemektedir.
Teknik ve soruşturmacı bir bakış açısıyla, Miles güvenlik araştırmaları, olay açıklamaları ve gerçek dünya dağıtımlarını analiz etmektedir. Yapay zeka savunmaları güçlendirdiği yerleri ve yeni zayıflıklar oluşturduğu yerleri anlamak için model sömürme, veri zehirlenmesi, saldırı otomasyonu ve yapay zeka destekli sistemlerin güvenliğini büyük ölçekte sağlamaya yönelik operasyonel gerçeklere özel dikkat göstermektedir.
Miles Okada tarafından yazılan makaleler, Unite.AI editör ekibi tarafından doğruluk, titizlik ve hızlı değişen yapay zeka güvenlik manzarasının sorumlu bir şekilde kapsanması için gözden geçirilen AI tarafından oluşturulur.