// docs / security guides / ai tooling analysis
AI कोडिंग टूल्स क्यों सुरक्षा खामियाँ छोड़ते हैं
Cursor, Claude Code, Lovable, Bolt, v0, और इसी तरह के AI कोडिंग टूल तेजी से शिप होते हैं और डेवलपर्स को बॉयलरप्लेट बिजीवर्क से मुक्त करते हैं। उनके पास सुरक्षा के चारों ओर संरचनात्मक ब्लाइंडस्पॉट भी हैं। यह किसी एक उपकरण की विफलता नहीं है - यह इस बात का उपोत्पाद है कि एलएलएम को कैसे प्रशिक्षित किया जाता है और उन्हें कैसे अनुकूलित किया जाता है। इन कमियों के मूल कारणों को समझना उन्हें बंद करने की दिशा में पहला कदम है।
AI-जेनरेटेड कोड सुरक्षा में भिन्न क्यों है?
AI कोडिंग टूल द्वारा उत्पन्न सुरक्षा अंतराल के संरचनात्मक कारण होते हैं। वे यादृच्छिक निरीक्षण नहीं हैं; वे प्रशिक्षण और अनुकूलन की पूर्वानुमानित कलाकृतियाँ हैं।
- Training data skews toward "make it work." ओपन-सोर्स रिपॉजिटरी और ट्यूटोरियल LLM प्रशिक्षण पर हावी हैं। माध्य OSS रेपो को किसी समस्या को हल करने के लिए लिखा गया था, न कि सुरक्षा को सख्त करने का एक उदाहरण बनने के लिए। एक LLM जंगल में कोड का वितरण सीखता है, सुरक्षित कोड का वितरण नहीं।
- Autocomplete is sticky. जब आप एक कोड स्निपेट पेस्ट करते हैं जो
service_roleकुंजी का उपयोग करता है, तो यह अगली फ़ाइल के लिए टेम्पलेट बन जाता है। Cursor का स्वत: पूर्ण इसे क्लाइंट घटक में सुझाएगा जहां यह कभी नहीं था। उपकरण वही कर रहा है जिसके लिए इसे अनुकूलित किया गया है (गति) - लेकिन यह सुरक्षा सीमा से अवगत नहीं है। - No long-term context or incident memory. एक मानव डेवलपर जिसने गायब WHERE खंड के साथ एक उत्पादन डेटाबेस को जला दिया, वह सबक वर्षों तक आगे बढ़ता है। एक LLM में कोई एपिसोडिक मेमोरी नहीं है। प्रत्येक फ़ाइल एक नई शुरुआत है. टूल आपके पिछले RLS बायपास या आपकी टीम की घटना के पोस्टमॉर्टम से नहीं सीखता है।
- Speed is the rewarded metric. डेवलपर्स इन उपकरणों को चुनते हैं क्योंकि वे तेजी से शिप होते हैं। विलंबता प्रतिक्रिया तत्काल और प्रत्यक्ष है। सुरक्षा प्रतिक्रिया अनुपस्थित या विलंबित है - जहाज के तीन सप्ताह बाद FixVibe स्कैन में एक भेद्यता पाई गई। LLM को वास्तविक समय में पुरस्कृत मीट्रिक मनुष्यों के लिए अनुकूलित किया गया था।
- Implicit trust in platform defaults. जब Cursor एक Vercel ऐप बनाता है, तो यह मान लिया जाता है कि Vercel के डिफ़ॉल्ट सख्त हो गए हैं। कुछ हैं: ऑटो-HTTPS, हस्ताक्षरित कुकीज़, डीडीओएस सुरक्षा। अन्य नहीं हैं: डिफ़ॉल्ट रूप से कोई CSP नहीं, कोई HSTS नहीं, अनुमेय CORS। जेनरेट किया गया कोड प्लेटफ़ॉर्म मान्यताओं को प्राप्त करता है जो हमेशा उचित नहीं होती हैं।
गैप 1: क्लाइंट बंडलों में रहस्य
सेवा-भूमिका API कुंजियाँ, OAuth टोकन, और निजी कुंजियाँ ब्राउज़र पर भेजे गए जावास्क्रिप्ट बंडलों में समाप्त होती हैं। FixVibe इन्हें secrets.browser-storage और secrets.bundle-leak निष्कर्षों के रूप में चिह्नित करें। कुंजियाँ स्रोत मानचित्रों, मिनीफ़ाइड कोड, या प्लेनटेक्स्ट JS में खोजने योग्य हैं।
Why it happens: Cursor एक Supabase स्निपेट चिपकाने से जो क्लाइंट को सेवा भूमिका के साथ प्रारंभ करता है इसका मतलब है कि कोड अब स्वतः पूर्ण में है। एक उत्पन्न रिएक्ट घटक "डेटाबेस से सभी आइटम प्राप्त करें" मांगता है और Cursor सेवा-क्लाइंट आयात का सुझाव देता है। सर्वर-ओनली और क्लाइंट-साइड कोड के बीच की सीमा LLM के लिए सार है।
Fix: पर्यावरण चर में स्टोर रहस्यों को केवल सार्वजनिक कुंजियों के लिए NEXT_PUBLIC_ ध्वजांकित किया गया है। सेवा कुंजियाँ, निजी API कुंजियाँ, और हस्ताक्षर रहस्य import 'server-only' के साथ src/lib/secrets.ts में रहने चाहिए। संवेदनशील सेवाओं को कॉल करने के लिए सर्वर क्रियाओं या API मार्गों का उपयोग करें, क्लाइंट घटकों का कभी नहीं।
अंतराल 2: पंक्ति-स्तरीय सुरक्षा का अभाव या अपूर्ण होना
Supabase तालिकाएँ RLS सक्षम किए बिना बनाई जाती हैं। Firebase फायरस्टोर नियम कभी लिखे नहीं जाते या अनुमेय परीक्षण मोड में छोड़ दिए जाते हैं। Anon उपयोगकर्ता प्रत्येक पंक्ति को पढ़ और लिख सकते हैं। FixVibe इसे baas.supabase-rls और baas.firebase-rules के रूप में चिह्नित करें।
Why it happens: RLS एक पोस्टग्रेस-विशिष्ट सुविधा है। रेल्स, डीजेंगो, लारवेल और एक्सप्रेस पर प्रशिक्षित एलएलएम एप्लिकेशन-लेयर ऑथ चेक को मानक के रूप में देखते हैं। RLS को Supabase पर सक्षम करने के लिए स्पष्ट ALTER TABLE कथनों और नीति परिभाषाओं की आवश्यकता होती है - प्रशिक्षण डेटा में पैटर्न कम आम हैं।
Fix: Supabase के लिए, प्रत्येक टेबल पर ALTER TABLE public.table_name ENABLE ROW LEVEL SECURITY; ALTER TABLE public.table_name FORCE ROW LEVEL SECURITY; के साथ RLS लागू करें। लेखक नीतियां जो पंक्तियों को प्रमाणित उपयोगकर्ता या संगठन तक सीमित करती हैं। Firebase के लिए, नियमों को डिफ़ॉल्ट परीक्षण मोड के रूप में कभी न छोड़ें; प्रमाणित उपयोगकर्ता के दायरे में स्पष्ट नियम लिखें।
अंतराल 3: प्रामाणिक सीमा संबंधी भ्रम
सत्रों को getSession() (जो एक असत्यापित कुकी पढ़ता है) का उपयोग करके क्लाइंट-साइड मान्य किया जाता है। जादुई लिंक की कोई समाप्ति तिथि नहीं होती. JWTs aud और exp चेक छोड़ें। पासवर्ड रीसेट प्रतिवर्ती हैं. FixVibe इन्हें active.auth-flow निष्कर्षों के रूप में चिह्नित करें।
Why it happens: Supabase ऑथ, क्लर्क और समान सेवाएँ सत्र स्थिति को संभालती हैं, लेकिन उनके APIs में सुरक्षित और असुरक्षित मोड हैं। getSession() सुविधाजनक है लेकिन असत्यापित है। LLM प्रशिक्षण डेटा में सुरक्षित सुविधा की तुलना में API सुविधा को अधिक बार देखता है। सर्वर-साइड टोकन सत्यापन सारगर्भित है और इसके लिए स्पष्ट HTTP हेडर या मिडलवेयर इनवोकेशन की आवश्यकता होती है।
Fix: हमेशा supabase.auth.getUser() सर्वर-साइड का उपयोग करें। संरक्षित मार्गों पर कभी भी getSession() पर भरोसा न करें। प्रत्येक अनुरोध पर JWTs को मान्य करें, exp, aud, और हस्ताक्षर की जाँच करें। एक्सेस टोकन के लिए टोकन समाप्ति को 1 घंटे पर सेट करें और लंबे सत्रों के लिए ताज़ा टोकन का उपयोग करें।
गैप 4: HTTP सुरक्षा हेडर गुम
नहीं Content-Security-Policy, नहीं X-Frame-Options, नहीं Strict-Transport-Security, नहीं X-Content-Type-Options। FixVibe इसे headers.security-headers निष्कर्षों के रूप में चिह्नित करें।
Why it happens: सुरक्षा शीर्षलेख परिनियोजन-प्लेटफ़ॉर्म-विशिष्ट हैं। Cursor Next.js के लिए कोड उत्पन्न करता है; CSP सेटिंग के लिए next.config.js ट्वीक, मिडलवेयर या vercel.json ओवरराइड की आवश्यकता होती है। ये डिफ़ॉल्ट प्रोजेक्ट मचान में नहीं हैं। "हेडर DevOps के लिए हैं" का मानसिक मॉडल अभी भी आम है।
Fix: CSP को next.config.js या मिडलवेयर में बिना समर्थन के सेट करें: Content-Security-Policy: default-src 'self'; script-src 'self' 'nonce-...'; ...। HSTS: Strict-Transport-Security: max-age=31536000; includeSubDomains जोड़ें। स्थिर होस्ट के लिए Vercel के vercel.json हेडर या मिडलवेयर का उपयोग करें।
अंतराल 5: तृतीय-पक्ष एकीकरण गलत कॉन्फ़िगरेशन
Stripe कुंजियाँ, सेंट्री टोकन, एंथ्रोपिक API कुंजियाँ हार्डकोडेड हैं या रिपोज़ के लिए प्रतिबद्ध हैं। एनालिटिक्स की उत्पत्ति अति-अनुमोदनात्मक है। एनपीएम निर्भरताएँ पुरानी हो चुकी हैं। FixVibe स्कैन इन्हें discovery.tech-fingerprint और हमारे रहस्य जांचकर्ताओं के अंतर्गत निष्कर्षों के रूप में चिह्नित करता है।
Why it happens: एकीकरण दस्तावेज़ीकरण और ट्यूटोरियल से चिपकाए गए हैं। LLM किसी भी हार्डकोडेड मान सहित पैटर्न की प्रतिलिपि बनाता है। Env-var अनुशासन के लिए CI/CD में स्पष्ट अनुशासन की आवश्यकता होती है - जिसे LLM लागू नहीं कर सकता।
Fix: प्रत्येक तृतीय-पक्ष क्रेडेंशियल के लिए पर्यावरण चर का उपयोग करें। अपने परिनियोजन प्लेटफ़ॉर्म (Vercel, Netlify, Heroku, या वॉल्ट) में रहस्य संग्रहीत करें। npm audit मासिक के साथ एनपीएम निर्भरता का ऑडिट करें। सुरक्षा अद्यतन उपलब्ध होने पर स्वचालित पीआर के लिए डिपेंडाबॉट या रेनोवेट का उपयोग करें।
निवारण पैटर्न
इन अंतरालों को बंद करने के लिए नए सिरे से पुनर्निर्माण की आवश्यकता नहीं है। पैटर्न सुसंगत है:
- Audit: अपने लाइव ऐप के विरुद्ध FixVibe चलाएँ। रेपो स्कैन के लिए, FixVibe GitHub ऐप सक्षम करें। निष्कर्ष एकत्रित करें - रहस्य, RLS, प्रमाणीकरण, शीर्षलेख, तृतीय-पक्ष।
- सुरक्षित करें: उच्च-विश्वास निष्कर्षों को ठीक करें। RLS + FORCE सक्षम करें। रहस्यों को env vars में ले जाएं। मिडलवेयर में CSP और HSTS सेट करें। सर्वर-साइड auth सत्यापन का उपयोग करें। कोडिंग-एजेंट प्रॉम्प्ट का उपयोग केवल वहीं करें जहां कोड/कॉन्फ़िगरेशन परिवर्तन लागू होते हैं, और DNS या प्रदाता-स्वामित्व वाले फिक्स के लिए ऑपरेटर चरणों का पालन करें।
- Monitor: सत्यापित डोमेन पर दैनिक निष्क्रिय स्कैन या साप्ताहिक सक्रिय स्कैन शेड्यूल करें। स्लैक पर वेबहुक सेट करें। प्रत्येक महत्वपूर्ण खोज को जहाज के कुछ ही मिनटों के भीतर अलर्ट ट्रिगर करना चाहिए।
- प्रतिक्रिया दें: जब कोई निष्कर्ष सामने आए, तो फिक्स के स्वामी से मेल खाने वाली FixVibe सुधार कार्रवाई की प्रतिलिपि बनाएं: कोड/कॉन्फ़िगरेशन कार्य के लिए कोडिंग-एजेंट प्रॉम्प्ट, या DNS, प्रदाता कंसोल, गुप्त रोटेशन और मैन्युअल समीक्षा के लिए ऑपरेटर चरण। पुष्टि के लिए फिर से स्कैन करें।
मैदान किधर जा रहा है
इन अंतरालों को ठीक करना आज टीमों के लिए काम है। अगले 2-3 वर्षों में, सीमा आगे बढ़ रही है: फ्रेमवर्क और टूल्स में बेहतर डिफ़ॉल्ट (Next.js मिडलवेयर ऑटो-CSP, Supabase RLS डिफ़ॉल्ट के रूप में), IDE-समय सुरक्षा प्रतिक्रिया (Cursor सुझाव जो चेतावनी देते हैं जब आप क्लाइंट घटक में एक सेवा कुंजी पेस्ट करने वाले होते हैं), और MCP-संचालित ऑटोफ़िक्स (आपके कोडिंग एजेंट के पास FixVibe निष्कर्षों तक पहुंच होती है और उन्हें स्वायत्त रूप से ठीक कर सकता है)। FixVibe का सार्वजनिक changelog ट्रैक जो अंतराल पहले बंद हो रहे हैं।
अगले चरण
लॉन्च से पहले go/no-go चेकलिस्ट के लिए, Pre-launch SaaS security checklist देखें। कोड स्निपेट और वास्तविक विफलता पैटर्न के साथ चरण-दर-चरण सख्त प्रक्रिया के लिए, How to secure an app built with AI coding tools पढ़ें।
