// docs / security guides / ai-code scanner
AI-üretilmiş kod güvenlik taraması: vibe-coded uygulamalar için DAST
Cursor, Claude Code, Lovable, Bolt, v0, Replit ve Windsurf ile oluşturulan uygulamalar önceki nesil web yazılımlarından daha hızlı gönderilir ve öngörülebilir bir dizi güvenlik açıklarıyla birlikte gönderilir. Bu sayfada, AI-oluşturulan uygulamaların neden geleneksel sızma testi araçlarından farklı taramaya ihtiyaç duyduğu, hangi güvenlik açığı sınıflarının aşırı temsil edildiği, kod tabanı yarı makine tarafından oluşturulduğu zaman DAST'nın SAST'den nasıl farklı olduğu ve bu iş yükü için oluşturulmuş bir tarayıcıda nelere bakılması gerektiği açıklanmaktadır.
AI-oluşturulan kodun neden farklı güvenlik taramasına ihtiyacı var?
AI kodlama araçları, geniş ölçekte açık kaynak kod depolarında eğitilir. Bu eğitim verileri make it secure yerine make it work yönünde eğriliyor. Bundan birkaç yapısal model çıkar:
- Autocomplete bias. En yakın eşleşen içe aktarma kazanır. Bir dosyaya
service_roleanahtarını kullanan bir Supabase pasajını yapıştırmak, bu anahtarın bir sonraki otomatik tamamlama önerisi olmasını sağlar; hatta hiçbir zaman ait olmadığı istemci tarafı React bileşenlerinde bile. - No long-term context. Bir LLM'nin, son RLS bypass'ınıza veya ekibinizin ölüm sonrası olaya ilişkin hiçbir anısı yoktur. Oluşturulan her dosya yenidir ve genellikle insanların dosyalar arasında taşıyacağı savunma kalıpları eksiktir.
- Speed as the rewarded metric. Kullanıcılar hızı övüyor; LLM eğitim bunu güçlendirir. Gecikme geri bildirim sinyallerinde "En hızlı Next.js kimlik doğrulamasını oluşturun", "en güvenli Next.js kimlik doğrulamasını oluşturun".
- Training data gaps. Eski kod tabanları eğitim verilerine hakimdir ve modern güvenlik varsayılanlarından önce gelir (katı CSP,
SameSite=Lax, HSTS, RLS). Oluşturulan kod, 2019'da normal olan ancak bugün güvensiz olan kalıpları yansıtıyor. - Implicit platform trust. Cursor bir Vercel uygulaması oluşturduğunda, Vercel'nin varsayılanlarının güvenli olduğunu varsayar. Bunlardan bazıları (auto-HTTPS, imzalı çerezlerdir). Birçoğu öyle değil (varsayılan olarak CSP yok, izin veren CORS, varsayılan Next.js hata ayıklama yolları).
Titreşim kodlu uygulamalarda aşırı temsil edilen on güvenlik açığı sınıfı
AI-oluşturulan uygulamaların binlerce taramasında, aynı bulma sınıfları orantısız bir şekilde ortaya çıkıyor:
- Bir istemci paketine taahhüt edilen Exposed Supabase service-role keys.
service_roleJWT (eyJile başlar), projedeki tüm RLS politikalarını atlar. Cursor sınırın yanlış tarafında otomatik olarak tamamlar; Anahtar/_next/static/...ile gönderilir. - Missing Row-Level Security (RLS). Model
CREATE TABLE public.items'yi görür ve RLS'yi etkinleştirmeden devam eder. Anonim kullanıcılar daha sonra genel anonim anahtar aracılığıyla herhangi bir satırı okuyabilir veya yazabilir. Bkz. baas.supabase-rls. - Open Firebase / Firestore rules. Oluşturulan kural dosyaları sıklıkla
allow read, write: if true;şeklinde okunur veya kurallar dosyasını tamamen atlar. Varsayılan test modu kurallarının geçerliliği 30 gün sonra sona erer ve veritabanını kilitler, ancak bunu yalnızca geliştiricinin fark etmesi durumunda yapar. - Hardcoded API keys in bundles. Stripe canlı anahtarlar, Antropik
sk-ant-*, OpenAIsk-*, GoogleAIza*ve AWSAKIA*anahtarları, env-var disiplini sona erdiğinde JS yüklerinde satır içi hale getirilir. secrets.browser-storage bunları oluşturulan sayfa düzeyinde işaretler. - Missing Content Security Policy.
Content-Security-Policyyanıt başlığının olmaması, her satır içi komut dosyasının XSS tam hesap devralımına bir tıklama uzakta olduğu anlamına gelir. CSP soyuttur; codegen rutin olarak bunu atlar. headers.security-headers, dağıtım platformuna özel düzeltme kılavuzuyla boşluğu bildirir. - Next.js middleware misplacement.
src/düzeniyle, Next.js yalnızcasrc/middleware.ts'yi alır — kök düzeyindekimiddleware.tssessizce göz ardı edilir. Kimlik doğrulama hâlâ çalışıyor gibi görünüyor çünkü sayfalarrequireAuth()'yi çağırıyor ancak başlıklar, CSP ve hız sınırları geçerli değil. - IDOR via unsigned IDs. Oluşturulan
GET /api/items/[id]işleyicileri yol parametresine güvenir ve hiçbir zaman sahipliği doğrulamaz. Tamsayı veya UUID boşluğunda yürümek, her kiracının verilerini açığa çıkarır. - Broken auth flows.
expires_atiçermeyen Magic-link belirteçleri;audveexp'yi atlayan JWT doğrulaması; sunucu tarafıgetUser()yerine istemci tarafıgetSession()çağrıları (doğrulanmamış bir çerez okuyan). - Debug endpoints in production. Oluşturulan
/api/debug,/api/health,/api/__nextjs_original-stack-frameveya/.next/tracedahili sızıntıları yönlendirir. discovery.platform-vercel, SPA geri dönüşlerinde hatalı pozitif sonuçları önlemek için bunları içerik doğrulamayla araştırır. - Plaintext sensitive fields. Parolalar, API anahtarları ve PII, geçiş
pgcrypto'ye veya harici bir kasaya ulaşmadığından Postgres'te düz metin olarak depolandı.
DAST vs SAST: neden her ikisi de AI-oluşturulan kod için önemlidir?
Statik analiz (SAST) ve dinamik analiz (DAST) tamamlayıcıdır, birbirinin yerine geçmez. Bölünme, AI-oluşturulan kod için elle yazılan koddan daha önemlidir.
SAST diskteki kaynak kodunu okur. Derleme çalıştırılmadan önce kaynak dosyalardaki sırları, tehlikeli işlev çağrılarını ve riskli kalıpları yakalar. Çalışma zamanı yapılandırmasını, dağıtılan ortam değişkenlerini veya bir paketleyicinin kodunuzu nasıl dönüştürdüğünü göremez.
DAST konuşlandırılan uygulamaya bir kullanıcı gibi ulaşır. Gönderilen yanıtları görür, üretim paketine karşı çalışır ve repo ile dağıtım arasındaki yapılandırma sapmalarını yakalar. Aktarılan JavaScript'te SAST'nin derleme sırasında bir process.env atamasıyla girildiği için hiç görmediği sabit kodlu anahtarları bulur.
For AI-generated code, DAST is essential çünkü gönderilenler modelin yazdığından farklı. Paketleme, ağaç sallama, aktarma ve ortam değişkenli iç astarlama işlemlerinin tümü yeni yüzeyler yaratır. Kaynaktaki SAST, pakete yerleştirilmiş gizli dizileri tamamen gözden kaçırabilir. DAST her iki katmanı da yakalar. Olgun bir işlem hattı SAST'yi CI ve DAST içinde dağıtılan önizlemeye karşı çalıştırır; bu, FixVibe modelidir.
Bir AI-kod tarayıcısında nelere dikkat edilmelidir?
Genel amaçlı DAST tarayıcıların çoğu (Burp Suite, OWASP ZAP, Nessus) monolitik uygulamalar ve geleneksel kimlik doğrulama akışları için tasarlanmıştır. Bir Vercel + Supabase + Stripe AI-oluşturulan uygulamanın taranması için gerekenler:
- BaaS coverage. Real, Supabase RLS, Firebase / Firestore kurallarına, Clerk yapılandırmasına, AWS Amplify'a ve JWT'ye karşı bu hizmetlerin yaydığı şekilleri kontrol eder. Genel OWASP kuralları neyi işaretleyeceğini bilmiyor.
- JS bundle inspection. API-anahtar biçimleri, imzalı belirteçler ve sağlayıcıya özel modeller için ayarlanmış normal ifade (Stripe
sk_live_, Antropiksk-ant-, Supabase JWTseyJ'den itibaren). Genel entropi buluşsal yöntemleri çok fazla yanlış pozitif sonuç verir. - Passive + active split. Pasif kontroller (başlıklar, çerezler, sırlar, BaaS yapılandırma, DNS) herhangi bir URL'ye karşı güvenli bir şekilde çalışır. Aktif problar (SQLi, XSS, SSTI, IDOR yürüme), saldırı tarzı yükleri ateşledikleri için bir yetkilendirme sınırı gerektirir.
- Framework awareness. Next.js Uygulama Yönlendiricisini ve Sayfa Yönlendiricisini tanıma, Vite SPA yeniden yazma, Vercel dağıtım koruması, Cloudflare Sayfa yönlendirme. Vite SPA geri dönüşünü gerçek
/_next/build-manifest.json'den ayırt etmeyen bir tarayıcı gürültü üretir. - Rate-limit safety. Tarama başına sınırlı istek bütçeleri, WAF-karışık yanlış pozitifleri önlemek için temel yanıt karşılaştırması, battaniye-403 dağıtımlarını tespit etmek için rastgele yol araştırması temel çizgileri.
- Authorization gating for intrusive payloads. Sahibi olmadığınız bir etki alanına SQLi veya OS-komut yüklerini göndermek çoğu yargı bölgesinde yasa dışıdır. Gerçek bir tarayıcı, bir hedefe karşı aktif modu çalıştırmanıza izin vermeden önce DNS veya HTTP-dosya sahipliğinin doğrulanmasını gerektirir.
FixVibe'nin yaklaşımı: kanıta dayalı tarama, düşük hatalı pozitif yük
FixVibe is a DAST built specifically for AI-generated web apps. The passive phase runs 200+ checks on the rendered page (headers, CSP, cookies, leaked secrets, BaaS misconfiguration, tech fingerprinting, DNS, attack-surface discovery). The active phase adds payload-firing probes (SQLi, XSS, SSTI, CORS, redirects, IDOR walking, CSRF, account enumeration, blind-SSRF) gated behind verified-domain ownership. Repo scans add code-phase checks against connected GitHub repositories. Every finding includes evidence, a CWE link, a remediation recipe, and either a coding-agent prompt or operator steps depending on who can actually apply the fix. The scan engine is open in the changelog — every new check, accuracy improvement, and false-positive fix is logged publicly.
FixVibe Burp Suite, ZAP ve Nessus'a karşı: her araç kazandığında
Tek bir araç her iş akışını kapsamaz. FixVibe'nin nereye uyduğunun dürüst çerçevesi:
| Aspect | Geğirme Süiti / OWASP ZAP | Nessus / Qualys | FixVibe |
|---|---|---|---|
| Setup | Manuel proxy + tarayıcı yapılandırması | Ağ aracısı kurulumu | Bir URL yapıştırın, oturum açın |
| İlk bulma zamanı | Dakikalardan saatlere | Saatlerden günlere | Saniyelerden dakikalara |
| BaaS yapılandırma kontrolleri | Birinci sınıf destek yok | No | Supabase RLS, Firebase kurallar, Katip, JWT şekiller |
| JS paket gizli tespiti | Genel entropi normal ifadesi | No | Provider'a özgü desenler + tarayıcı depolama taraması |
| AI-kodlanmış çerçeve farkındalığı | Unaware | Unaware | Next.js, Vite, Vercel, Cloudflare Sayfalar, Supabase |
| Aktif tarama yetkilendirme geçişi | Manuel kapsam disiplini | Manuel kapsam disiplini | Gerekli: DNS veya HTTP-dosya alanı doğrulaması |
| Birinci sınıf API + MCP | API mevcut | API mevcut | Claude için REST + MCP sunucusu / Cursor / Continue |
Araçların birbirini tamamladığı yer
- Start with FixVibe passive herhangi bir dağıtım önizlemesine karşı 30 saniyelik ücretsiz bir temel olarak. Hiçbir şey ortaya çıkmazsa, hızlı bir güven sinyaliniz var demektir.
- Kendi altyapınıza karşı tam aktif kapsama (SQLi/SSTI/IDOR/etc.) istediğinizde doğrulanmış bir alanda Move to FixVibe active.
- CI içindeki kaynak kodunda Layer SAST (Semgrep, CodeQL, Snyk). SAST çalışma zamanının göremediğini yakalar; kod yollarındaki dağıtıma asla ulaşmayan riskli kalıplar.
- Reach for Burp Suite özel saldırı zincirlerine ihtiyaç duyduğunuzda (belirli kimlik doğrulama atlamaları, karmaşık IDOR senaryoları, iş mantığı kusurları). Burp mevcut en derin manuel çalışma tezgahıdır; FixVibe en hızlı otomatikleştirilmiş temeldir.
Sonraki adımlar
44 öğelik sevkıyat öncesi denetim için Continue Vibe coding security checklist ile veya kod parçacıklarıyla adım adım sağlamlaştırma için How to secure an app built with AI coding tools'ye geçin.
