Vibe Coding Güvenliği: AI ile Yazılan Kodun Zafiyet Desenleri
Vibe coding güvenliği, doğal dil komutlarıyla yapay zekâya yazdırılan kodun taşıdığı zafiyet desenlerini tanımlama, tespit etme ve giderme disiplinidir. AI kod üreticileri işlevsel ama güvensiz kod üretmeye eğilimlidir: sabit kodlanmış sırlar, eksik girdi doğrulama, bozuk yetkilendirme ve halüsinasyonlu bağımlılıklar en sık görülen desenlerdir. Veracode'un 2025 GenAI Code Security raporunda test edilen kod örneklerinin %45'i OWASP Top 10 zafiyeti içermiştir.
Vibe coding nedir ve güvenlik açısından neden farklıdır?
Vibe coding, geliştiricinin kodu satır satır yazmak yerine bir yapay zekâ modeline doğal dille ne istediğini anlatarak kod ürettiği çalışma biçimidir. Terim, Andrej Karpathy'nin 2025 başındaki paylaşımıyla yaygınlaştı ve GitHub Copilot, Cursor, Claude Code ile benzeri araçların kullanımıyla hızla büyüdü. Vibe coding'in güvenlik açısından farkı, üretilen kodun çoğu zaman insan tarafından tam olarak okunmadan kabul edilmesidir: model "çalışan" bir çıktı verir, geliştirici çıktının işlevini doğrular ama tehdit modelini doğrulamaz. Stack Overflow'un 2025 anketine göre geliştiricilerin %84'ü AI araçlarını kullanıyor veya kullanmayı planlıyor; aynı ankette %46'sı bu araçların doğruluğuna güvenmediğini belirtiyor. Bu güven-kullanım açığı, güvenlik açısından denetlenmemiş kodun üretim ortamına akmasının temel nedenidir. Yapay zekâ güvenliği konusundaki geniş çerçeve için AltaySec LLM Güvenliği sayfasına bakabilirsiniz.
AI kod güvenliği hakkında doğrulanmış araştırmalar ne diyor?
Doğrulanmış araştırmalar, AI ile üretilen kodun işlevsel doğruluğunun güvenliğini garanti etmediğini tutarlı biçimde gösteriyor. Veracode'un 2025 GenAI Code Security raporunda 100'den fazla büyük dil modeli test edildi ve kod örneklerinin %45'i OWASP Top 10 kategorisinde zafiyet içerdi; rapor, güvenlik performansının model boyutundan veya eğitim gelişmişliğinden bağımsız olarak sabit kaldığını vurguluyor. Georgia Tech'in "Vibe Security Radar" çalışması ise 43.000'den fazla güvenlik danışmasını tarayarak AI kod üreticilerinin yol açtığı 74 doğrulanmış zafiyet olayını belgeledi. Aşağıdaki tablo bu bulguları tek bakışta özetler.
| Çalışma / Kaynak | Kapsam | Öne çıkan bulgu |
|---|---|---|
| Veracode 2025 GenAI Code Security Report | 100+ dil modeli, çok dilli görevler | Kodun %45'i OWASP Top 10 zafiyeti içerdi; XSS'e (CWE-80) karşı örneklerin %86'sı savunmasızdı |
| Georgia Tech — Vibe Security Radar (SSLab, H. Zhao) | 43.000+ güvenlik danışması taraması | 74 doğrulanmış AI-kaynaklı zafiyet (14 kritik, 25 yüksek); komut enjeksiyonu, kimlik doğrulama atlatma, SSRF ağırlıklı |
| USENIX Security 2025 (Cycode aktarımı) | Milyonlarca kod örneği | Örneklerin %19,7'si en az bir halüsinasyonlu paket referansladı; adların %43'ü tekrar üretimde yeniden çıktı |
| NYU — Pearce vd. "Asleep at the Keyboard" | 89 senaryo, 1.689 program | Programların yaklaşık %40'ı sömürülebilir zafiyet içerdi (temel/erken çalışma) |
Bu tablodaki her rakam adlandırılmış bir kaynağa dayanır; kaynağı belirsiz "genel" oranlar bilinçli olarak dışarıda bırakılmıştır.
AI ile yazılan kodda en yaygın zafiyet desenleri nelerdir?
AI ile yazılan kodda en yaygın zafiyet desenleri sabit kodlanmış sırlar, eksik girdi doğrulama (SQL enjeksiyonu ve XSS), bozuk yetkilendirme, güvensiz bağımlılıklar, devre dışı bırakılmış güvenlik kontrolleri ve bilgi sızdıran hata yönetimidir. Bu desenler rastgele değildir: model, eğitim verisindeki "mutlu yol" örneklerini taklit eder ve saldırgan bakış açısını modellemez. Aşağıdaki eşleme tablosu her deseni, nasıl oluştuğunu, hangi yöntemle tespit edilebileceğini ve pratik önlemini bir arada verir. Tablo, geliştirici ve AppSec ekipleri için bir denetim kontrol listesi olarak kullanılabilir.
| Zafiyet deseni | Nasıl oluşur | Nasıl tespit edilir | Önlem |
|---|---|---|---|
| Sabit kodlanmış sır (hardcoded secret) | Model, örnek için API anahtarını, parolayı veya token'ı doğrudan kaynağa gömer | Secret tarama (gitleaks, trufflehog, GitGuardian), commit öncesi kanca | Ortam değişkeni/secret manager; anahtar rotasyonu; depoda sır yasağı politikası |
| Eksik girdi doğrulama → SQL enjeksiyonu | Kullanıcı girdisi doğrudan sorguya birleştirilir; parametreli sorgu kullanılmaz | SAST kuralları (CWE-89), DAST, kod incelemesinde string birleştirme araması | Parametreli sorgu/ORM; allow-list doğrulama; en az yetkili DB kullanıcısı |
| Eksik çıktı kodlama → XSS | Kullanıcı verisi HTML'e kodlanmadan basılır; şablon oto-escape kapalıdır | SAST (CWE-80/79), tarayıcı DAST, CSP ihlali raporları | Bağlama duyarlı çıktı kodlama; oto-escape; Content-Security-Policy |
| Bozuk yetkilendirme / IDOR | Uç nokta kimliği doğrular ama nesne sahipliğini kontrol etmez | Yetki matrisi testleri, IDOR fuzzing, iş mantığı incelemesi | Sunucu tarafı sahiplik/rol kontrolü; merkezî yetkilendirme katmanı |
| Güvensiz / halüsinasyonlu bağımlılık | Model var olmayan ya da eski, CVE'li paket önerir (slopsquatting yüzeyi) | SCA/SBOM taraması, paket adı doğrulama, lock dosyası denetimi | Önerilen her paketi kayıt defterinde doğrula; pin + hash; onaylı kaynak |
| Devre dışı güvenlik kontrolleri | CSRF koruması, güvenlik başlıkları, SSRF koruması hiç eklenmez | DAST, güvenlik başlığı denetimi, yapılandırma incelemesi | Framework varsayılanlarını aç; CSRF token; SSRF allow-list; güvenlik başlıkları |
| Zayıf hata yönetimi / bilgi sızıntısı | İstisna izleri, stack trace ve iç yol bilgileri kullanıcıya döner | Hata yanıtı incelemesi, log denetimi, DAST hata tetikleme | Genel hata mesajı; ayrıntıyı yalnızca güvenli loga yaz; log enjeksiyonu temizliği |
| Güvensiz varsayılan yapılandırma | IaC şablonunda açık depolama, gevşek izin, kaynak limiti yok | IaC taraması (Checkov, tfsec), bulut duruş denetimi | Güvenli varsayılan şablon; en az yetki; ağ politikası ve kaynak limiti |
Yapay zekâ neden güvensiz kod üretir?
Yapay zekâ, güvenliği açıkça istenmediğinde güvensiz kod üretir çünkü model istatistiksel olarak en olası çözümü seçer, en güvenli çözümü değil. Büyük dil modelleri, halka açık depolardaki kod desenleriyle eğitilir ve bu depolarda güvensiz örnekler çoktur; model bir üretim güvenlik denetçisi değil, örüntü tamamlayıcısıdır. Veracode raporunun kritik bulgusu, modeller işlevsel/sözdizimsel olarak doğru kod yazmakta iyileşse de güvenli kod yazma yeteneklerinin gelişmemiş olmasıdır. İkinci neden bağlam eksikliğidir: model, uygulamanın tehdit modelini, veri sınıflandırmasını veya yetkilendirme kurallarını bilmez, dolayısıyla "mutlu yolu" tamamlar. Üçüncü ve en sistemik risk ölçek etkisidir. Georgia Tech araştırmacısı Hanqing Zhao'nun ifadesiyle, "milyonlarca geliştiricinin aynı modelleri kullanması, aynı hataların farklı projelerde tekrar tekrar görünmesi demektir." Böylece tek bir güvensiz desen, binlerce depoda eşzamanlı bir zafiyet sınıfına dönüşür.
Sabit kodlanmış sırlar ve sızan kimlik bilgileri neden bu kadar yaygın?
Sabit kodlanmış sırlar yaygındır çünkü yapay zekâ modelleri örnekleri çalışır kılmak için anahtarları, token'ları ve bağlantı dizelerini doğrudan koda gömer ve geliştirici bu örneği düzeltmeden kabul eder. GitGuardian'ın raporlarına göre 2024'te halka açık GitHub'a 23 milyondan fazla yeni sır sızmış, bu bir önceki yıla göre yaklaşık %25 artışı ifade etmiştir; aynı analiz, AI asistanı etkin depoların API anahtarı, parola veya token sızdırma olasılığının yaklaşık %40 daha yüksek olduğunu aktarır. Sızan bir kimlik bilgisi yalnızca teknik bir hata değildir: müşteri verisi barındıran bir sistemde ele geçirilen bir anahtar, 6698 sayılı KVKK kapsamında bir veri ihlali bildirimi yükümlülüğü doğurabilir. Bu nedenle sır yönetimi, vibe coding hattının en erken kapısı olmalıdır: commit öncesi secret tarama, ortam değişkeni/secret manager kullanımı ve düzenli anahtar rotasyonu asgari zorunluluktur. AltaySec'in yayımladığı araştırma yazıları bu tür TR-odaklı güvenlik konularını derinleştirir.
Halüsinasyonlu bağımlılıklar ve slopsquatting nasıl tedarik zinciri riski yaratır?
Halüsinasyonlu bağımlılık, bir dil modelinin gerçekte var olmayan bir paket adı önermesidir ve bu, "slopsquatting" adı verilen bir tedarik zinciri saldırı yüzeyi açar. Cycode'un aktardığı USENIX Security 2025 çalışmasında, taranan kod örneklerinin %19,7'si en az bir halüsinasyonlu paket referansladı ve uydurulan adların %43'ü aynı istemin tekrar çalıştırılmasında yeniden ortaya çıktı. Bu tekrar edebilirlik kritik olandır: saldırgan, modelin sık uydurduğu paket adını önceden tahmin edip paket deposuna zararlı içerikle kaydeder; geliştirici modelin önerisine güvenip kurunca zararlı kod bağımlılık zincirine girer. Risk, klasik typosquatting'den farklı olarak yazım hatasına değil, modelin öngörülebilir halüsinasyonuna dayanır. Önlem nettir: modelin önerdiği her paket adı kurulumdan önce resmî kayıt defterinde doğrulanmalı, sürümler pin'lenip hash ile sabitlenmeli ve SCA/SBOM taraması CI hattına yerleştirilmelidir. Kısaca, "model söyledi" bir güven kaynağı değildir.
Bozuk yetkilendirme ve devre dışı güvenlik kontrolleri AI kodunda nasıl görünür?
Bozuk yetkilendirme AI kodunda tipik olarak kimliği doğrulayan ama nesne sahipliğini kontrol etmeyen uç noktalar biçiminde görünür; bu, doğrudan nesne referansı (IDOR) zafiyetinin klasik kaynağıdır. Model, kullanıcının oturum açtığını doğrulayan bir kontrol üretir ama "bu kaydın sahibi bu kullanıcı mı?" sorusunu sormaz, çünkü iş mantığı bağlamını bilmez. Devre dışı güvenlik kontrolleri ise varsayılan olarak eklenmeyen korumalar olarak ortaya çıkar: Veracode raporu XSS'e (CWE-80) karşı örneklerin %86'sının savunmasız olduğunu; Georgia Tech taraması ise sunucu tarafı istek sahteciliği (SSRF), kimlik doğrulama atlatma ve komut enjeksiyonunun AI-kaynaklı olayların başında geldiğini gösterir. Dil bazında da fark vardır: Veracode'a göre Java %72, C# %45, JavaScript %43 ve Python %38 güvenlik başarısızlık oranıyla test edilmiştir. Önlem, yetkilendirmeyi merkezî ve sunucu tarafında zorunlu kılmak, framework'ün CSRF ve güvenlik başlığı varsayılanlarını açık tutmak ve SSRF için allow-list uygulamaktır.
Vibe coding ile üretilen kodu nasıl güvenli hale getirirsiniz?
Vibe coding ile üretilen kodu güvenli hale getirmenin yolu, insan gözünden geçmeyen hiçbir AI çıktısının üretim ortamına ulaşmadığı, çok katmanlı bir hattır. Önce istem seviyesinde güvenlik istenir: modele hedef dilin güvenli kalıplarını (parametreli sorgu, çıktı kodlama, en az yetki) açıkça belirtmek başarısızlık oranını düşürür. İkinci katman otomasyondur: her değişiklik SAST, secret tarama, SCA/SBOM ve IaC taramasından geçmeden birleştirilemez; bu araçlar CI hattında zorunlu kapı olmalıdır. Üçüncü katman insan incelemesidir; özellikle yetkilendirme, sır yönetimi ve bağımlılık kaynağı otomatik araçların en çok kaçırdığı alanlardır. Dördüncü katman yönetişimdir: hangi AI aracının hangi veriyle kullanıldığını izleyen bir politika, "gölge AI" riskini sınırlar. Türkçe LLM uygulamalarına özgü zafiyetler için AltaySec Scanner ve girdi/çıktı katmanında enjeksiyon ile PII sızıntısını hedefleyen Guardian yaklaşımı bu hattı tamamlayabilir; bu araçlar genel bir SAST'ın yerini almaz, onu tamamlar.
Sık Sorulan Sorular
Vibe coding güvenli mi?
Vibe coding kendiliğinden güvenli değildir; doğru denetim katmanları eklenmeden güvenli sayılamaz. Veracode'un 2025 raporunda test edilen AI kod örneklerinin %45'i OWASP Top 10 zafiyeti içermiştir ve rapor güvenlik performansının model gelişmişliğinden bağımsız kaldığını belirtir. Güvenlik, üretilen kod SAST, secret tarama, bağımlılık kontrolü ve insan incelemesinden geçtiğinde sağlanır; modelin çıktısını doğrudan güvenmek doğru yaklaşım değildir.
AI ile yazılan kodda en sık görülen zafiyet nedir?
En sık görülen zafiyetler sabit kodlanmış sırlar, eksik girdi doğrulamadan doğan enjeksiyon (SQL enjeksiyonu, XSS) ve bozuk yetkilendirmedir. Veracode, XSS'e (CWE-80) karşı örneklerin %86'sının savunmasız olduğunu; Georgia Tech taraması ise komut enjeksiyonu, kimlik doğrulama atlatma ve SSRF'nin AI-kaynaklı olayların başında geldiğini raporlar. Bu desenler modelin tehdit modelini bilmeden "mutlu yolu" tamamlamasından kaynaklanır.
Slopsquatting nedir?
Slopsquatting, bir dil modelinin var olmayan bir paket adı halüsinasyonu üretmesi ve saldırganın bu öngörülebilir adı paket deposuna zararlı içerikle kaydetmesiyle oluşan tedarik zinciri saldırısıdır. USENIX Security 2025 çalışmasında kod örneklerinin %19,7'si halüsinasyonlu paket referansladı ve adların %43'ü tekrarda yeniden çıktı. Önlem, önerilen her paketi kurulumdan önce resmî kayıt defterinde doğrulamaktır.
Neden AI modelleri güvensiz kod üretiyor?
AI modelleri en güvenli çözümü değil istatistiksel olarak en olası çözümü seçtiği için güvensiz kod üretir. Halka açık depolardaki güvensiz örneklerle eğitilirler, uygulamanın tehdit modelini bilmezler ve saldırgan bakış açısını modellemezler. Veracode'un bulgusuna göre modeller işlevsel kod yazmakta iyileşse de güvenli kod yazma yetenekleri gelişmemiştir; bu nedenle güvenlik açıkça istenmeli ve dışarıdan denetlenmelidir.
Vibe coding kodunu nasıl tarayabilirim?
Vibe coding kodunu, CI hattına yerleştirilen çok araçlı bir tarama zinciriyle denetleyebilirsiniz: sabit kodlanmış sırlar için secret tarama (gitleaks, trufflehog), enjeksiyon ve zayıf kalıplar için SAST, bağımlılıklar için SCA/SBOM ve altyapı şablonları için IaC taraması. Bu otomatik kapılar zorunlu kılınmalı, ardından yetkilendirme ve iş mantığı için insan incelemesi eklenmelidir. Otomatik araçlar özellikle yetki kontrolünü sık kaçırır.
AI kodu KVKK açısından risk oluşturur mu?
Evet, AI ile üretilen kod KVKK açısından risk oluşturabilir. Sabit kodlanmış bir kimlik bilgisinin sızması veya eksik yetkilendirmeden doğan bir IDOR, kişisel veriye yetkisiz erişime yol açarsa 6698 sayılı Kanun kapsamında bir veri ihlali bildirimi yükümlülüğü doğurabilir. Bu nedenle sır yönetimi, erişim kontrolü ve hata yönetiminde bilgi sızıntısının önlenmesi, kişisel veri işleyen sistemlerde teknik değil hukuki bir gerekliliktir.
