Yapay Zeka Kod Asistanınız Neden Güvenlik Riski Taşıyor ve Bunu Nasıl Çözersiniz

Yapay Zeka Kod Asistanınız Neden Güvenlik Riski Taşıyor ve Bunu Nasıl Çözersiniz

May 07, 2026 ai security credential management claude code developer security infrastructure hardening threat prevention coding agents

AI Kodlama Asistanınız Güvenlik Açığı Olabilir (Ve Nasıl Düzeltileceği)

Geçen hafta fark ettim ki aylardır bir AI asistanına bilgisayarımda rasgele komutlar çalıştırma izni vermiştim. AWS kimlik bilgilerime, SSH anahtarlarıma, özel GitHub depolarıma ve ev dizinimde duran her şeye erişimi vardı. En korkutucu kısım? Hiç düşünmemiştim çünkü araç çok kullanışlıydı ve şimdiye kadar hiçbir kötü şey olmamıştı.

İşte tam da bu tarz düşünceler üretim veritabanlarını silmeyi başarır.

Kolaylığın Rahatlığı Bir Güvenlik Tuzağı

Söylemesi zor ama şu gerçek var: çoğu AI kodlama aracı bugün, yeni işe başlayan bir kıdemli altyapı mühendisine vereceğiniz kadar geniş erişim ile çalışıyor. Yeni bir müteahhide hiçbir kısıtlama olmadan SSH erişimi vermezdik, ama bir LLM'e bunu fark etmeden veriyoruz.

Sorun kötü niyet değil. Dikkatsizlik. Bu araçlar o kadar faydalı ki gerçekten neler yapabileceklerini düşünmekten vazgeçiyoruz. Klonlanan bir depodaki tek bir prompt injection, yanlış hizalanmış bir hedef veya sıradan görünen bir komut bile kimlik bilgilerinizi saldırgan kontrollü bir sunucuya sızıtabilir. Hiç göremezsiniz.

İyi haber? Claude Code gibi araçlar aslında sağlam güvenlik kontrolleri içeriyor. Çoğumuz sadece bunları açmayı zahmet etmedik.

Varsayılan Riski Anlamak

Birçok AI kodlama aracı varsayılan olarak "otomatik" modda çalışır. Bu, açıkça engellenen veya gözden geçirmeye işaretlenen şeyler dışında, sizden izin almadan komutları yürütür demek. Verimli görünüyor, değil mi? İşte gerçekte ne demek olduğu:

Yasaklama listeniz boşsa ve varsayılan modunuz otomatikse, AI asistanınız serbestçe çalıştırabilir:

  • Herhangi bir uç noktaya curl komutu
  • Dosya indirmek için wget
  • Uzak sunucuya bağlanmak için ssh
  • Keyfi ağ bağlantıları kurmak için nc
  • Projenizdeki her .env dosyasını okumak
  • ~/.aws/credentials, ~/.ssh/keys, ~/.gnupg dizinlerine erişmek
  • Doğrudan depolara kod göndermek

Tüm bunlar sessizce olur. Bildirim yok. Soru yok. Sadece gitti.

Üç Katmanlı Güvenlik Modeli Kurmak

Gerçek şu: granüler kontrol lazım. AI asistanınızın yaptığı her şey onay gerektirmemeli, ama bazı işlemler mutlaka gerektirmeli. İşte bunu nasıl düşünmeliyiz:

Katman 1: Kesin Yasak

Kimlik bilgileri ile ilgili her şey için açık bir yasak listesiyle başlayın:

{
  "deny": [
    "Read(~/.ssh/**)",
    "Read(~/.aws/**)",
    "Read(~/.gnupg/**)",
    "Read(~/.azure/**)",
    "Read(~/.kube/**)",
    "Read(~/.npmrc)",
    "Read(~/.git-credentials)",
    "Read(*.env)",
    "Read(.env.*)",
    "Bash(curl *)",
    "Bash(wget *)",
    "Bash(nc *)",
    "Bash(ssh *)"
  ]
}

Bunu güvenlik duvarı olarak düşünün. Bu listedeki hiçbir şey asla geçemez. AI aracı bir şekilde kimlik bilgilerini sızıtmaya karar verse bile, araç kendisi bunu sistem seviyesinde engeller.

Katman 2: İnceleme Kontrol Noktası

Geri alınabilir ama tehlikeli işlemler için bir "soru sor" listesi kullanın:

{
  "ask": [
    "Bash(git push *)",
    "Bash(git commit *)",
    "Bash(git merge *)",
    "Bash(git reset *)",
    "Bash(npm publish *)",
    "Bash(docker push *)"
  ]
}

Bunlar AI'ın meşru şekilde yapması gerekebilecek şeyler—kod göndermek, paket yayınlamak, konteyner dağıtmak—ama aynı zamanda çalıştırılmadan önce gözden geçirmek isteyeceğiniz işlemler. Yürütülmeden önce bir istem ortaya çıkar. Ajan verimliliğini elde edersiniz ama geri alınamaz hataların riskini almadan.

Katman 3: Hızlı Yol

Güvenli işlemlere açıkça izin verin:

{
  "allow": [
    "Bash(npm run *)",
    "Bash(git status *)",
    "Bash(git diff *)",
    "Bash(git log *)",
    "Bash(ls *)",
    "Read(src/**)",
    "Read(tests/**)"
  ]
}

Bu komutlar etkileşim gerektirmez. Ajan onları serbestçe çalıştırabilir çünkü durumu değiştirmezler ya da değişiklikler güvenlidir.

