Bridging Code Property Graphs and Language Models for Program Analysis
यह शोध पत्र codebadger को प्रस्तुत करता है, जो एक ओपन-सोर्स मॉडल कॉन्टेक्स्ट प्रोटोकॉल सर्वर है जो टोकन सीमाओं और इंटर-प्रोसीजरल विश्लेषण अंतराल को दूर करने के लिए लार्ज लैंग्वेज मॉडल्स को Joern के कोड प्रॉपर्टी ग्राफ इंजन के साथ जोड़ता है, जिससे LLMs को बड़े पैमाने के कोडबेस में प्रभावी ढंग से सिमेंटिक प्रोग्राम विश्लेषण, भेद्यता खोज (vulnerability discovery) और पैचिंग करने में सक्षम बनाता है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
बड़ी समस्या: "लाइब्रेरी" बनाम "दिमाग"
कल्पना कीजिए कि आपके पास एक बेहद बुद्धिमान, सुपर-स्मार्ट लाइब्रेरियन (Large Language Model या LLM) है जो यह सब जानता है कि किताबें कैसे लिखी जाती हैं। आप इस लाइब्रेरियन से एक विशाल लाइब्रेरी (एक बहुत बड़ा कोडबेस) में एक विशिष्ट गलती (typo) खोजने के लिए कहते हैं जिसमें 8,000 किताबें हैं।
लाइब्रेरियन के पास दो मुख्य समस्याएं हैं:
- "छोटी याददाश्त" की समस्या (The "Short Memory" Issue): लाइब्रेरियन एक बार में केवल कुछ ही पन्ने अपने दिमाग में रख सकता है। यदि आप पूरी लाइब्रेरी को उनकी याददाश्त में डालने की कोशिश करेंगे, तो वे घबरा जाएंगे और काम करना बंद कर देंगे।
- "अंधाधुंध खोज" की समस्या (The "Blind Search" Issue): यदि आप लाइब्रेरियन को एक विशिष्ट पैटर्न खोजने के लिए कहते हैं, तो वे आमतौर पर केवल उन शब्दों को देखते हैं जो दिखने में समान होते हैं। वे आसानी से यह नहीं देख पाते कि किताब A का एक वाक्य किताब Z के एक वाक्य से कैसे जुड़ता है, या एक अध्याय का एक पात्र अगले अध्याय में कैसे प्रवाहित होता है। वे उस "कहानी" को मिस कर देते हैं जो पूरी लाइब्रेरी में फैली हुई है।
इस कारण से, वर्तमान AI उपकरण आमतौर पर एक बार में केवल एक पन्ना देखते हैं। वे बड़े चित्र (big picture) को नहीं देख पाते, और यही वह जगह है जहाँ खतरनाक सुरक्षा खामियां (जैसे कि चोर का पिछले दरवाजे से अंदर घुस जाना) अक्सर छिपी होती हैं।
समाधान: "सुपर-स्मार्ट सहायक" (CodeBadger)
लेखकों ने CodeBadger नामक एक टूल बनाया है। CodeBadger को एक विशेष टूर गाइड या एक सुपर-पावर्ड टॉर्च के रूप में समझें जो लाइब्रेरियन और लाइब्रेरी के बीच बैठा है।
लाइब्रेरियन को हर एक किताब पढ़ने के लिए मजबूर करने के बजाय, CodeBadger लाइब्रेरियन को विशेष उपकरणों का एक सेट (जैसे एक नक्शा, एक आवर्धक लेंस/magnifying glass, और एक हाइलाइटर) देता है जो उन्हें पूरी लाइब्रेरी पढ़े बिना उसके ढांचे के बारे में विशिष्ट प्रश्न पूछने की अनुमति देता है।
यह कैसे काम करता है:
- नक्शा (Code Property Graph): CodeBadger पहले पूरी लाइब्रेरी का एक विशाल, 3D नक्शा बनाता है। यह नक्शा केवल यह नहीं दिखाता कि किताबें कहाँ हैं; यह यह भी दिखाता है कि किताबों के विचार आपस में कैसे जुड़ते हैं। इसे पता है कि "किताब A का अध्याय 1" सीधे "किताब B के अध्याय 5" की ओर ले जाता है।
- उपकरण (MCP): CodeBadger लाइब्रेरियन के स्वाभाविक प्रश्नों को इस नक्शे पर कार्यों में अनुवादित करता है।
- इसके बजाय: "पूरी लाइब्रेरी पढ़ो।"
- लाइब्रेरियन पूछता है: "मुझे वे सभी स्थान दिखाएं जहां एक अतिथि इमारत में प्रवेश करता है (Source) और जहां वे खिड़की तोड़ सकते हैं (Sink)।"
- CodeBadger कहता है: "यहाँ वह सटीक रास्ता है जिससे अतिथि गया था। यहाँ वे 3 स्थान हैं जहाँ खिड़की टूटी थी।"
तीन बड़ी जीत (जो उन्होंने टेस्ट किया)
पेपर ने इस नए सिस्टम का परीक्षण तीन वास्तविक दुनिया की चुनौतियों के साथ किया:
1. "बड़ी लाइब्रेरी" का ऑडिट (Code Comprehension)
- कार्य: लाइब्रेरियन को सुरक्षा संबंधी समस्याओं (मेमोरी सेफ्टी) के लिए 8,000-किताबों वाली लाइब्रेरी की जांच करनी थी।
- पुराना तरीका: लाइब्रेरियन हर किताब पढ़ने की कोशिश करता, थक जाता, और खतरे को मिस कर देता।
- CodeBadger का तरीका: लाइब्रेरियन ने गाइड से पूछा, "हम चाबियाँ देने वाले सभी स्थान कहाँ हैं?" गाइड ने 54 स्थानों की ओर इशारा किया। फिर, "हम दरवाजे कहाँ लॉक करते हैं?" गाइड ने 300 स्थानों की ओर इशारा किया। लाइब्रेरियन ने केवल उन विशिष्ट स्थानों को देखा और बिना पूरी लाइब्रेरी पढ़े छिपे हुए खतरों (जैसे कि एक ऐसी चाबी जो उस दरवाजे को खोल सकती है जिसे उसे नहीं खोलना चाहिए) को ढूंढ लिया।
2. "छिपे हुए जाल" की खोज (Vulnerability Discovery)
- कार्य: libtiff (जो छवियों के लिए उपयोग किया जाता है) नामक लाइब्रेरी में एक नया, अज्ञात जाल ढूंढना।
- परिणाम: लाइब्रेरियन ने एक विशिष्ट संख्या (एक कोऑर्डिनेट) को उस क्षण से ट्रैक करने के लिए गाइड का उपयोग किया जब उसे लिखा गया था, जब तक कि उसका उपयोग कागजों के ढेर को हिलाने के लिए नहीं किया गया। गाइड ने दिखाया कि वह संख्या बहुत बड़ी हो सकती है, जिससे ढेर गिर सकता है और फर्श को कुचल सकता है (बफर ओवरफ्लो)।
- शानदार बात: लाइब्रेरियन ने केवल जाल को ही नहीं खोजा; उन्होंने यह साबित करने के लिए एक नकली "टेस्ट बम" (एक्सप्लॉयट) भी बनाया कि यह काम करता है, और फिर उस सटीक सुधार (fix) को भी ढूंढ लिया जिसे लाइब्रेरी के मालिकों ने पहले ही गुप्त रूप से इंस्टॉल कर दिया था।
3. "परफेक्ट फिक्स" (Vulnerability Patching)
- कार्य: libxml2 (जो वेब डेटा के लिए उपयोग किया जाता है) नामक लाइब्रेरी के ज्ञात बग को ठीक करना।
- परिणाम: लाइब्रेरियन ने क्रैश से डेटा के प्रवाह को पीछे की ओर ट्रैक करने के लिए गाइड का उपयोग किया। उन्होंने देखा कि गणित कहाँ गलत हुआ (इंटीजर ओवरफ्लो)। जटिल कोड क्वेरी खुद लिखे बिना, लाइब्रेरियन ने गणित को ठीक करने के लिए एक परफेक्ट पैच लिखा।
- हैरान करने वाला तथ्य: AI द्वारा लिखा गया सुधार लगभग वैसा ही था जैसा कि मानव विशेषज्ञों ने अंततः जारी किया था। उन्होंने पहली बार में ही इसे सही कर दिया।
यह क्यों महत्वपूर्ण है
इससे पहले, AI एक ऐसे छात्र की तरह था जो उत्तर का अनुमान लगाने के लिए पूरी पाठ्यपुस्तक पढ़ने की कोशिश कर रहा था।
CodeBadger AI को एक जासूस में बदल देता है। यह जासूस को अपराध स्थल का एक नक्शा और फोरेंसिक उपकरणों का एक सेट देता है। जासूस को पुलिस रिपोर्ट का हर पन्ना पढ़ने की ज़रूरत नहीं है; उन्हें बस यह जानने की ज़रूरत है कि कहाँ देखना है, क्या ट्रैक करना है, और बिंदुओं को कैसे जोड़ना है।
संक्षेप में: यह पेपर दिखाता है कि यदि आप AI को कोड की संरचना (सिर्फ शब्दों को नहीं) को समझने के लिए सही उपकरण देते हैं, तो यह सॉफ्टवेयर के उन विशाल प्रोजेक्ट्स में सुरक्षा खामियों को ढूंढ सकता है और ठीक कर सकता है जो पहले इसके लिए बहुत बड़े थे।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।