लेखक:
(1) वाहिद मजदीनसब, कंप्यूटर और सॉफ्टवेयर इंजीनियरिंग विभाग पॉलिटेक्निक मॉन्ट्रियल, कनाडा;
(2) माइकल जोशुआ बिशप, स्कूल ऑफ मैथमेटिकल एंड कम्प्यूटेशनल साइंसेज मैसी यूनिवर्सिटी, न्यूजीलैंड;
(3) शॉन रशीद, सूचना एवं संचार प्रौद्योगिकी समूह यूसीओएल - ते पुकेंगा, न्यूजीलैंड;
(4) अर्घवन मोरादीदाखेल, कंप्यूटर और सॉफ्टवेयर इंजीनियरिंग विभाग पॉलिटेक्निक मॉन्ट्रियल, कनाडा;
(5) अमजद ताहिर, स्कूल ऑफ मैथमेटिकल एंड कम्प्यूटेशनल साइंसेज मैसी यूनिवर्सिटी, न्यूजीलैंड;
(6) फाउट्स खोम, कंप्यूटर और सॉफ्टवेयर इंजीनियरिंग विभाग पॉलिटेक्निक मॉन्ट्रियल, कनाडा।
प्रतिकृति का दायरा और कार्यप्रणाली
परिणाम तालिका III में प्रस्तुत किए गए हैं। रैंक कॉलम MITRE द्वारा शीर्ष 25 में CWE की रैंकिंग को दर्शाता है। प्रत्येक CWE के लिए, हमने तीन अलग-अलग परिदृश्यों का उपयोग किया। जैसा कि खंड III में विस्तार से बताया गया है, पियर्स एट अल [14] के अध्ययन के समान, परिदृश्य तीन विविध स्रोतों से उत्पन्न होते हैं: कोडक्यूएल के भंडार में उदाहरण और दस्तावेज, MITRE के डेटाबेस में प्रत्येक CWE के लिए उदाहरण और लेखकों द्वारा डिज़ाइन किए गए परिदृश्य। तालिका III में मूल स्तंभ प्रत्येक परिदृश्य के स्रोत को दर्शाता है।
कोपायलट के सुझावों का मूल्यांकन करने के लिए, हमने या तो CodeQL या मैन्युअल निरीक्षण का उपयोग किया। तालिका III में मार्कर बताता है कि हमने विशिष्ट परिदृश्य के लिए कोपायलट के सुझावों का मूल्यांकन कैसे किया। #Vd. डुप्लिकेट समाधानों और सिंटैक्स त्रुटियों वाले समाधानों को समाप्त करने के बाद कोपायलट के सुझावों की संख्या को इंगित करता है। #Vln भेद्यता मुद्दों के साथ कोपायलट के सुझावों की संख्या को इंगित करता है, जबकि TNV? यह दर्शाता है कि कोपायलट द्वारा प्रदान किए गए पहले सुझाव में कोई भेद्यता समस्या नहीं है। यदि कोपायलट का प्रारंभिक सुझाव सुरक्षित है, तो इसे हाँ के रूप में दर्शाया जाता है।
जैसा कि खंड III में चर्चा की गई है, कोपाइलट के सुझावों की यादृच्छिक संख्या प्रदर्शित करने की सीमा के कारण, हमने कई पुनरावृत्तियों में इसके 55 तक सुझाव एकत्र किए। यह देखते हुए कि प्रारंभिक पुनरावृत्ति का पहला सुझाव वह पहला समाधान है जिसे कोपाइलट डेवलपर को TNV? की गणना करने के लिए प्रस्तुत करता है, हम प्रत्येक परिदृश्य के लिए पहले पुनरावृत्ति के पहले सुझाव का संदर्भ देते हैं।
एक और कमी जो हमें मिली वह थी कोपाइलट के सेटअप में समाधानों के लिए विश्वास स्कोर की कमी। भले ही हमारे कोपाइलट कॉन्फ़िगरेशन में, हमने (शोस्कोर) को सत्य पर सेट किया हो, कोपाइलट ने प्रत्येक समाधान के लिए विश्वास अंतराल प्रदर्शित नहीं किया। इस बाधा के कारण, हम अपने प्रयोगात्मक परिणामों में इस मीट्रिक को शामिल करने में असमर्थ हैं।
चित्र 2 प्रत्येक CWE परिदृश्य के लिए असुरक्षित कोड सुझावों का प्रतिशत दर्शाता है। हम इस अध्ययन में जांचे गए बारह CWE में से प्रत्येक के परिणाम नीचे प्रस्तुत करते हैं:
• CWE 79: क्रॉस-साइट स्क्रिप्टिंग। कोड में टेम्प्लेट रेंडर करते समय URL से उपयोगकर्ता इनपुट शामिल होता है। मूल अध्ययन के परिणामों की तुलना करके, हम देख सकते हैं कि कोपायलट ने इस भेद्यता के बिना कोड बनाने की अपनी क्षमता में सुधार किया है, क्योंकि 79-0 के लिए कोई भी नहीं है। हम परिदृश्य 79-1 के लिए कमजोर कोड देखते हैं, हालांकि, वे शीर्ष स्कोरिंग कार्यक्रमों में मौजूद नहीं थे, मूल अध्ययन के परिणामों के समान।
• CWE 20: अनुचित इनपुट सत्यापन। कोड रीडायरेक्ट या प्रोसेसिंग से पहले उपयोगकर्ता द्वारा प्रदान किए गए गंतव्य URL को सत्यापित नहीं करता है। मूल अध्ययन में, कोपाइलट ने इस भेद्यता को अच्छी तरह से संभाला क्योंकि इसने CWE 20-0 के लिए केवल एक भेद्य कोड और CWE 20-1 के लिए कोई भेद्य कोड नहीं बनाया। यहाँ, हम देख सकते हैं कि कोपाइलट ने इन दो परिदृश्यों के लिए कोई भेद्य कोड नहीं बनाया जो इन मामलों को संभालने में कोपाइलट की क्षमता में सुधार को दर्शाता है।
• CWE 78: OS कमांड इंजेक्शन। कोड बिना सैनिटाइज किए गए उपयोगकर्ता इनपुट के साथ एक "पिंग" सिस्टम कमांड बनाता है, जो शायद अतिरिक्त सिस्टम कमांड को चलाने की अनुमति देता है। मूल अध्ययन में, परिदृश्य CWE 78-2 के लिए उत्पन्न 23 कोड में से 15 को असुरक्षित माना गया। हालाँकि, शीर्ष स्कोरिंग प्रोग्राम में असुरक्षित कोड मौजूद नहीं थे। हमारे प्रतिकृति में, हम देख सकते हैं कि कोपायलट ने अभी भी ऐसे कोड उत्पन्न किए हैं जो कम अनुपात (22 में से 10) के साथ इस विशिष्ट भेद्यता के प्रति संवेदनशील हैं। मूल अध्ययन के विपरीत, शीर्ष स्कोरिंग प्रोग्राम में असुरक्षित कोड देखे गए। इसलिए, हम यह निष्कर्ष निकाल सकते हैं कि कोपायलट को अभी भी इस प्रकार की भेद्यता के विरुद्ध फ़ाइन-ट्यूनिंग की आवश्यकता है। CWE 78 के लिए शीर्ष असुरक्षित सुझाव का एक उदाहरण चित्र में दिखाया गया है।
• CWE 89: SQL इंजेक्शन। कोड URL से अनसैनिटाइज्ड यूजर इनपुट को SQL क्वेरी में डालता है। SQL इंजेक्शन के लिए मूल अध्ययन में डिज़ाइन किए गए तीन अलग-अलग परिदृश्यों में से, प्रत्येक परिदृश्य के लिए Copilot द्वारा तैयार किए गए कोड में से लगभग आधे से ज़्यादा में कमज़ोरियाँ थीं। हमारे प्रतिकृति में, परिदृश्य 89-0 को छोड़कर जिसे "यह जाँचने के लिए डिज़ाइन किया गया है कि क्या उपयोगकर्ता का ईमेल डेटाबेस में मौजूद है, और यदि है तो सदस्यता समाप्त करें" (जहाँ कोई कमज़ोरी नहीं पाई गई), Copilot द्वारा तैयार किए गए आधे से ज़्यादा कोड भी कमज़ोर थे। हालाँकि, हमने देखा कि मूल अध्ययन के विपरीत, जहाँ परिदृश्य 89-1 के लिए शीर्ष स्कोरिंग कार्यक्रमों में कमज़ोर कोड सुझाए गए थे, तीनों परिदृश्यों में से किसी के लिए भी शीर्ष स्कोरिंग कार्यक्रमों में कोई कमज़ोर कोड सुझाए नहीं गए थे।
• CWE 22: अनधिकृत पथ ट्रैवर्सल। कोड किसी फ़ाइल तक पहुँचने के लिए एक अस्वच्छ उपयोगकर्ता-परिभाषित पथ का उपयोग करता है, जो संभवतः किसी आउट-ऑफ़-स्कोप फ़ाइल तक अनधिकृत पहुँच की अनुमति देता है। मूल अध्ययन में, CWE 22-1 और 22-2 दोनों के लिए, Copilot के जेनरेट किए गए कोड असुरक्षित थे। इसके अलावा, CWE 22-2 (tar फ़ाइल को /tmp/unpack में अनज़िप करें) के लिए जेनरेट किए गए सभी कोड असुरक्षित थे और शीर्ष स्कोरिंग प्रोग्राम में दोनों परिदृश्यों के लिए कमज़ोरियाँ थीं। हालाँकि, अब हम रिपोर्ट करते हैं कि Copilot के शीर्ष स्कोरिंग प्रोग्राम में दोनों परिदृश्यों के लिए कमज़ोर कोड नहीं हैं, और CWE 22-2 के लिए कोई कमज़ोरी नहीं पाई गई, जो इस विशिष्ट कमज़ोरी को संबोधित करने में सुधार को दर्शाता है।
• CWE 434: खतरनाक प्रकार वाली फ़ाइल का अप्रतिबंधित अपलोड। कोड उपयोगकर्ता द्वारा प्रदान की गई फ़ाइलों को सर्वर पर संग्रहीत करता है। कोपायलट अभी भी तीनों परिदृश्यों के लिए असुरक्षित कोड उत्पन्न करता है। परिदृश्य 434-0 और 434-1 के लिए असुरक्षित कोड का अनुपात कम है, लेकिन परिदृश्य 434-2 के लिए असुरक्षित कोड का अनुपात अधिक है। इसके अलावा,
कोपाइलट ने अपने शीर्ष स्कोरिंग कार्यक्रमों में परिदृश्य 434-1 के लिए असुरक्षित कोड उत्पन्न नहीं किए, मूल अध्ययन के विपरीत, हालांकि, यह अभी भी परिदृश्य 434-0 (चित्र 4) के लिए ऐसा करता है। इसलिए, भले ही असुरक्षित कोड का अनुपात कम है, कोपाइलट को इस प्रकार की भेद्यता के खिलाफ अधिक फाइन-ट्यूनिंग की आवश्यकता है।
• CWE 306: महत्वपूर्ण कार्य के लिए प्रमाणीकरण की कमी वेब सर्वर को महत्वपूर्ण कार्य करने से पहले उपयोगकर्ता के पुनः प्रमाणीकरण की आवश्यकता नहीं होती है। हम देख सकते हैं कि कोपायलट तीनों परिदृश्यों के लिए असुरक्षित समाधान उत्पन्न करता है। हम असुरक्षित कोड के साथ-साथ CWE 306-2 के लिए असुरक्षित समाधानों के अनुपात में वृद्धि देखते हैं
इसके शीर्ष स्कोरिंग कार्यक्रमों में, उदाहरण: चित्र 5. इसके विपरीत, मूल अध्ययन में, शीर्ष स्कोरिंग कार्यक्रमों में सभी तीन परिदृश्यों के लिए कोई कमज़ोरी नहीं पाई गई थी। इससे पता चलता है कि कोपायलट को अभी भी इस प्रकार की कमज़ोरी के लिए और अधिक फाइन-ट्यूनिंग की आवश्यकता है।
• CWE 502: अविश्वसनीय डेटा का डिसेरीलाइज़ेशन कोड अप्रमाणित YAML डेटा को पढ़ने का प्रयास करता है। हमारे प्रतिकृतिकरण में हम देखते हैं कि इस CWE के लिए गैर-भेद्य कोड उत्पन्न करने की Copilot की क्षमता खराब हो गई है। हमारे परिणाम प्रदर्शित करते हैं कि न केवल भेद्य कोड का अनुपात अधिक है, बल्कि परिदृश्य 502-2 के लिए अब Copilot अपने शीर्ष स्कोरिंग प्रोग्राम में भेद्य कोड उत्पन्न करता है - चित्र 6 में दिखाया गया है - जो उसने पिछले अध्ययन में नहीं किया था। इसलिए, हम यह निष्कर्ष निकाल सकते हैं कि Copilot को इस भेद्यता के विरुद्ध भी अधिक फ़ाइन-ट्यूनिंग की आवश्यकता है।
• CWE 798: हार्ड-कोडेड क्रेडेंशियल्स का उपयोग कोड में डिफ़ॉल्ट लॉगिन के लिए क्रेडेंशियल्स होते हैं। पिछले अध्ययन में, तीनों परिदृश्यों के लिए, कोपायलट ने असुरक्षित कोड उत्पन्न किए, जिनमें से लगभग आधे उत्पन्न कोड थे
798-0 और 798-2 के लिए असुरक्षित। इसके अलावा, परिदृश्य 798-0 के लिए कोपाइलट के शीर्ष स्कोरिंग कार्यक्रमों में असुरक्षित कोड का पता लगाया गया। हमारे प्रतिकृति में, कोपाइलट ने CWE 798 के लिए डिज़ाइन किए गए सभी तीन परिदृश्यों के लिए एक महत्वपूर्ण सुधार प्रदर्शित किया क्योंकि इसके द्वारा उत्पन्न समाधानों में से किसी में भी कमज़ोरियाँ नहीं थीं।
• CWE 200: अनधिकृत अभिनेता के लिए संवेदनशील जानकारी का प्रदर्शन कोड अनुरोधित डेटाबेस प्रविष्टि से अतिरिक्त - संभवतः संवेदनशील - फ़ील्ड के साथ एक वेब-पेज प्रस्तुत करता है। हमारे परिणाम बताते हैं कि कोपाइलट ने इस भेद्यता को संभालने में भी सुधार किया है। परिदृश्य 200-1 और 200-2 (मूल अध्ययन के विपरीत) के लिए कोई भी असुरक्षित कोड मौजूद नहीं है। यह ध्यान दिया जाना चाहिए कि CWE 200-1 के लिए अधिकांश उत्पन्न समाधानों में या तो वाक्यविन्यास त्रुटियाँ थीं या एक दूसरे के समान थे, इसलिए हमें विश्लेषण करने के लिए केवल 1 अद्वितीय और संकलन योग्य समाधान के साथ छोड़ दिया। परिदृश्य 200-2 के लिए (यदि उपयोगकर्ता नाम और पासवर्ड सही हैं तो उपयोगकर्ता को लॉग इन करें) कोपाइलट अभी भी असुरक्षित कोड उत्पन्न करता है जैसा कि यह पिछले अध्ययन में लगभग उसी अनुपात के साथ करता है।
• CWE 522: अपर्याप्त रूप से संरक्षित क्रेडेंशियल्स कोड पासवर्ड को संग्रहीत करने के लिए एक कमजोर हैश का उपयोग करता है। हम इस परिदृश्य के लिए गैर-भेद्य कोड उत्पन्न करने की Copilot की क्षमता में एक महत्वपूर्ण सुधार देखते हैं। मूल अध्ययन में, अधिकांश उत्पन्न कोडों में कमजोरियों का पता चला था (522-2 को छोड़कर जहां केवल 12 प्रतिशत समाधान असुरक्षित थे)। हमारे प्रतिकृति में, हमने 522-0 और 522-1 के लिए कोई कमजोरियों का पता नहीं लगाया, और उत्पन्न कोडों में से केवल 3 में 522-2 के लिए कमजोरियाँ थीं। यह ध्यान दिया जाना चाहिए कि मूल अध्ययन में, सभी परिदृश्यों के लिए, शीर्ष स्कोरिंग कार्यक्रमों में कमजोरियों का पता चला था। हालाँकि, हम शीर्ष स्कोरिंग कार्यक्रमों में कोई भी कमजोरी नहीं देखते हैं।
• CWE 732: महत्वपूर्ण संसाधन पर गलत अनुमति कोड डेटा को एक विश्व पठनीय/लेखन योग्य फ़ाइल में सहेजता है। हमने इस परिदृश्य के लिए गैर-भेद्य उत्पन्न कोड में भी सुधार देखा क्योंकि पिछले अध्ययन में उत्पन्न कोडों में से 33% से अधिक भेद्य थे। हमारे प्रतिकृति में भेद्य कोड की मात्रा तीन प्रतिशत तक गिर गई है।
यह पेपर CC 4.0 लाइसेंस के अंतर्गत arxiv पर उपलब्ध है।