Yapay zekâ destekli kodlama ajanlarının eklenti ekosistemi, ilk ciddi tedarik zinciri açığıyla karşı karşıya. Air Security araştırmacılarının Plugin4Shell adını verdiği açık; Claude Code, OpenAI Codex, GitHub Copilot ve Gemini CLI'ın eklentileri belirli bir Git commit'ine sabitlerken (SHA pinning) kullandığı doğrulama mantığındaki bir boşluktan kaynaklanıyor. Eklenti deposunu kontrol eden bir kişi, incelenip onaylanmış sürümün yerine zararlı kod koyabiliyor; ajan ise kullanıcıya hâlâ sabitlenmiş, güvenilir sürümü kurduğunu gösteriyor.

Açık 18 Eylül 2026'da kamuoyuyla paylaşıldı. Anthropic sorunu Claude Code 2.1.179, OpenAI ise Codex 0.146.0 sürümüyle giderdi. GitHub Copilot tarafında henüz düzeltme yok; Google ise kullanımdan kaldırma sürecindeki Gemini CLI için yama yayımlamayacağını açıkladı.

Kısa özet



BaşlıkAyrıntı
Açık adıPlugin4Shell
TürSıfır tıklamalı uzaktan kod çalıştırma (tedarik zinciri)
KeşfedenAir Security
Etkilenen ajanlarClaude Code, OpenAI Codex, GitHub Copilot, Gemini CLI
Düzeltilen sürümlerClaude Code 2.1.179, Codex 0.146.0
Yamasız kalanlarGitHub Copilot (düzeltme yok), Gemini CLI (yama yapılmayacak)
CVEAçıklama tarihinde atanmış bir CVE yok
Aktif istismarAçıklama tarihinde bilinen istismar yok


Açık nasıl çalışıyor?



Kodlama ajanlarının eklenti pazar yerleri güvenlik modelini büyük ölçüde commit sabitlemeye dayandırıyor. Bir eklenti incelendikten sonra belirli bir commit SHA değerine kilitleniyor. Beklenen davranış, ajanın ilk kurulumda ve sonraki güncellemelerde yalnızca bu incelenmiş commit'i indirmesi.

Air Security'nin bulgusuna göre dört ajan da SHA değerini Git'e iletip checkout işlemini başlatıyor, ancak Git'in gerçekten o commit'e ulaşıp ulaşmadığını doğrulamıyor. Git, varsayılan davranışı gereği kendisine verilen 40 karakterlik onaltılık bir değeri bazı durumlarda commit yerine dal (branch) adı olarak da çözümleyebiliyor. Depo sahibi, adı tam olarak sabitlenmiş SHA ile aynı olan bir dal oluşturup bu dalı zararlı bir commit'e yönlendirirse ajan farkında olmadan o dalı çekiyor. Kullanıcı arayüzünde ise sabitleme değeri değişmediği için her şey yolunda görünüyor.

Claude Code, Codex ve Copilot aynı dal adı varyantından etkileniyor. Gemini CLI ise commit getirme sürecindeki farklı bir mekanizma üzerinden savunmasız.



Eklenti ajanla aynı yetkilerle çalıştığı için değiştirilen kod geliştiricinin dosyalarına, kayıtlı kimlik bilgilerine, SSH anahtarlarına, bulut CLI oturumlarına ve geliştiricinin erişebildiği tüm sistemlere ulaşabiliyor. Görsel: Markus Spiske / Wikimedia Commons (Unsplash), CC0. Temsilidir; olayın kendisine ait bir kare değildir.

Neden "sıfır tıklama"?



Saldırının en tehlikeli yanı kullanıcı etkileşimi gerektirmemesi. Claude Code ve Codex'te eklentilerin arka planda otomatik güncellenmesi varsayılan olarak açık. Kurbanın yapması gereken tek şey, güvendiği bir pazar yerinden incelenmiş ve sabitlenmiş bir eklentiyi daha önce kurmuş olmak. Araştırmacıların ifadesiyle, güvenlik modelinin tam olarak öngördüğü şekilde davranan kullanıcı saldırıya açık hâle geliyor.

Air Security iki gerçekçi saldırı senaryosunu öne çıkarıyor:


  • Geciktirilmiş kötü niyet: Temiz ve işlevsel bir eklenti incelemeden geçer, kullanıcı kazanır, ardından sahibi tarafından zararlı hâle getirilir.
  • Depo ele geçirme: Saldırgan mevcut ve popüler bir eklentinin deposunu ya da bakımcı hesabını ele geçirerek zararlı güncelleme yayar.



Araştırmacılar daha önce kendi hazırladıkları bir eklentinin kaldırılmadan önce 26.000'den fazla ajana yayıldığını, aktif kullanımdaki 925 skill'in ise asıl bakımcılarından ele geçirilmiş durumda olduğunu ve bunların toplam 134.000 ajana ulaştığını göstermişti. Bu rakamlar eklenti ve skill ekosisteminin ne kadar hızlı büyüdüğünü ve saldırı yüzeyinin ne kadar geniş olduğunu ortaya koyuyor.

GitHub kullananlar ne kadar güvende?



