Security of LLM-generated Code: A Comparative Analysis
यह शोध पत्र सात लोकप्रिय लार्ज लैंग्वेज मॉडल्स द्वारा जनरेट किए गए कोड की सुरक्षा का अनुभवजन्य रूप से मूल्यांकन करता है और पाता है कि उन सभी द्वारा उत्पन्न कोड में कमजोरियां मौजूद हैं, जिनमें से अधिकांश गंभीर या उच्च स्तर की हैं।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आपने अपने सॉफ़्टवेयर के लिए कोड लिखने के लिए सात अलग-अलग "सुपर-इंटेलिजेंट" प्रशिक्षु (apprentices) काम पर रखे हैं। ये प्रशिक्षु आर्टिफिशियल इंटेलिजेंस (AI) द्वारा संचालित हैं और अपनी अविश्वसनीय गति और मददगार स्वभाव के लिए प्रसिद्ध हैं। वे उद्योग के शीर्ष उपकरण हैं, जिनका उपयोग लाखों डेवलपर्स द्वारा किया जाता है।
कार्लटन यूनिवर्सिटी के शोधकर्ताओं ने इन सात प्रशिक्षुओं को एक सख्त परीक्षा में डालने का निर्णय लिया। उन्होंने उनसे कोई अंतरिक्ष यान बनाने या उपन्यास लिखने के लिए नहीं कहा; इसके बजाय, उन्होंने उन्हें 81 सामान्य कोडिंग कार्यों का एक विशिष्ट सेट दिया—जैसे "एक लॉगिन पेज बनाएं" या "उपयोगकर्ता को फोटो अपलोड करने दें।" लक्ष्य यह देखना था कि इन AI प्रशिक्षुओं द्वारा लिखा गया कोड उपयोग के लिए सुरक्षित है, या यह छिपे हुए जाल से भरा हुआ है।
यहाँ उन्हें क्या मिला, जिसे सरल रूप में नीचे समझाया गया है:
1. "परफेक्ट" प्रशिक्षु का अस्तित्व नहीं है
सबसे चौंकाने वाली खोज क्या थी? इनमें से किसी भी सात प्रशिक्षुओं ने परीक्षण पास नहीं किया। प्रत्येक AI टूल जिसका उन्होंने परीक्षण किया (OpenAI के GPT-4o, Google के Gemini और IBM के watsonx जैसे बड़े नामों सहित) ने ऐसा कोड तैयार किया जिसमें सुरक्षा संबंधी खामियां थीं।
इसे सात अलग-अलग प्रसिद्ध निर्माताओं से कार खरीदने जैसा समझें। आप उम्मीद करेंगे कि उनमें से कम से कम एक की सुरक्षा रेटिंग एकदम सही हो। इसके बजाय, शोधकर्ताओं ने पाया कि हर एक कार का ब्रेक खराब था या स्टीयरिंग व्हील ढीला था। वास्तव में, अधिकांश AI द्वारा लिखे गए कोड में "क्रिटिकल" (गंभीर) या "हाई" (उच्च) गंभीरता वाली खामियां थीं—इसका मतलब है कि ये केवल मामूली खरोंचें नहीं हैं; ये ऐसे बड़े छेद हैं जो हैकर्स को अंदर घुसने का रास्ता दे सकते हैं।
2. निर्देशों में "ट्रैप" (जाल)
शोधकर्ताओं ने विशेष प्रकार के निर्देशों (प्रॉम्प्ट्स) का उपयोग किया जो AI को गलतियाँ करने के लिए उकसाने के लिए डिज़ाइन किए गए थे। उदाहरण के लिए, उन्होंने एक AI से कहा, "एक फंक्शन लिखें जो उपयोगकर्ता को फ़ाइल अपलोड करने देता है।"
- AI की गलती: कुछ AI ने ऐसा कोड लिखा जिससे एक हैकर फोटो के बजाय वायरस अपलोड कर सकता था।
- आश्चर्य: भले ही AI ने मुख्य कार्य को सही ढंग से पूरा किया, लेकिन वह अक्सर सुरक्षा नियमों को भूल जाता था। उदाहरण के लिए, एक AI ने एक लॉगिन पेज लिखा जो पूरी तरह से काम करता था, लेकिन पासवर्ड को 'प्लेन टेक्स्ट' (जैसे कि अपने कंप्यूटर पर स्टिकी नोट पर अपना पासवर्ड लिखना) में स्टोर करता था।
3. "डिबग मोड" की आपदा
पाई गई सबसे आम गलतियों में से एक "डिबग मोड" (Debug Mode) को चालू छोड़ देना था।
- उपमा: एक रेस्टोरेंट के किचन की कल्पना करें। "डिबग मोड" बैक डोर को खुला छोड़ने और एक साइन बोर्ड लगाने जैसा है जिस पर लिखा हो, "अंदर आएं और हमारी गुप्त रेसिपी देखें और हमारे चूल्हे को आजमाएं।" यह शेफ के सीखने के दौरान बहुत अच्छा है, लेकिन जनता के लिए खुले असली रेस्टोरेंट के लिए बहुत बुरा है।
- वास्तविकता: AI बार-बार ऐसा कोड लिख रहा था जिससे यह "बैक डोर" खुला रह जाता था। यदि किसी डेवलपर ने बिना जांचे इस कोड का उपयोग किया, तो उनका पूरा सिस्टम हैक किया जा सकता था। शोधकर्ताओं ने नोट किया कि हालांकि कुछ AI टूल्स ने एक छोटा सा कमेंट जोड़ा था कि "असली जीवन में इसे बंद कर दें," लेकिन वे इस बात पर भरोसा नहीं कर सकते थे कि डेवलपर्स उस नोट को पढ़ेंगे और उसका पालन करेंगे।
4. "तेज़ लेकिन खतरनाक" विरोधाभास
शोधकर्ताओं ने एक विशिष्ट टूल, IBM के watsox के साथ एक अजीब पैटर्न देखा।
- उपमा: एक ऐसे प्रशिक्षु की कल्पना करें जो बहुत छोटे, सरल वाक्य (छोटा कोड) लिखता है। आप सोच सकते हैं, "छोटे वाक्य जांचने में आसान होते हैं, इसलिए वे सुरक्षित होने चाहिए।"
- वास्तविकता: इस प्रशिक्षु में वास्तव में प्रति लाइन कोड सबसे अधिक खतरनाक त्रुटियों की दर थी। क्योंकि कोड बहुत छोटा था, इसलिए इसने महत्वपूर्ण सुरक्षा जांचों को पूरी तरह से छोड़ दिया। यह एक ऐसे ड्राइवर की तरह था जो जल्दी में होने के कारण सीधे बारूदी सुरंगों (minefields) के बीच से शॉर्टकट लेता है।
5. "अति-आत्मविश्वासी" डेवलपर
यह पेपर एक खतरनाक मानवीय तत्व को उजागर करता है। डेवलपर्स इन AI टूल्स को पसंद करते हैं क्योंकि वे काम को तेज़ बनाते हैं। हालांकि, अध्ययन बताता है कि डेवलपर्स बहुत अधिक भरोसेमंद होते जा रहे हैं।
- उपमा: यह एक ऐसे ड्राइवर की तरह है जिसने "सेल्फ-ड्राइविंग" फीचर वाली कार खरीदी है और फिर यह मानकर स्टीयरिंग छोड़ दिया कि कार कभी दुर्घटनाग्रस्त नहीं होगी।
- वास्तविकता: AI टूल्स इतने आत्मविश्वास से भरे होते हैं कि डेवलपर्स मान लेते हैं कि कोड सुरक्षित है। शोधकर्ताओं ने पाया कि इन टूल्स द्वारा जेनरेट किए गए 73% से अधिक कोड स्निपेट्स में कम से कम एक सुरक्षा दोष था। यदि कोई डेवलपर बिना जांचे इस कोड को कॉपी और पेस्ट करता है, तो वे वास्तव में मुसीबत को निमंत्रण दे रहे हैं।
निचोड़ (The Bottom Line)
पेपर निष्कर्ष निकालता है कि हालांकि ये AI टूल्स कोड तेजी से लिखने में अद्भुत हैं, लेकिन वे वर्तमान में डिफ़ॉल्ट रूप से सुरक्षित कोड लिखने में बहुत खराब हैं।
वे एक बहुत ही प्रतिभाशाली लेकिन अनुभवहीन शेफ की तरह हैं जो किसी भी अन्य व्यक्ति की तुलना में सब्जियां काटने में तेज़ है, लेकिन बार-बार हाथ धोना या यह जांचना भूल जाता है कि भोजन खराब तो नहीं हो गया है। शोधकर्ता चेतावनी देते हैं कि जब तक इन AI टूल्स को गति के ऊपर सुरक्षा को प्राथमिकता देने के लिए नहीं सिखाया जाता (या जब तक डेवलपर्स हर एक लाइन को दोबारा जांचना नहीं सीख जाते), तब तक सॉफ़्टवेयर लिखने के लिए उनका उपयोग करना एक जोखिम भरा जुआ है।
सीख: AI पर केवल भरोसा न करें। इसके द्वारा जेनरेट किए गए कोड को एक जूनियर कर्मचारी के ड्राफ्ट की तरह समझें: इसे लाइव करने से पहले एक सीनियर सुरक्षा विशेषज्ञ द्वारा समीक्षा की जानी चाहिए।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।