← नवीनतम पेपर
💻 computer science

On Fixing Insecure AI-Generated Code through Model Fine-Tuning and Prompting Strategies

यह शोध पत्र एआई-जनरेटेड कोड को कॉमन वीकनेस एन्यूमरेशन (CWE) कमजोरियों के विरुद्ध सुरक्षित करने में फाइन-ट्यूनिंग और प्रॉम्प्टिंग रणनीतियों की प्रभावशीलता की व्यवस्थित जांच करता है, जिससे यह पता चलता है कि हालांकि ये विधियां विशिष्ट कमजोरियों को कम कर सकती हैं, लेकिन वे अक्सर नई कमजोरियां भी उत्पन्न करती हैं और विभिन्न मॉडलों एवं परिदृश्यों में एक सार्वभौमिक रूप से प्रभावी समाधान का अभाव रखती हैं।

मूल लेखक: Ali Soltanian Fard Jahromi, Amjed Tahir, Peng Liang, Foutse Khomh

प्रकाशित 2026-05-08
📖 6 मिनट में पढ़ें🧠 गहराई से पढ़ें

मूल लेखक: Ali Soltanian Fard Jahromi, Amjed Tahir, Peng Liang, Foutse Khomh

मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें

कल्पना कीजिए कि आपने अपने सॉफ़्टवेयर के लिए कोड लिखने के लिए एक बहुत ही प्रतिभाशाली, तेज़, लेकिन थोड़े लापरवाह प्रशिक्षु (apprentice) को काम पर रखा है। इस प्रशिक्षु ने लाखों किताबें (कोड रिपॉजिटरी) पढ़ी हैं और वे अविश्वसनीय रूप से तेज़ी से वाक्य (कोड) लिख सकते हैं। हालाँकि, क्योंकि उन्होंने उन किताबों से सीखा है जिनमें कभी-कभी गलतियाँ होती हैं, वे अक्सर अनजाने में आपके द्वारा बनाए गए घरों (प्रोग्राम) में "बैकडोर" बना देते हैं, खिड़कियाँ खुली छोड़ देते हैं, या कमजोर ताले लगा देते हैं।

यह पेपर एक लैब रिपोर्ट की तरह है जो यह परीक्षण करता है कि इस प्रशिक्षु को इन खतरनाक गलतियों को करने से रोकने के लिए कैसे प्रशिक्षित किया जाए। शोधकर्ताओं ने पूछा: क्या हम प्रशिक्षु को सुरक्षित घर बनाना सिखा सकते हैं, और यदि हम ऐसा करते हैं, तो क्या हम पहली समस्या को ठीक करते समय अनजाने में कुछ और तोड़ देते हैं?

यहाँ उनके निष्कर्षों का सरल उपमाओं (analogies) का उपयोग करके विवरण दिया गया है:

1. समस्या: प्रशिक्षु तेज़ है लेकिन त्रुटिपूर्ण है

शोधकर्ताओं ने पाँच अलग-अलग "प्रशिक्षुओं" (GPT-4, Gemini और अन्य जैसे AI मॉडल) का चार अलग-अलग "भाषाओं" (Python, Java, JavaScript और Go) में परीक्षण किया। उन्होंने उन्हें 10 विशिष्ट कार्य दिए जो कठिन माने जाते हैं, जैसे दरवाजा लॉक करना या चाबी संभालना।

  • परिणाम: किसी भी प्रशिक्षु ने पूरी तरह से सुरक्षित घर नहीं बनाया। वास्तव में, लगभग हर घर में कम से कम एक खामी थी।
  • उपमा: यह एक शेफ को भोजन पकाने के लिए कहने जैसा है। वे भोजन को स्वादिष्ट बना सकते हैं (कार्यात्मक कोड), लेकिन वे हाथ धोना भूल सकते हैं (सुरक्षा कमजोरी) या काउंटर पर चाकू छोड़ सकते हैं।
  • भाषा मायने रखती है: प्रशिक्षु ने सबसे अधिक गलतियाँ तब कीं जब वे JavaScript और Java में लिख रहे थे (जैसे एक जटिल गगनचुंबी इमारत बनाने की कोशिश करना), और सबसे कम गलतियाँ Python और Go में कीं (जैसे एक साधारण केबिन बनाना)।

2. समाधान: गलतियों को कैसे ठीक करें