Varsayılan Mod Kararı

Çoğu insan burada hata yapıyor. Yasak ve soru listelerinizi ayarladıktan sonra, geri kalan her şey için hala varsayılan bir mod seçmeniz gerekir. Üç seçenek:

  1. otomatik - Açıkça engellenmemiş her şey sessizce çalışır. En hızlı, ama yasak listenizin kapsamlı olduğundan emin olmanız lazım.

  2. değişiklikleriKabul Et - Ajan özgürce okuyabilir ve değişiklik önerebilir, ama izin listenizin dışında bash komutları çalıştırmadan önce soru sormalı. Dengeli.

  3. sor - Ajan risky bir şey yapan her şeyden önce sorar. Paranoid konfigürasyonlar için en yavaş ama en güvenli.

Çoğu takım değişiklikleriKabul Et'i varsayılan olarak kullanmaktan daha yararlanır. Verimliliği korur ama operasyonel işlemler konusunda bilinçli karar vermeyi zorlar.

Pratik Konfigürasyon Örneği

Burada gerçek, üretim ortamında kullanabileceğiniz bir konfigürasyon:

{
  "permissions": {
    "deny": [
      "Read(~/.ssh/**)",
      "Read(~/.aws/**)",
      "Read(~/.gnupg/**)",
      "Read(~/.azure/**)",
      "Read(~/.kube/**)",
      "Read(~/.npmrc)",
      "Read(~/.git-credentials)",
      "Read(~/.config/gh/**)",
      "Read(*.env)",
      "Read(.env.*)",
      "Bash(curl *)",
      "Bash(wget *)",
      "Bash(nc *)",
      "Bash(ssh *)"
    ],
    "ask": [
      "Bash(git push *)",
      "Bash(git commit *)",
      "Bash(npm publish *)",
      "Bash(docker push *)"
    ],
    "allow": [
      "Bash(npm run *)",
      "Bash(npm install *)",
      "Bash(npm test *)",
      "Bash(git status *)",
      "Bash(git diff *)",
      "Bash(git log *)"
    ],
    "defaultMode": "değişiklikleriKabul Et"
  }
}

Bu konfigürasyon AI asistanınıza verimli olmak için yeterince özgürlük verir, ama sizi asması için yeterince özgürlük vermez. Test etmeye, lint çalıştırmaya ve kod tabanınızı anlamaya yardımcı olabilir. Ama kimlik bilgilerini çalamazsa, kodunuzu onay olmadan gönderezemez ya da keyfi sunuculara bağlanamazsa.

Farklı Senaryolar İçin İki Yaklaşım

Kişisel olarak iki shell alias kullanıyorum:

# Varsayılan: dengeli güvenlik
alias cc="claude --permission-mode auto"

# Hata ayıklama modu: aracına tamamen güven (nadir kullan)
alias ccd="claude --permission-mode dangerously-skip-permissions"

Çalışmamın %95'inde cc kullanırım. ccd alias'ı, gerçekten her şeyin hızlı hareket etmesi gerektiğinde var, ama o anda aracına güvenmeyi bilinçli olarak seçiyorum. ccd yazdığım her sefer, bilinçli bir risk kararı alıyorum.

Endüstri Çapında Sorun

Bu Claude Code'a özgü değil. Shell komutları yürüten her AI kodlama aracının aynı saldırı yüzeyi var. GitHub Copilot uzantıları, Devin, Cursor, ChatGPT kod yürütme özelliğiyle—hepsi kolaylık ve güvenlik arasında bu değişim sunuyor.

Fark şu: Claude Code size bunu ele almak için granüler kontroller sunuyor. Çoğu araç sizden ya tamamıyla güvenmenizi ya da kullanmayı bırakmanızı bekler. Nadiren arası yol vardır.

Altyapınız İçin Bunun Anlamı

Takım ortamında AI kodlama asistanları dağıtıyorsanız, bu daha da kritik hale gelir. Bunu doğru yapmaları için bireysel geliştiricilere güvenemezsiniz. Çoğu bir şey kırılana kadar bunu düşünmez.

Düşünün:

  • Takımınızın paylaşılan konfigürasyonlarında yasak listeleri zorunlu kılmak
  • Mümkün olduğunda kimlik bilgisi dosyalarını dosya sistemi seviyesinde engellemek
  • Uzun ömürlü anahtarlar yerine geçici kimlik bilgileri veya oturum tokenları kullanmak
  • Beklenmeyen veri sızıntılarını önlemek için ağ seviyesi kontroller uygulamak
  • Takımınızı verimlilik ve risk toleransı arasındaki fark konusunda eğitmek

Özet

AI kodlama asistanları gerçekten güçlü ve kullanmaya değer. Ama bedava değiller. Güvenlik kontrolleri var—sadece kullanmanız gerekiyor.

Bugün başlayın. Kimlik bilgileri için yasak listesi kurmaya 15 dakika harcayın. Dağıtım işlemleri için bir soru listesi ekleyin. Mantıklı bir varsayılan mod seçin. Sonra AI asistanınızın hem verimli hem de kısıtlı olduğunu bilerek rahatça çalışabilirsiniz.

"Şimdiye kadar hiçbir kötü şey olmadı" rahat hissiyatı asla güvenlik stratejiniz olmamalı.

Read in other languages:

RU BG EL CS UZ SV FI RO PT PL NB NL HU IT FR ES DE DA ZH-HANS EN