Anthropic, OpenAI ve GitHub Copilot’u etkileyen yeni bir açıkta, depo sahiplerinin AI kodlama ajanlarına “sabitlenmiş” görünen eklenti kodunu değiştirebildiği ortaya çıktı. Air Security’nin mayısta yaptığı testlere dayanan bulgular, bu yöntemin Claude Code, Codex, Copilot ve Gemini CLI üzerinde çalışabildiğini gösteriyor; şirket, durumu haziranda üreticilere bildirdi.
Bulguya göre sorun, ajanların eklenti yüklerken çevrim içi pazaryerlerinden aldıkları sürümü bir commit hash ile kilitlemesiyle ilgili. Sistem, belirli bir kod anlık görüntüsünü işaret eden bu hash’i kontrol ediyor ancak indirilen kodun gerçekten o hash’e karşılık gelip gelmediğini doğrulamıyor. Böylece depo sahibi, hash’e benzeyen bir dal adı oluşturabildiği ortamlarda aynı adı farklı kodlara yönlendirerek ajanı kandırabiliyor. Kullanıcı ekranda kilitli sürümü gördüğünü sanarken, ajan aslında değiştirilmiş bir kodu çalıştırıyor.
Kilitli sürüm görünüyor, yüklenen kod değişiyor
Air Security’nin açıklamasına göre bu teknik, özellikle Git’in dal adı ve commit kimliği arasındaki eşleşmeyi yanlış yorumlayabildiği yapılarda ortaya çıkıyor. Bir depo sahibi, dal adını commit hash’i gibi gösterebildiğinde ajan o adı çözümleyip farklı bir revizyonu indirebiliyor. Araştırmacılar bu durumu “Plugin4Shell” adıyla anıyor.
Bu yöntem her platformda işlemiyor. GitHub, commit hash’e benzeyen dal ve etiket adlarına izin vermediği için GitHub üzerinde barındırılan bir eklenti bu tekniğe açık değil. Buna karşılık Bitbucket gibi hash benzeri adlara izin veren servislerde ya da kurumların kendi Git sunucularında risk doğabiliyor. Claude Code, Codex ve Copilot gibi ajanlar da bu tür dış depoları destekliyor.
Tehlikenin büyüklüğü, eklentilerin kullanıcıyla aynı yetkilerle çalışmasından geliyor. Air Security, yerine geçen kodun kullanıcının dosyalarına, kaydedilmiş kimlik bilgilerine ve erişebildiği sistemlere ulaşabileceğini belirtti. Bu nedenle saldırı, yalnızca sahte bir paket yükleme meselesi olmaktan çıkıp oturum açılmış hesaplar ve yerel veriler üzerinde doğrudan etkiye dönüşüyor.
İşin kritik taraflarından biri de arka planda çalışan otomatik güncelleme mekanizması. Bir ajan, önceden güvenilen eklentiyi kullanıcıdan yeni bir onay istemeden yenileyebiliyorsa, saldırgan mevcut eklentiyi sessizce değiştirebiliyor. Air Security, bu davranışın Claude Code ve Codex’te varsayılan olarak bulunduğunu aktardı.
Yine de riskin her kurulumda aynı olmadığını vurguladı. Anthropic ve GitHub belgelerine göre otomatik güncelleme, ajanların kendi yerleşik ve GitHub tabanlı pazaryerlerinde varsayılan olarak açık, dış kaynaklarda ise kapalı ya da isteğe bağlı durumda. Bu yüzden eklentileri yalnızca varsayılan, GitHub temelli kataloglardan alan kullanıcıların dal adı hilesine maruz kalmadığı belirtiliyor.
Yama alanlar, bırakılanlar ve Gemini CLI’deki ayrı yöntem
Air Security’nin testlerine göre Anthropic, Claude Code 2.1.179 sürümünde; OpenAI ise Codex 0.146.0 sürümünde açığı kapattı. OpenAI’nin yayımladığı kendi düzeltme notu da benzer bir hatayı tarif ediyor: Git, istenen bir commit SHA’yı dal adı olarak yorumlayabiliyor ve bu da eklenti kaynağının sabitlenen sürümden farklı bir commit’e dönüşmesine yol açabiliyor. OpenAI bu değişikliği Codex 0.146.0 ile dağıttı.
GitHub Copilot cephesinde ise Air Security herhangi bir yama olmadığını söylüyor. Şirket, Microsoft’u haziranda bilgilendirdiğini ve bugüne kadar bir düzeltme yayımlanmadığını aktardı. Copilot’un GitHub dışındaki sunuculardan da eklenti yükleyebilmesi, riskin GitHub ile sınırlı olmadığını gösteriyor.
Google tarafında tablo farklı. Şirket, tüketiciye açık Gemini CLI’yi haziranda durdurdu ve kullanıcıları daha yeni ajanı Antigravity’ye yönlendirmeye başladı. Air Security’ye göre Gemini CLI için bu açık kapatılmayacak. Google da kurumsal Gemini CLI erişiminin güncellemelerle süreceğini söyledi, ancak bu açığın bu güncellemeler arasında yer alıp almadığı netleşmedi.
Gemini CLI’deki saldırı yolu dal adı hilesinden ayrı çalışıyor. Air Security, yükleyicinin ana dal adı FETCH_HEAD olan bir depo tarafından kandırılabildiğini söylüyor. GitHub’ın commit hash’e benzeyen adlara yönelik kuralı bu adı açık biçimde yasaklamıyor. Bu nedenle Gemini CLI’ye GitHub üzerinden eklenti kurulmasının açığı dışarıda bırakıp bırakmadığı kesinleşmiş değil.
Şirket, dört ajan üzerinde de çalışan bir test saldırısını mayısta hazırladığını ve bunu haziranda üreticilere bildirdiğini belirtiyor. 18 Eylül itibarıyla açık için bir CVE numarası atanmamıştı. Yapılan kontroller, dört üreticinin de resmî bir güvenlik duyurusu yayımlamadığını gösterdi. Açığın gerçek saldırılarda kullanıldığına dair bir işaret de yok.
Aynı gün Git davranışını yerel bir testte yeniden üreten ekip, sorunun temelini doğruladı. OpenAI’nin kamuya açık düzeltmesinde yer alan açıklama, güvenlik araştırmacılarının anlattığı teknikle aynı noktaya çıkıyor: Git, istenen commit kimliğini bir dal adı gibi yorumlayabiliyor ve bu da sabitlenmiş kaynağın farklı bir sürüm olarak yüklenmesine yol açabiliyor.
Üreticilerin durumu nasıl yönettiği de farklılık gösterdi. Anthropic’in 2.1.179 sürüm notlarında bu düzeltmeye doğrudan atıf yapılmadı; açığın kapatıldığı bilgisi Air Security’nin değerlendirmesine dayanıyor. Copilot için Air Security, Microsoft’a haziranda bildirim yapıldığını ve bugüne kadar düzeltme çıkmadığını söylüyor. Gemini CLI tarafında ise Google’ın ürünü aşamalı olarak geri çekmesi, yamadan çok geçiş stratejisini öne çıkarıyor.
Air Security’nin aynı ekip tarafından daha önce de benzer bir test yaptığı biliniyor. Haziranda yayımlanan önceki çalışmada, dış bağlantısı sonradan değiştirilmiş sahte bir yetenek, güvenlik taramalarını aşarak yaklaşık 26.000 ajana ulaşmıştı. Plugin4Shell adı verilen yeni bulgu, bu kez bağlantı değiştirmek yerine versiyon kilidi arkasındaki eklentinin değiştirilmesine dayanıyor.
Kaynağa göre olayın teknik ortak noktası, kodun gerçekten sabitlenen sürümle eşleşip eşleşmediğinin ajan tarafından doğrulanmaması. Sorun pazaryerinde değil, ajan yazılımının kullanıcının makinesinde bu eşleşmeyi kontrol etme biçiminde ortaya çıkıyor. Bu nedenle düzeltmenin pazaryeri tarafında değil, doğrudan ajanların içinde yapılması gerekiyor.
Air Security’nin aktardığı mevcut duruma göre tablo şöyle: Claude Code 2.1.179 ve sonrası sürümlerde düzeltilmiş durumda, Codex 0.146.0 ve sonrası sürümler de yamayı içeriyor. GitHub Copilot için bir yama yok. Google Gemini CLI için de düzeltme planlanmıyor; şirket kullanıcıları Antigravity’ye yönlendiriyor.
Açığın hangi eklentide kaldığı, güncelleme sonrasında kullanıcı makinesindeki değişikliğin temizlenip temizlenmediği ise kaynak metinde belirtilmiyor. Bu yüzden araştırmanın şu an için netleştirdiği şey, saldırının çalışabildiği ve üreticilerin yanıtlarının ürün bazında farklılaştığı. Her durumda hedef aynı: görünürde kilitli duran bir eklenti, gerçekte farklı kod çalıştırabiliyor.
