Bir ekip, uygulama kodlarını oluşturmak için yapay zekaya büyük ölçüde güvendi; bu uygulama artık "vibe kodlama" olarak adlandırılıyor. Dağıtımdan bir hafta sonra sunucuları ele geçirildi. Bu olayı paylaşan geliştirici, güvenlik açıklarının öngörülebilir olması nedeniyle saldırı vektörünü hemen tahmin edebildi. Bu makale, neyin yanlış gittiğini, yapay zeka tarafından oluşturulan kodun neden güvenlik açıklarına karşı benzersiz bir şekilde savunmasız olduğunu açıklıyor ve yapay zeka destekli projeleri üretime geçmeden önce güvence altına almak için somut bir kontrol listesi sunuyor.
Olay: Ne Oldu?
Hikaye, Ocak 2026'da Reddit'in r/webdev topluluğunda ortaya çıktı, hızla 400'den fazla olumlu oy aldı ve yoğun tartışmalara yol açtı. Bir geliştirici, iki meslektaşının "vibe kodlama"yı – ChatGPT, Claude veya Cursor gibi yapay zeka kodu oluşturma araçlarını kullanarak minimum manuel inceleme ile hızlıca uygulama geliştirme pratiğini – benimsediğinde şirketlerinde neler olduğunu paylaştı.
Ekip heyecanlıydı. Hızlıca ürün çıkardılar. Yapay zeka, veritabanı sorgularından kimlik doğrulama akışlarına kadar her şeyi halletti. Dağıtım zamanı geldiğinde, yapay zeka ilk sürümleri için "16.0.0" sürüm numarasını bile önerdi – bu, daha sonra karanlık bir ironi olarak görünen bir ayrıntıydı.
Dağıtımdan bir hafta sonra sunucu saldırıya uğradı.
Hikayeyi paylaşan geliştirici şaşırmadı. Kod tabanına baktıklarında, yapay zekanın neden olduğu birden fazla güvenlik açığını hemen tespit edebildiler. Saldırganlar da bunları bulmuştu.
Bu münferit bir olay değil. Güvenlik araştırmacıları, yapay zeka tarafından oluşturulan kodlarda, dil modellerinin nasıl eğitildiği ve kodlama görevlerine nasıl yaklaştıkları nedeniyle neredeyse yalnızca bu kodlarda ortaya çıkan "sentetik güvenlik açıkları" olarak adlandırdıkları konusunda uyarıyorlardı.
Yapay Zeka Tarafından Oluşturulan Kod Neden Savunmasızdır?
Yapay zeka kodlama asistanları, geniş genel kod depoları üzerinde eğitilir. Bu durum, çeşitli güvenlik kör noktaları yaratır:
1. Eğitim Verileri Güvenlik Açığı Olan Kod İçerir
GitHub, Stack Overflow ve eğitim web siteleri milyonlarca satır güvensiz kod içerir. Öğrenme amaçlı yazılmış örnekler genellikle güvenlik hususlarını atlar. Eski kalıplar eğitim verilerinde kalır. Yapay zeka, bunların hepsinden eşit şekilde öğrenir.
Bir yapay zekadan kimlik doğrulama kodu yazmasını istediğinizde, CSRF koruması olmayan 2018 tarihli bir eğitimden bir kalıbı veya basitlik adına parolaları düz metin olarak depolayan bir Stack Overflow cevabını yeniden üretebilir.
2. Yapay Zeka "Çalışmaya" Odaklanır, "Güvenliğe" Değil
Dil modelleri, istemi karşılayan kod üretir. Bir oturum açma uç noktası isterseniz, yapay zeka kullanıcıları oturum açtıran bir şey oluşturur. Bu uygulamanın SQL enjeksiyonuna karşı dirençli olup olmadığı, parolaları doğru bir şekilde hashleyip hashlemediği veya oturum jetonlarını doğrulayıp doğrulamadığı birincil hedefe göre ikincildir.
Bu, deneyimli geliştiricilerin düşünme şeklinden temelden farklıdır. Güvenlik bilincine sahip geliştiriciler her adımda "bu nasıl istismar edilebilir?" diye sorar. Yapay zeka asistanları bu düşmanca zihniyeti doğal olarak uygulamaz.
3. Bağlam Penceresi Sınırlamaları Bütünsel Güvenliği Engeller
Güvenlik açıkları genellikle bileşenler arasındaki etkileşimlerden ortaya çıkar. Bir kimlik doğrulama kontrolü bir dosyada bulunurken, başka bir dosyadaki bir veritabanı sorgusu kimlik doğrulamanın zaten gerçekleştiğini varsayabilir. Yapay zeka, kodu dosya dosya veya fonksiyon fonksiyon oluştururken bu güvenlik bağlamını her zaman koruyamaz.
4. Geliştiriciler Yapay Zeka Çıktısına Çok Fazla Güveniyor
Bu insan faktörüdür. Kendine güvenli ve yetenekli görünen bir yapay zekadan kod geldiğinde, geliştiriciler genellikle genç bir ekip üyesinden gelen koda uygulayacakları dikkatli incelemeyi atlar. "Vibe kodlama" yaklaşımı bunu açıkça benimser: hızlı üret, hızlı gönder, sonra düzelt.
Sorun şu ki, güvenlik açıkları saldırganlar tarafından önce bulunduğunda genellikle "sonra düzeltilemez".
Yapay Zeka Tarafından Oluşturulan API'lardaki En Yaygın 7 Güvenlik Açığı
Yapay zeka tarafından oluşturulan kod depolarının ve güvenlik denetimlerinin analizine göre, bu güvenlik açıkları en sık görülür:
1. Eksik veya Zayıf Giriş Doğrulama
Yapay zeka tarafından oluşturulan uç noktalar genellikle kullanıcı girdisini doğrudan, temizlemeden kabul eder:
// AI tarafından oluşturuldu: Enjeksiyona karşı savunmasız
app.post('/search', (req, res) => {
const query = req.body.searchTerm;
db.query(`SELECT * FROM products WHERE name LIKE '%${query}%'`);
});
Düzeltme, parametreli sorgular, giriş uzunluk limitleri ve karakter doğrulama gerektirir; yapay zekanın sıklıkla atladığı adımlar.
2. Bozuk Kimlik Doğrulama Akışları
Yaygın sorunlar şunları içerir:
- Jetonların httpOnly çerezler yerine localStorage'da saklanması
- Eksik jeton süresi dolumu
- Zayıf veya tahmin edilebilir oturum kimlikleri
- Oturum açma denemelerinde hız sınırlaması olmaması
- Süresi dolmayan parola sıfırlama jetonları
3. Aşırı Veri Maruziyeti
Yapay zeka, belirli alanları seçmek yerine genellikle tam veritabanı nesnelerini döndürme eğilimindedir:
// AI tarafından oluşturuldu: Hassas alanları döndürür
app.get('/user/:id', async (req, res) => {
const user = await User.findById(req.params.id);
res.json(user); // passwordHash, internalNotes, vb. içerir.
});
4. Eksik Yetkilendirme Kontrolleri
Yapay zeka, çalışan ancak istekte bulunan kullanıcının izni olup olmadığını doğrulamayı unutan uç noktalar oluşturur:
// AI tarafından oluşturuldu: Sahiplik doğrulaması yok
app.delete('/posts/:id', async (req, res) => {
await Post.deleteOne({ _id: req.params.id });
res.json({ success: true });
});
// Herhangi bir kimliği doğrulanmış kullanıcı herhangi bir gönderiyi silebilir
5. Güvensiz Bağımlılıklar
Yapay zeka, bilinen güvenlik açıklarını kontrol etmeden popüler paketleri sıklıkla önerir:
// AI, CVE'lere sahip güncel olmayan bir paket öneriyor
const jwt = require('jsonwebtoken'); // Sürüm belirtilmemiş
Açık sürüm sabitleme ve güvenlik açığı taraması olmadan, projeler ilk günden itibaren güvenlik borcunu miras alır.
6. Koda Gömülü Sırlar ve Kimlik Bilgileri
Bu, yapay zeka tarafından oluşturulan kodlarda şaşırtıcı derecede sık görülür:
// AI tarafından oluşturuldu: Kaynak kodunda sır
const stripe = require('stripe')('sk_live_abc123...');
Yapay zeka, örnekleme amacıyla koda gömülü anahtarların yaygın olduğu eğitimlerden ve örneklerden öğrenir.
7. Eksik Güvenlik Başlıkları
Yapay zeka tarafından oluşturulan Express, Flask veya Rails uygulamalarında tipik olarak şunlar eksiktir:
- CORS yapılandırması (veya aşırı müsamahakar CORS)
- Content-Security-Policy başlıkları
- X-Frame-Options
- Hız sınırlayıcı ara yazılım
- HTTPS zorunluluğu
Yapay Zeka Destekli Projeler İçin Bir Güvenlik Testi Kontrol Listesi
Yapay zeka tarafından oluşturulmuş kod içeren herhangi bir projeyi dağıtmadan önce bu kontrol listesini uygulayın:
Kimlik Doğrulama ve Yetkilendirme
- [ ] Tüm uç noktalar gerektiğinde kimlik doğrulama gerektirir
- [ ] Yetkilendirme kontrolleri, kullanıcının istenen kaynaklara sahip olduğunu/erişebildiğini doğrular
- [ ] Parolalar bcrypt, Argon2 veya benzeri bir yöntemle (maliyet faktörü ≥10) hashlenir
- [ ] Oturum jetonları kriptografik olarak rastgeledir ve süreleri dolar
- [ ] Başarısız oturum açma girişimleri hız sınırlamalıdır
- [ ] Parola sıfırlama jetonları tek kullanımlık ve süre sınırlıdır
- [ ] JWT'ler süre sonu içerir ve sunucu tarafında doğrulanır
Giriş Doğrulama
- [ ] Tüm kullanıcı girişi tür, uzunluk ve format açısından doğrulanır
- [ ] Veritabanı sorguları parametreli ifadeler kullanır
- [ ] Dosya yüklemeleri türü, boyutu doğrular ve kötü amaçlı yazılım taraması yapar
- [ ] URL'ler ve yönlendirmeler izin listelerine göre doğrulanır
- [ ] JSON/XML ayrıştırıcılarında boyut limitleri yapılandırılmıştır
Veri Koruma
- [ ] API yanıtları yalnızca gerekli alanları döndürür
- [ ] Hassas veriler depoda şifrelenir
- [ ] Veritabanı kimlik bilgileri kod yerine ortam değişkenlerini kullanır
- [ ] Sırlar uygun sır yönetim sistemlerinde saklanır
- [ ] Loglar parola, jeton veya PII içermez
Taşıma Güvenliği
- [ ] Üretimde HTTPS zorunludur
- [ ] HSTS başlıkları yapılandırılmıştır
- [ ] TLS 1.2+ gereklidir
- [ ] Güvenli çerezler Secure ve HttpOnly bayraklarına sahiptir
API'ye Özgü Güvenlik
- [ ] Hız sınırlama kötüye kullanımı önler
- [ ] CORS,
*yerine belirli kaynaklar için yapılandırılmıştır - [ ] API sürümleme, güvensiz uç noktaların kullanımdan kaldırılmasına izin verir
- [ ] Hata mesajları dahili ayrıntıları sızdırmaz
- [ ] GraphQL sorgu derinliği/karmaşıklık limitlerine sahiptir
Bağımlılıklar
- [ ] Tüm paketlerin belirli sürüm sabitlemeleri vardır
- [ ]
npm audit/pip check/ benzeri hiçbir kritik güvenlik açığı göstermez - [ ] Otomatik bağımlılık güncellemeleri yapılandırılmıştır
- [ ] Hiçbir paket terk edilmiş veya bakımı yapılmayan değildir
Dağıtımdan Önce API Güvenliğinizi Nasıl Test Edersiniz?
Manuel inceleme yeterli değildir. Yapay zekanın neden olduğu ve sizin incelemenizde gözden kaçan güvenlik açıklarını yakalayan sistematik testlere ihtiyacınız var.
Adım 1: Otomatik Güvenlik Taraması
Yaygın güvenlik açıklarını bulmak için tasarlanmış araçları kullanın:
# Node.js projeleri için
npm audit --audit-level=high
# Python projeleri için
pip-audit
# Konteyner görüntüleri için
trivy image your-app:latest
Adım 2: API Güvenlik Testi
İşte Apidog'un vazgeçilmez hale geldiği yer burasıdır. Her uç noktayı manuel olarak test etmek yerine şunları yapabilirsiniz:
- API spesifikasyonunuzu içe aktarın (OpenAPI/Swagger) veya Apidog'un uç noktaları keşfetmesine izin verin

