Code property graph
कंप्यूटर विज्ञान में, एक कोड संपत्ति ग्राफ (सी. पी. जी.) एक कंप्यूटर प्रोग्राम प्रतिनिधित्व है जो एक संपत्ति ग्राफ में वाक्यात्मक संरचना, नियंत्रण प्रवाह और डेटा निर्भरताओं को पकड़ता है। अवधारणा को मूल रूप से सी और सी + + सिस्टम कोड में सुरक्षा कमजोरियों की पहचान करने के लिए पेश किया गया था, लेकिन तब से इसे वेब अनुप्रयोगों, क्लाउड परिनियोजन और स्मार्ट अनुबंधों का विश्लेषण करने के लिए नियोजित किया गया है। भेद्यता की खोज से परे, कोड संपत्ति ग्राफ कोड क्लोन का पता लगाने, हमले-सतह का पता लगाने, शोषण उत्पादन, कोड परीक्षण क्षमता को मापने और सुरक्षा पैच के बैकपोर्टिंग में अनुप्रयोगों को ढूंढते हैं। परिभाषा एक प्रोग्राम का कोड प्रॉपर्टी ग्राफ अपने अमूर्त वाक्यविन्यास वृक्षों (ए. एस. टी.), नियंत्रण-प्रवाह ग्राफ (सी. एफ. जी.) और प्रोग्राम निर्भरता ग्राफ (पी. डी. जी.) को कथन और विधेय नोड्स पर विलय करके प्राप्त प्रोग्राम का एक ग्राफ प्रतिनिधित्व है। परिणामी ग्राफ एक गुण ग्राफ है, जो नियो4जे, जानुसग्राफ और ओरिएंटडीबी जैसे ग्राफ डेटाबेस का अंतर्निहित ग्राफ मॉडल है, जहां डेटा को प्रमुख-मूल्य जोड़े के रूप में नोड्स और किनारों में संग्रहीत किया जाता है। वास्तव में, कोड प्रॉपर्टी ग्राफ को ग्राफ डेटाबेस में संग्रहीत किया जा सकता है और ग्राफ क्वेरी भाषाओं का उपयोग करके पूछताछ की जा सकती है। उदाहरण सी प्रोग्राम के कार्य पर विचार करेंः शून्य फू () {इंट x = स्रोत (); यदि (x <MAX) {इंट y = 2 * x; सिंक (y);} फ़ंक्शन का कोड गुण ग्राफ इसके अमूर्त वाक्यविन्यास वृक्ष, नियंत्रण-प्रवाह ग्राफ, और बयानों पर प्रोग्राम निर्भरता ग्राफ को विलय करके प्राप्त किया जाता है और जैसा कि निम्नलिखित चित्र में देखा गया हैः कार्यान्वयन जॉर्न सी. पी. जी. मूल कोड संपत्ति ग्राफ को सी/सी + + के लिए 2013 में गोटिंगन विश्वविद्यालय में ओपन-सोर्स कोड विश्लेषण उपकरण जॉर्न के हिस्से के रूप में लागू किया गया था। इस मूल संस्करण को बंद कर दिया गया है और ओपन-सोर्स जॉर्न प्रोजेक्ट द्वारा प्रतिस्थापित किया गया है, जो कई प्रोग्रामिंग भाषाओं पर लागू एक औपचारिक कोड संपत्ति ग्राफ विनिर्देश प्रदान करता है। यह परियोजना सी/सी + +, जावा, जावा बाइटकोड, कोटलिन, पायथन, जावास्क्रिप्ट, टाइपस्क्रिप्ट, एल. एल. वी. एम. बिटकोड और x86 बाइनरी (घिद्रा डिसएसेम्बलर के माध्यम से) के लिए कोड प्रॉपर्टी ग्राफ जनरेटर प्रदान करती है। प्लूम सी. पी. जी. 2020 में स्टेलनबोश विश्वविद्यालय में विकसित और अमेज़न साइंस द्वारा प्रायोजित, ओपन-सोर्स प्लूम परियोजना जॉर्न परियोजना द्वारा प्रदान किए गए कोड संपत्ति ग्राफ विनिर्देश के साथ संगत जावा बाइटकोड के लिए एक कोड संपत्ति ग्राफ प्रदान करती है। 2021 में दोनों परियोजनाओं का विलय हो गया। फ्राउनहोफर एआईएसईसी सी. पी. जी. यह सी/सी + +, जावा, गोलांग और पायथन के लिए ओपन-सोर्स कोड प्रॉपर्टी ग्राफ जनरेटर प्रदान करता है, हालांकि एक औपचारिक योजना विनिर्देश के बिना। यह क्लाउड प्रॉपर्टी ग्राफ भी प्रदान करता है, जो कोड प्रॉपर्टी ग्राफ अवधारणा का एक विस्तार है जो क्लाउड परिनियोजन के विवरण को मॉडल करता है। एलएलवीएम के लिए गैलोइस का सी. पी. जी.। गैलोइस इंक. एल. एल. वी. एम. संकलक पर आधारित एक कोड संपत्ति ग्राफ प्रदान करता है। ग्राफ संकलन के विभिन्न चरणों में कोड और इन अभ्यावेदनों के बीच एक मानचित्रण का प्रतिनिधित्व करता है। यह एक कस्टम योजना का अनुसरण करता है जिसे इसके प्रलेखन में परिभाषित किया गया है। कोड प्रॉपर्टी ग्राफ पर मशीन लर्निंग, कोड प्रॉपर्टी ग्राफ भेद्यता की खोज के लिए कई मशीन-लर्निंग-आधारित दृष्टिकोणों के लिए आधार प्रदान करते हैं। विशेष रूप से, ग्राफ न्यूरल नेटवर्क (जी. एन. एन.) को भेद्यता डिटेक्टर प्राप्त करने के लिए नियोजित किया गया है। एब्स्ट्रैक्ट सिंटैक्स ट्री (ए. एस. टी.) कंट्रोल-फ्लो ग्राफ (सी. एफ. जी.) प्रोग्राम डिपेंडेंस ग्राफ (पी. डी. जी.) ग्राफ डेटाबेस संदर्भ कंप्यूटर सुरक्षा सॉफ्टवेयर अनुप्रयोग-विशिष्ट ग्राफ भी देखें।