FixVibe

// docs / security guides / ai-code scanner

AI-जनरेटेड कोड सुरक्षा स्कैनिंग: vibe-coded ऐप्स के लिए DAST

Cursor, Claude Code, Lovable, Bolt, v0, रेप्लिट, और Windsurf के साथ निर्मित ऐप्स वेब सॉफ़्टवेयर की किसी भी पिछली पीढ़ी की तुलना में तेज़ी से शिप होते हैं - और वे सुरक्षा अंतराल के पूर्वानुमानित सेट के साथ शिप होते हैं। यह पृष्ठ बताता है कि क्यों AI- जेनरेट किए गए ऐप्स को पारंपरिक पेंटेस्ट टूल की तुलना में अलग स्कैनिंग की आवश्यकता होती है, जो भेद्यता वर्ग अधिक प्रतिनिधित्व करते हैं, DAST SAST से कैसे भिन्न होता है जब कोडबेस आधा-मशीन-जनरेट होता है, और इस वर्कलोड के लिए बनाए गए स्कैनर में क्या देखना है।

AI- जेनरेटेड कोड को अलग सुरक्षा स्कैनिंग की आवश्यकता क्यों है

AI कोडिंग टूल को बड़े पैमाने पर ओपन-सोर्स रिपॉजिटरी पर प्रशिक्षित किया जाता है। वह प्रशिक्षण डेटा make it secure से अधिक make it work की ओर झुकता है। कुछ संरचनात्मक पैटर्न उससे अनुसरण करते हैं:

  • Autocomplete bias. निकटतम मिलान आयात जीतता है। एक फ़ाइल में service_role कुंजी का उपयोग करने वाले Supabase स्निपेट को चिपकाने से वह कुंजी अगले में स्वत: पूर्ण सुझाव बन जाती है - यहां तक ​​कि क्लाइंट-साइड रिएक्ट घटकों में भी जहां यह कभी नहीं था।
  • No long-term context. एक LLM को आपके पिछले RLS बाईपास या आपकी टीम की घटना के पोस्टमॉर्टम की कोई याद नहीं है। प्रत्येक जेनरेट की गई फ़ाइल ताज़ा होती है, जिसमें अक्सर रक्षात्मक पैटर्न गायब होते हैं जिन्हें मनुष्य फ़ाइलों में ले जाते हैं।
  • Speed as the rewarded metric. उपयोगकर्ता गति की प्रशंसा करते हैं; LLM प्रशिक्षण इसे पुष्ट करता है। विलंबता फीडबैक सिग्नल पर "सबसे तेज़ Next.js ऑथ उत्पन्न करें" बीट्स "सबसे सुरक्षित Next.js ऑथ उत्पन्न करें"।
  • Training data gaps. पुराने कोडबेस प्रशिक्षण डेटा पर हावी हैं और आधुनिक सुरक्षा डिफ़ॉल्ट (सख्त CSP, SameSite=Lax, HSTS, RLS) से पहले के हैं। जेनरेट किया गया कोड उन पैटर्न को प्रतिध्वनित करता है जो 2019 में सामान्य थे लेकिन आज असुरक्षित हैं।
  • Implicit platform trust. जब Cursor एक Vercel ऐप बनाता है तो यह मान लेता है कि Vercel के डिफ़ॉल्ट सुरक्षित हैं। कुछ (auto-HTTPS, हस्ताक्षरित कुकीज़) हैं। कई (डिफ़ॉल्ट रूप से कोई CSP, अनुमेय CORS, डिफ़ॉल्ट Next.js डिबग रूट नहीं हैं)।

वाइब-कोडित ऐप्स में दस भेद्यता वर्गों का अधिक प्रतिनिधित्व किया गया है