2. Şunları kontrol eden güvenlik test senaryoları oluşturun:
- Eksik kimlik doğrulama 401 döndürür
- Yanlış kullanıcının kaynaklara erişmesi 403 döndürür
- Geçersiz giriş, güvenli hata mesajlarıyla 400 döndürür
- SQL enjeksiyonu denemeleri engellenir
- Her dağıtımdan önce otomatik test paketlerini çalıştırın
- Regresyonları yakalamak için CI/CD ile entegre edin
Apidog'un görsel test oluşturucusu ile güvenlik testlerini sıfırdan yazmanıza gerek kalmaz. "Yanıt 'password' içermemelidir" veya "kimlik doğrulama jetonu olmayan istek 401 döndürmelidir" gibi iddialar tanımlayın ve bunları tüm API yüzeyinizde çalıştırın.
Adım 3: Sızma Testi Simülasyonu
API'nizi bir saldırganın yapacağı gibi test edin:
- Uç noktaları numaralandırın - Gizli veya belgelenmemiş rotalar var mı?
- Kimlik doğrulama atlatmayı test edin - Geçerli jetonlar olmadan korumalı rotalara erişebilir misiniz?
- Enjeksiyon saldırılarını deneyin - Tüm giriş alanlarında SQL, NoSQL, komut enjeksiyonu
- IDOR kontrolü - A kullanıcısı, kimlikleri değiştirerek B kullanıcısının verilerine erişebilir mi?
- Hız limitlerini kötüye kullanın - Saniyede 1000 istekte ne olur?
Apidog'un test senaryoları, bu saldırıları sistematik olarak simüle etmenize olanak tanır ve dağıtımlar arası karşılaştırma için sonuçları kaydeder.
Adım 4: Güvenlik Başlıkları Denetimi
Yanıt başlıklarınızı kontrol edin:
curl -I https://api.adresiniz.com/ucnokta
Şunlara dikkat edin:
Strict-Transport-SecurityX-Content-Type-Options: nosniffX-Frame-Options: DENYContent-Security-Policy
Yapay Zeka Araçlarıyla Önce Güvenlik Odaklı Bir İş Akışı Oluşturma
Yapay zeka kodlama asistanları ortadan kalkmayacak; daha da güçlü hale geliyorlar. Çözüm onlardan kaçınmak değil, güvenliği iş akışınıza dahil etmektir.
Güvenlik İçin İstemi Mühendisliği
Yapay zekayı kod oluşturmak için kullanırken, güvenlik hususlarını açıkça talep edin:
Şunun yerine:
"Bir kullanıcı kayıt uç noktası oluştur"
Şunu sorun:
"Giriş doğrulama, maliyet faktörü 12 olan bcrypt kullanarak parola hashleme, zamanlama saldırılarına karşı koruma, hız sınırlaması ve e-postaların mevcut olup olmadığı hakkında bilgi sızdırmayan uygun hata işleme ile bir kullanıcı kayıt uç noktası oluştur"
Zorunlu İnceleme Aşamaları
Yapay zeka tarafından oluşturulan kodun geçmesi gereken bir iş akışı oluşturun:
- İnsan incelemesi - Bu kod istediğimizi yapıyor mu?
- Otomatik linting - Güvenlik eklentileriyle ESLint, Pylint
- Güvenlik taraması - Snyk, npm audit, OWASP bağımlılık kontrolü
- API testi - Güvenlik gereksinimlerini doğrulayan Apidog test paketleri
- Hazırlık dağıtımı - Entegrasyon testlerini gerçekçi ortamda çalıştırın
Yapay Zeka Kodunu Güvenilmeyen Giriş Gibi Davranın
Bu, ana zihniyet değişikliğidir. Yapay zekadan gelen kod, bilinmeyen bir katkıda bulunandan gelen kodla aynı şüphecilikle ele alınmalıdır. Rastgele bir çekme isteğinden gelen kodu incelemeden dağıtır mıydınız? Aynı standardı yapay zeka tarafından oluşturulan koda uygulayın.
Sonuç
Dağıtımdan bir hafta sonra gerçekleşen sunucu saldırısı, gelişmiş saldırganlar veya sıfır gün açıklarından kaynaklanmadı. Yapay zeka araçlarının rutin olarak yol açtığı ve "vibe kodlama" pratiklerinin rutin olarak gözden kaçırdığı yaygın güvenlik açıklarından kaynaklandı.
Yapay zeka kodu üretimi güçlüdür. Gelişimi hızlandırır ve karmaşık görevleri erişilebilir kılar. Ancak sistematik güvenlik testi olmadan, bu hız bir yükümlülük haline gelir.
Apidog gibi araçlar, API yüzeyinizdeki güvenlik gereksinimlerini tanımlamanıza ve otomatikleştirmenize olanak tanıyarak güvenlik testini pratik hale getirir. Amaç, yapay zeka destekli geliştirmeyi yavaşlatmak değil, yapay zeka tarafından oluşturulan kodun gerektirdiği doğrulama katmanını oluşturmaktır.
Sunucunuz, kodun bir insan tarafından mı yoksa bir yapay zeka tarafından mı yazıldığını önemsemez. Yalnızca o kodun güvenli olup olmadığını önemser.
