// 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 डिबग रूट नहीं हैं)।
वाइब-कोडित ऐप्स में दस भेद्यता वर्गों का अधिक प्रतिनिधित्व किया गया है
AI- जेनरेट किए गए ऐप्स के हजारों स्कैन में, समान खोज कक्षाएं असमान रूप से दिखाई देती हैं:
- Exposed Supabase service-role keys. क्लाइंट बंडल के लिए प्रतिबद्ध
service_roleJWT (eyJशुरू होता है) प्रोजेक्ट पर प्रत्येक RLS नीति को बायपास कर देता है। Cursor इसे सीमा के गलत तरफ स्वत: पूर्ण करता है; प्रमुख जहाज/_next/static/...में हैं। - Missing Row-Level Security (RLS). मॉडल
CREATE TABLE public.itemsदेखता है और RLS को सक्षम किए बिना आगे बढ़ता है। अनाम उपयोगकर्ता सार्वजनिक एनोन कुंजी के माध्यम से किसी भी पंक्ति को पढ़ या लिख सकते हैं। baas.supabase-rls देखें. - Open Firebase / Firestore rules. जेनरेट की गई नियम फ़ाइलें अक्सर
allow read, write: if true;पढ़ती हैं या नियम फ़ाइल को पूरी तरह छोड़ देती हैं। डिफ़ॉल्ट परीक्षण-मोड नियम 30 दिनों के बाद समाप्त हो जाते हैं और डेटाबेस को लॉक कर देते हैं, लेकिन केवल तभी जब डेवलपर ने ध्यान दिया हो। - Hardcoded API keys in bundles. Stripe लाइव कुंजियाँ, एंथ्रोपिक
sk-ant-*, ओपनएआईsk-*, गूगलAIza*, और AWSAKIA*कुंजियाँ JS पेलोड में इनलाइन हो जाती हैं जब env-var अनुशासन समाप्त हो जाता है। secrets.browser-storage उन्हें रेंडर-पेज स्तर पर ध्वजांकित करता है। - Missing Content Security Policy. नहीं
Content-Security-Policyप्रतिक्रिया शीर्षलेख का अर्थ है कि प्रत्येक इनलाइन-स्क्रिप्ट XSS पूर्ण खाता अधिग्रहण से एक क्लिक दूर है। CSP सार है; कोडजेन नियमित रूप से इसे छोड़ देता है। headers.security-headers परिनियोजन-प्लेटफ़ॉर्म-विशिष्ट फ़िक्स मार्गदर्शन के साथ अंतर की रिपोर्ट करता है। - Next.js middleware misplacement.
src/लेआउट के साथ, Next.js केवलsrc/middleware.tsको चुनता है - रूट-स्तरmiddleware.tsको चुपचाप अनदेखा कर दिया जाता है। प्रमाणीकरण अभी भी काम करता प्रतीत होता है क्योंकि पृष्ठrequireAuth()पर कॉल करते हैं, लेकिन हेडर, CSP, और दर सीमाएँ लागू नहीं होती हैं। - IDOR via unsigned IDs. जेनरेटेड
GET /api/items/[id]हैंडलर पथ पैरामीटर पर भरोसा करते हैं और कभी भी स्वामित्व को सत्यापित नहीं करते हैं। पूर्णांक या UUID स्पेस पर चलने से प्रत्येक किरायेदार का डेटा उजागर हो जाता है। - Broken auth flows. बिना
expires_atवाले मैजिक-लिंक टोकन; JWT सत्यापन जोaudऔरexpको छोड़ देता है; सर्वर-साइडgetUser()के बजाय क्लाइंट-साइडgetSession()कॉल (जो एक असत्यापित कुकी पढ़ता है)। - Debug endpoints in production. उत्पन्न
/api/debug,/api/health,/api/__nextjs_original-stack-frame, या/.next/traceमार्ग आंतरिक रिसाव। discovery.platform-vercel SPA फ़ॉलबैक पर गलत सकारात्मकता से बचने के लिए सामग्री सत्यापन के साथ उनकी जांच करता है। - 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. API-कुंजी प्रारूपों, हस्ताक्षरित-टोकन, और प्रदाता-विशिष्ट पैटर्न (Stripe
sk_live_, एंथ्रोपिकsk-ant-, Supabase JWTseyJसे शुरू होने वाले) के लिए ट्यून किया गया रेगेक्स। जेनेरिक एन्ट्रापी अनुमान बहुत अधिक गलत सकारात्मकताएँ प्रस्तुत करते हैं। - Passive + active split. निष्क्रिय जांच (हेडर, कुकीज़, रहस्य, BaaS कॉन्फ़िगरेशन, DNS) किसी भी URL के विरुद्ध सुरक्षित रूप से चलते हैं। सक्रिय जांच (SQLi, XSS, SSTI, IDOR वॉकिंग) को प्राधिकरण सीमा की आवश्यकता होती है क्योंकि वे आक्रमण-शैली पेलोड फायर करते हैं।
- Framework awareness. Next.js ऐप राउटर बनाम पेज राउटर को पहचानना, Vite SPA पुनः लिखना, Vercel परिनियोजन-सुरक्षा, Cloudflare पेज रूटिंग। एक स्कैनर जो Vite SPA फ़ॉलबैक को वास्तविक
/_next/build-manifest.jsonसे अलग नहीं करता है, शोर उत्पन्न करता है। - Rate-limit safety. प्रति स्कैन सीमित अनुरोध बजट, WAF-भ्रमित झूठी सकारात्मकताओं से बचने के लिए बेसलाइन-प्रतिक्रिया तुलना, ब्लैंकेट-403 तैनाती का पता लगाने के लिए यादृच्छिक पथ-जांच बेसलाइन।
- 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 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 बनाम बर्प सूट, ZAP, और नेसस: जब प्रत्येक उपकरण जीतता है
कोई भी एकल उपकरण प्रत्येक वर्कफ़्लो को कवर नहीं करता है। जहां FixVibe फिट बैठता है, उसकी ईमानदार फ़्रेमिंग:
| Aspect | बर्प सुइट / OWASP ZAP | नेसस/क्वालिस | FixVibe |
|---|---|---|---|
| Setup | मैनुअल प्रॉक्सी + ब्राउज़र कॉन्फ़िगरेशन | नेटवर्क एजेंट स्थापित करें | URL चिपकाएँ, साइन इन करें |
| पहली बार खोजने का समय | मिनटों से लेकर घंटों तक | घंटों से दिन तक | सेकंड से मिनट तक |
| BaaS कॉन्फिग जांच | कोई प्रथम श्रेणी समर्थन नहीं | No | Supabase RLS, Firebase नियम, क्लर्क, JWT आकार |
| JS बंडल गुप्त पहचान | जेनेरिक एन्ट्रापी रेगेक्स | No | Provider-विशिष्ट पैटर्न + ब्राउज़र संग्रहण स्कैन |
| AI-कोडित रूपरेखा जागरूकता | Unaware | Unaware | Next.js, वाइट, Vercel, Cloudflare पेज, Supabase |
| सक्रिय-स्कैन प्राधिकरण गेटिंग | मैनुअल स्कोप अनुशासन | मैनुअल स्कोप अनुशासन | आवश्यक: DNS या HTTP-फ़ाइल डोमेन सत्यापन |
| प्रथम श्रेणी API + MCP | API मौजूद है | API मौजूद है | REST + MCP क्लाउड के लिए सर्वर / Cursor / Continue |
जहां उपकरण एक दूसरे के पूरक हैं
- Start with FixVibe passive किसी भी परिनियोजन पूर्वावलोकन के विरुद्ध निःशुल्क 30-सेकंड की बेसलाइन के रूप में। यदि कुछ भी सामने नहीं आता है, तो आपके पास एक तेज़ आत्मविश्वास संकेत है।
- सत्यापित डोमेन पर Move to FixVibe active जब आप अपने स्वयं के बुनियादी ढांचे के विरुद्ध पूर्ण सक्रिय कवरेज (SQLi/SSTI/IDOR/etc.) चाहते हैं।
- CI में स्रोत कोड पर Layer SAST (सेमग्रेप, कोडक्यूएल, स्निक)। SAST वह पकड़ता है जिसे रनटाइम नहीं देख सकता - कोड पथों में जोखिम भरा पैटर्न जो कभी भी तैनाती तक नहीं पहुंचता है।
- Reach for Burp Suite जब आपको कस्टम आक्रमण श्रृंखलाओं (विशिष्ट प्रमाणीकरण बाईपास, जटिल IDOR परिदृश्य, व्यवसाय-तर्क संबंधी खामियां) की आवश्यकता होती है। बर्प उपलब्ध सबसे गहरा मैनुअल कार्यक्षेत्र है; FixVibe सबसे तेज़ स्वचालित आधार रेखा है।
अगले चरण
44-आइटम प्री-शिप ऑडिट के लिए Vibe coding security checklist के साथ Continue, या कोड स्निपेट के साथ चरण-दर-चरण सख्त करने के लिए How to secure an app built with AI coding tools पर जाएं।