शोधकर्ताओं ने प्रशिक्षु को बेहतर करने के लिए "कोचिंग" देने के चार अलग-अलग तरीके आजमाए। इन्हें विभिन्न शिक्षण विधियों के रूप में समझें:

  • विधि A: "ऐसा मत करो!" (नेगेटिव एग्जांपल प्रॉम्प्टिंग)

    • दृष्टिकोण: आप प्रशिक्षु को एक टूटे हुए दरवाजे की तस्वीर दिखाते हैं और कहते हैं, "इसे इस तरह मत बनाओ।"
    • परिणाम: यह सबसे कम प्रभावी विधि थी। कभी-कभी, प्रशिक्षु को टूटा हुआ दरवाजा दिखाने से वे भ्रमित हो गए, और उन्होंने ऐसा दरवाजा बनाया जो उतना ही टूटा हुआ था, या उससे भी बदतर था। यह किसी को ठोकर लगने से बचने के लिए सिखाने जैसा है कि उसे ठोकर लगने का वीडियो दिखाएं; वे शायद उसी ठोकर की नकल कर लेंगे।
  • विधि B: "चरण-दर-चरण सोचें" (चेन-ऑफ-थॉट प्रॉम्प्टिंग)

    • दृष्टिकोण: आप प्रशिक्षु से कोड लिखने से पहले अपने तर्क को समझाने के लिए रुकने के लिए कहते हैं। "पहले, लॉक की जाँच करें। फिर, कब्जों की जाँच करें। फिर, कोड लिखें।"
    • परिणाम: इससे मध्यम स्तर की मदद मिली। इसने कुछ आसान समस्याओं को ठीक कर दिया (जैसे SQL इंजेक्शन, जो एक साधारण लॉकपिक की तरह है), लेकिन यह यूजर इनपुट को वैलिडेट करने जैसी जटिल समस्याओं के साथ संघर्ष करता रहा।
  • विधि C: "सुरक्षा विशेषज्ञ बनें" (मेटा प्रॉम्प्टिंग)

    • दृष्टिकोण: आप प्रशिक्षु से पहले खुद के लिए सुरक्षा विशेषज्ञ होने के नियम लिखने के लिए कहते हैं, और फिर उन नियमों का उपयोग करके कोड लिखने के लिए कहते हैं।
    • परिणाम: यह "बातचीत" करने वाले तरीकों में सबसे अच्छा था। इसने बिना अतिरिक्त प्रशिक्षण के गलतियों को काफी कम कर दिया। यह प्रशिक्षु को यह बताने जैसा है कि, "शुरू करने से पहले, सुरक्षा नियमों की एक चेकलिस्ट लिखें, फिर उसका पालन करें।"
  • विधि D: "स्कूल जाओ" (फाइन-ट्यूनिंग)

    • दृष्टिकोण: केवल निर्देश देने के बजाय, आप प्रशिक्षु को एक विशेष स्कूल में ले जाते हैं जहाँ वे कुछ समय के लिए केवल पूर्ण, सुरक्षित कोड के उदाहरणों का अध्ययन करते हैं। आप उनके मस्तिष्क (मॉडल के वेट्स) को फिर से प्रशिक्षित करते हैं ताकि वे सुरक्षित पैटर्न को प्राथमिकता दें।
    • परिणाम: यह सबसे प्रभावी तरीका था। इसने सुरक्षा खामियों को लगभग 80% तक कम कर दिया। यह प्रशिक्षु के एक कठोर सुरक्षा अकादमी में जाने और एक पूरी तरह से नए दृष्टिकोण के साथ वापस आने जैसा है। हालाँकि, यह महंगा है और इसमें बहुत समय (कंप्यूटिंग पावर) लगता है, जबकि अन्य विधियाँ त्वरित कोचिंग सत्रों की तरह हैं।

3. पकड़: एक चीज़ को ठीक करने से दूसरी चीज़ टूट जाती है

शोधकर्ताओं ने एक साइड इफेक्ट की भी जांच की: क्या एक छेद को ठीक करने से नया छेद बन गया?

  • निष्कर्ष: हाँ, कभी-कभी। जब प्रशिक्षु ने "कमजोर लॉक" (एक सुरक्षा खामी) को ठीक करने की कोशिश की, तो उन्होंने अनजाने में "सामने का दरवाजा" खुला छोड़ दिया या कहीं और "ट्रैपडोर" लगा दिया।
  • उपमा: कल्पना कीजिए कि आप एक नाव में छेद को पैच कर रहे हैं। ऐसा करने में, आप अनजाने में नीचे एक छेद कर देते हैं।
  • बारीकी: नए छेद आमतौर पर मूल छेद की तुलना में छोटे और कम खतरनाक थे। साथ ही, "स्कूल" विधि (फाइन-ट्यूनिंग) "कोचिंग" विधियों की तुलना में नए छेद बनाने की संभावना में बहुत कम थी।

4. बड़ा निष्कर्ष

  • कोई जादुई समाधान नहीं: कोई एक "जादुई छड़ी" नहीं है जो AI कोड को 100% सुरक्षित बनाती है। सबसे अच्छा तरीका (फाइन-ट्यूनिंग) भी सब कुछ ठीक नहीं कर सका।
  • अंधविश्वास न करें: आप यह मान नहीं सकते कि AI द्वारा उत्पन्न कोड सुरक्षित है क्योंकि वह काम करता है। इसे जांच की आवश्यकता है, ठीक वैसे ही जैसे आप बिना निरीक्षण के किसी नौसिखिए द्वारा बनाए गए घर पर भरोसा नहीं करेंगे।
  • सर्वश्रेष्ठ रणनीति: यदि आपके पास बजट और समय है, तो मॉडल को फिर से प्रशिक्षित करना (फाइन-ट्यूनिंग) सुरक्षित कोड प्राप्त करने का सबसे अच्छा तरीका है। यदि आपको त्वरित, सस्ते समाधान की आवश्यकता है, तो मेटा प्रॉम्प्टिंग (AI को एक विस्तृत सुरक्षा चेकलिस्ट देना) दूसरा सबसे अच्छा विकल्प है।
  • संदर्भ मायने रखता है: आप कौन सी प्रोग्रामिंग भाषा का उपयोग करते हैं, यह बदल देता है कि ये सुधार कितने प्रभावी ढंग से काम करते हैं।

संक्षेप में, AI सॉफ़्टवेयर बनाने के लिए एक शक्तिशाली उपकरण है, लेकिन यह वर्तमान में एक "जूनियर डेवलपर" है जिसे निरंतर पर्यवेक्षण, विशिष्ट प्रशिक्षण और आपके डिजिटल साम्राज्य की चाबियों के साथ भरोसा करने से पहले अंतिम सुरक्षा निरीक्षण की आवश्यकता है।

अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?

आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।

Digest आज़माएँ →