The same finding classes show up disproportionately in AI-generated apps:

  1. Exposed Supabase service-role keys. क्लाइंट बंडल के लिए प्रतिबद्ध service_role JWT (eyJ शुरू होता है) प्रोजेक्ट पर प्रत्येक RLS नीति को बायपास कर देता है। Cursor इसे सीमा के गलत तरफ स्वत: पूर्ण करता है; प्रमुख जहाज /_next/static/... में हैं।
  2. Missing Row-Level Security (RLS). मॉडल CREATE TABLE public.items देखता है और RLS को सक्षम किए बिना आगे बढ़ता है। अनाम उपयोगकर्ता सार्वजनिक एनोन कुंजी के माध्यम से किसी भी पंक्ति को पढ़ या लिख ​​सकते हैं। Supabase Row-Level Security देखें.
  3. Open Firebase / Firestore rules. Generated rules files often read allow read, write: if true; or skip the rules file entirely. Test-mode rules let anyone read and overwrite data until someone replaces them.
  4. Hardcoded API keys in bundles. Stripe लाइव कुंजियाँ, एंथ्रोपिक sk-ant-*, ओपनएआई sk-*, गूगल AIza*, और AWS AKIA* कुंजियाँ JS पेलोड में इनलाइन हो जाती हैं जब env-var अनुशासन समाप्त हो जाता है। Secrets in JavaScript Bundles उन्हें रेंडर-पेज स्तर पर ध्वजांकित करता है।
  5. Missing Content Security Policy. नहीं Content-Security-Policy प्रतिक्रिया शीर्षलेख का अर्थ है कि प्रत्येक इनलाइन-स्क्रिप्ट XSS पूर्ण खाता अधिग्रहण से एक क्लिक दूर है। CSP सार है; कोडजेन नियमित रूप से इसे छोड़ देता है। HTTP Security Headers परिनियोजन-प्लेटफ़ॉर्म-विशिष्ट फ़िक्स मार्गदर्शन के साथ अंतर की रिपोर्ट करता है।
  6. Next.js middleware misplacement. src/ लेआउट के साथ, Next.js केवल src/middleware.ts को चुनता है - रूट-स्तर middleware.ts को चुपचाप अनदेखा कर दिया जाता है। प्रमाणीकरण अभी भी काम करता प्रतीत होता है क्योंकि पृष्ठ requireAuth() पर कॉल करते हैं, लेकिन हेडर, CSP, और दर सीमाएँ लागू नहीं होती हैं।
  7. IDOR via unsigned IDs. जेनरेटेड GET /api/items/[id] हैंडलर पथ पैरामीटर पर भरोसा करते हैं और कभी भी स्वामित्व को सत्यापित नहीं करते हैं। पूर्णांक या UUID स्पेस पर चलने से प्रत्येक किरायेदार का डेटा उजागर हो जाता है।
  8. Broken auth flows. बिना expires_at वाले मैजिक-लिंक टोकन; JWT सत्यापन जो aud और exp को छोड़ देता है; सर्वर-साइड getUser() के बजाय क्लाइंट-साइड getSession() कॉल (जो एक असत्यापित कुकी पढ़ता है)।
  9. Debug endpoints in production. Generated /api/debug, /api/health, /api/__nextjs_original-stack-frame, or /.next/trace routes leak internals. FixVibe reports them only with evidence that they really are exposed (Vercel-Specific Exposure).
  10. Plaintext sensitive fields. पासवर्ड, API कुंजियाँ, और PII को पोस्टग्रेज़ में सादे पाठ के रूप में संग्रहीत किया गया क्योंकि माइग्रेशन pgcrypto या किसी बाहरी वॉल्ट तक नहीं पहुंचा।

DAST बनाम SAST: AI- जेनरेटेड कोड के लिए दोनों क्यों मायने रखते हैं

स्थैतिक विश्लेषण (SAST) और गतिशील विश्लेषण (DAST) पूरक हैं, विकल्प नहीं। हस्तलिखित कोड की तुलना में AI-जनरेटेड कोड के लिए विभाजन अधिक मायने रखता है।

SAST डिस्क पर स्रोत कोड पढ़ता है। यह बिल्ड रन से पहले स्रोत फ़ाइलों, खतरनाक फ़ंक्शन कॉल और जोखिम भरे पैटर्न में रहस्यों को पकड़ लेता है। यह रनटाइम कॉन्फ़िगरेशन, परिनियोजित पर्यावरण चर या किसी बंडलर ने आपके कोड को कैसे रूपांतरित किया, यह नहीं देख सकता।

DAST एक उपयोगकर्ता की तरह तैनात एप्लिकेशन को हिट करता है। यह भेजी गई प्रतिक्रियाओं को देखता है, उत्पादन बंडल के विरुद्ध चलता है, और रेपो और तैनाती के बीच कॉन्फ़िगरेशन बहाव को पकड़ता है। यह ट्रांसपिल्ड जावास्क्रिप्ट में हार्डकोडेड कुंजी ढूंढता है जिसे SAST ने कभी नहीं देखा क्योंकि वे बिल्ड समय पर process.env असाइनमेंट के माध्यम से दर्ज किए गए थे।

For AI-generated code, DAST is essential क्योंकि जो जहाज मॉडल ने लिखा है उससे अलग है। बंडलिंग, वृक्ष-हिलाना, वाष्पोत्सर्जन, और पर्यावरण-परिवर्तनीय इनलाइनिंग सभी नई सतहों का निर्माण करते हैं। SAST स्रोत पर बंडल-एम्बेडेड रहस्य पूरी तरह से छूट सकते हैं। DAST दोनों परतों को पकड़ता है। एक परिपक्व पाइपलाइन तैनात पूर्वावलोकन के विरुद्ध SAST में CI और DAST पर चलती है - यह FixVibe पैटर्न है।

AI-कोड स्कैनर में क्या देखना है