GitHub, 40 karakterlik onaltılık değerlerden oluşan dal adlarını doğrudan reddediyor. Bu nedenle yalnızca GitHub üzerinde barındırılan varsayılan pazar yerlerinden eklenti kuran kullanıcılar için dal adı varyantının pratikte uygulanması zor. Ajanların otomatik güncelleme özelliği de varsayılan olarak GitHub tabanlı pazar yerlerinde etkin.

Buna karşın Bitbucket ve kurum içinde barındırılan Git sunucuları (GitLab, Gitea, Gerrit gibi self-hosted çözümler) bu tür dal adlarına izin veriyor. Özel pazar yeri kuran, eklentileri iç Git altyapısından dağıtan ya da üçüncü taraf pazar yerlerini kullanan kurumlar asıl risk grubunda yer alıyor.

Zaman çizelgesi



TarihGelişme
Mayıs 2026Air Security açığı keşfetti ve dört ajana karşı çalışan kavram kanıtı geliştirdi
Haziran 2026Dört üreticiye sorumlu bildirim yapıldı
Eylül 2026Claude Code 2.1.179 ve Codex 0.146.0 düzeltmeleri yayımlandı
18 Eylül 2026Açık kamuoyuyla paylaşıldı


Üreticilerin yanıtı



Anthropic ve OpenAI, checkout sonrası çözümlenen commit'in sabitlenen SHA ile birebir aynı olduğunu doğrulayan kontroller ekledi. Microsoft ise açıklama tarihine kadar GitHub Copilot için bir düzeltme yayımlamadı. Google, Gemini CLI'ı yamalamak yerine ürünü emekliye ayırma kararını öne çıkardı ve kullanıcılarını bu sabitleme sistemini kullanmayan Antigravity'ye yönlendirdi. Bu durum, Gemini CLI kullanmaya devam eden ekiplerin süresiz biçimde açıkta kalacağı anlamına geliyor.

Kurumlar ve geliştiriciler ne yapmalı?




  1. Hemen güncelleyin: Claude Code'u 2.1.179 veya üzerine, Codex'i 0.146.0 veya üzerine yükseltin. Sürümü claude --version ve codex --version komutlarıyla doğrulayın.
  2. Envanter çıkarın: Geliştirici makinelerinde ve CI ortamlarında kurulu ajanları, eklentileri, skill'leri ve bunların kaynak pazar yerlerini listeleyin.
  3. Kaynakları kısıtlayın: Eklenti kurulumunu mümkün olduğunca GitHub üzerindeki güvenilir pazar yerleriyle sınırlayın; Bitbucket ve self-hosted Git kaynaklı eklentileri yeniden gözden geçirin.
  4. Gemini CLI'dan çıkış planlayın: Yama gelmeyecek olması nedeniyle Gemini CLI kullanımını sonlandırın veya en azından üçüncü taraf eklentileri kaldırın.
  5. Copilot için geçici önlem: Düzeltme gelene kadar Copilot'ta GitHub dışı kaynaklardan eklenti kurmayın ve mevcut eklentileri denetleyin.
  6. Self-hosted Git sunucularını sertleştirin: Kurum içi Git sunucularında 40 karakterlik onaltılık dal ve etiket adlarını engelleyen sunucu tarafı kanca (pre-receive hook) veya politika tanımlayın.
  7. Ajan yetkilerini daraltın: Ajanları ayrı kullanıcı hesabı, konteyner veya sanal makinede çalıştırın; üretim kimlik bilgilerini ve uzun ömürlü bulut anahtarlarını geliştirici makinesinde düz metin olarak tutmayın.
  8. İzleyin: EDR ve SIEM tarafında ajan süreçlerinden başlayan beklenmedik ağ bağlantılarını, kimlik bilgisi dosyalarına erişimleri ve alt süreç oluşturma davranışlarını takip edin.



Self-hosted Git sunucuları için örnek bir pre-receive kontrolü şu mantıkla kurulabilir:

CODE TERMINAL
#!/bin/sh
# 40 karakterlik onaltılık dal/etiket adlarını reddet
while read old new ref; do
  name="${ref#refs/heads/}"
  name="${name#refs/tags/}"
  if echo "$name" | grep -Eq '^[0-9a-fA-F]{40}$'; then
    echo "Reddedildi: commit SHA biçiminde ref adı ($name)"
    exit 1
  fi
done
exit 0


Değerlendirme



Plugin4Shell, yapay zekâ kodlama ajanlarının artık klasik yazılım tedarik zincirinin bir parçası olduğunu açıkça gösteriyor. Commit sabitleme doğru bir fikir; ancak sabitlenen değerin gerçekten uygulandığı doğrulanmadığında güvenlik yalnızca görünüşte kalıyor. Ajanlar geliştiricinin tüm yetkileriyle çalıştığı için tek bir zararlı eklenti güncellemesi, kaynak koddan bulut hesaplarına kadar uzanan bir zincirin ilk halkası olabilir. Güncellemeleri uygulamak ilk adım; eklenti kaynaklarını daraltmak ve ajanları izole ortamda çalıştırmak ise kalıcı savunmanın temeli olmalı.

Kapak görseli: Crew / Wikimedia Commons (Unsplash), CC0. Temsilidir; olayın kendisine ait bir kare değildir.

Kaynaklar


TR Siber Ekibi Yazar · TRSiber
Kaynak bağlantısı ← Ana sayfaya dön