FixVibe

// 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_role anahtarı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:

  1. Bir istemci paketine taahhüt edilen Exposed Supabase service-role keys. service_role JWT (eyJ ile 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.
  2. 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.
  3. 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.
  4. Hardcoded API keys in bundles. Stripe canlı anahtarlar, Antropik sk-ant-*, OpenAI sk-*, Google AIza* ve AWS AKIA* 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.
  5. Missing Content Security Policy. Content-Security-Policy yanı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.
  6. Next.js middleware misplacement. src/ düzeniyle, Next.js yalnızca src/middleware.ts'yi alır — kök düzeyindeki middleware.ts sessizce göz ardı edilir. Kimlik doğrulama hâlâ çalışıyor gibi görünüyor çünkü sayfalar requireAuth()'yi çağırıyor ancak başlıklar, CSP ve hız sınırları geçerli değil.
  7. 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.
  8. Broken auth flows. expires_at içermeyen Magic-link belirteçleri; aud ve exp'yi atlayan JWT doğrulaması; sunucu tarafı getUser() yerine istemci tarafı getSession() çağrıları (doğrulanmamış bir çerez okuyan).
  9. Debug endpoints in production. Oluşturulan /api/debug, /api/health, /api/__nextjs_original-stack-frame veya /.next/trace dahili 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.
  10. 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_, Antropik sk-ant-, Supabase JWTs eyJ'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:

AspectGeğirme Süiti / OWASP ZAPNessus / QualysFixVibe
SetupManuel proxy + tarayıcı yapılandırmasıAğ aracısı kurulumuBir URL yapıştırın, oturum açın
İlk bulma zamanıDakikalardan saatlereSaatlerden günlereSaniyelerden dakikalara
BaaS yapılandırma kontrolleriBirinci sınıf destek yokNoSupabase RLS, Firebase kurallar, Katip, JWT şekiller
JS paket gizli tespitiGenel entropi normal ifadesiNoProvider'a özgü desenler + tarayıcı depolama taraması
AI-kodlanmış çerçeve farkındalığıUnawareUnawareNext.js, Vite, Vercel, Cloudflare Sayfalar, Supabase
Aktif tarama yetkilendirme geçişiManuel kapsam disipliniManuel kapsam disipliniGerekli: DNS veya HTTP-dosya alanı doğrulaması
Birinci sınıf API + MCPAPI mevcutAPI mevcutClaude 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.

// scan your app

Okumayı bırak. Kendi uygulamandaki açıkları bulmaya başla.

Bir URL bırakın — FixVibe, bu kılavuzdaki tüm pasif kontrolü ve ayrıca 200'den fazla kişiyi bir dakikadan kısa sürede çalıştırır. Free, yükleme yok, kart yok.

  • Free katman — ayda 3 tarama, kart yok.
  • Herhangi bir URL'ye karşı pasif taramalar — etki alanı doğrulaması gerekmez.
  • Cursor, Claude Code, Lovable, Bolt, v0, Replit için ayarlandı.
  • Coding-agent prompts for code/config findings, plus operator steps for DNS/provider fixes.
AI-üretilmiş kod güvenlik taraması: vibe-coded uygulamalar için DAST — Docs · FixVibe