अधिकांश सामान्य-उद्देश्य वाले DAST स्कैनर (बर्प सुइट, OWASP ZAP, नेसस) मोनोलिथिक ऐप्स और पारंपरिक प्रमाणीकरण प्रवाह के लिए डिज़ाइन किए गए थे। Vercel + Supabase + Stripe AI- जेनरेटेड ऐप को स्कैन करने की आवश्यकता है:

  • BaaS coverage. Supabase RLS, Firebase / फायरस्टोर नियम, क्लर्क कॉन्फिगरेशन, AWS एम्प्लिफाई, और JWT उन सेवाओं द्वारा उत्सर्जित आकृतियों के विरुद्ध वास्तविक जांच। सामान्य OWASP नियम नहीं जानते कि क्या ध्वजांकित किया जाए।
  • JS bundle inspection. Recognising real API-key formats — Stripe sk_live_, Anthropic sk-ant-, Supabase service-role keys — and telling a secret key from a publishable one. Generic pattern matching throws too many false positives.
  • Passive + active split. निष्क्रिय जांच (हेडर, कुकीज़, रहस्य, BaaS कॉन्फ़िगरेशन, DNS) किसी भी URL के विरुद्ध सुरक्षित रूप से चलते हैं। सक्रिय जांच (SQLi, XSS, SSTI, IDOR वॉकिंग) को प्राधिकरण सीमा की आवश्यकता होती है क्योंकि वे आक्रमण-शैली पेलोड फायर करते हैं।
  • Framework awareness. Recognising Next.js App Router vs Pages Router, Vite SPA rewrites, Vercel deployment-protection, Cloudflare Pages routing. A scanner that doesn't understand how these platforms answer unknown paths generates noise.
  • Rate-limit safety. Bounded request budgets per scan, and findings that require positive evidence — a blanket 403 from a WAF is not proof a file exists.
  • Authorization gating for intrusive payloads. किसी ऐसे डोमेन पर SQLi या OS- कमांड पेलोड भेजना अधिकांश न्यायालयों में अवैध है। किसी लक्ष्य के विरुद्ध सक्रिय मोड चलाने से पहले एक वास्तविक स्कैनर को DNS या HTTP-फ़ाइल स्वामित्व सत्यापन की आवश्यकता होती है।

FixVibe का दृष्टिकोण: साक्ष्य-आधारित स्कैनिंग, कम गलत-सकारात्मक भार

FixVibe is a DAST built specifically for AI-generated web apps. The passive phase runs 230+ 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 बनाम बर्प सूट, ZAP, और नेसस: जब प्रत्येक उपकरण जीतता है

No single tool covers every workflow. For a sourced side-by-side of FixVibe, Burp Suite, ZAP, Snyk, Semgrep and Aikido, with a decision matrix, see choosing a security scanner for AI-built apps.

जहां उपकरण एक दूसरे के पूरक हैं

  • Start with FixVibe passive as a free baseline against any deploy preview — it usually finishes in under a minute. If nothing surfaces, you have a fast confidence signal.
  • सत्यापित डोमेन पर Move to FixVibe active जब आप अपने स्वयं के बुनियादी ढांचे के विरुद्ध पूर्ण सक्रिय कवरेज (SQLi/SSTI/IDOR/etc.) चाहते हैं।
  • CI में स्रोत कोड पर Layer SAST (सेमग्रेप, कोडक्यूएल, स्निक)। SAST वह पकड़ता है जिसे रनटाइम नहीं देख सकता - कोड पथों में जोखिम भरा पैटर्न जो कभी भी तैनाती तक नहीं पहुंचता है।
  • Reach for Burp Suite जब आपको कस्टम आक्रमण श्रृंखलाओं (विशिष्ट प्रमाणीकरण बाईपास, जटिल IDOR परिदृश्य, व्यवसाय-तर्क संबंधी खामियां) की आवश्यकता होती है। बर्प उपलब्ध सबसे गहरा मैनुअल कार्यक्षेत्र है; FixVibe सबसे तेज़ स्वचालित आधार रेखा है।

अगले चरण

51-आइटम प्री-शिप ऑडिट के लिए Vibe coding security checklist के साथ Continue, या कोड स्निपेट के साथ चरण-दर-चरण सख्त करने के लिए How to secure an app built with AI coding tools पर जाएं।

// scan your app

पढ़ना बंद करें। अपने ऐप की खामियाँ ढूँढना शुरू करें।

Drop in a URL — FixVibe runs every passive check from this guide plus the rest of its 230+ passive checks, usually in under a minute. Free, no install, no card.

  • Free टियर - 3 स्कैन/माह, कोई कार्ड नहीं।
  • किसी भी URL के विरुद्ध निष्क्रिय स्कैन - किसी डोमेन सत्यापन की आवश्यकता नहीं है।
  • Cursor, Claude Code, Lovable, Bolt, v0, रेप्लिट के लिए ट्यून किया गया।
  • Coding-agent prompts for code/config findings, plus operator steps for DNS/provider fixes.
मुफ़्त स्कैन चलाएँ →

साइन-अप की ज़रूरत नहीं

AI-जनरेटेड कोड सुरक्षा स्कैनिंग: vibe-coded ऐप्स के लिए DAST · FixVibe