
एक वेरिएंट विश्लेषण और विज़ुअलाइज़ेशन टूल जो समान कमजोरियों के लिए कोडबेस को स्कैन करता है
![]()
C0deVari4nt एक वेरिएंट विश्लेषण और विज़ुअलाइज़ेशन उपकरण है जो कोडबेस में समान कमज़ोरियों का निरीक्षण करता है। यह CodeQL का उपयोग करता है, जो एक सिमैंटिक कोड विश्लेषण इंजन है, ताकि उपयोगकर्ता-नियंत्रित CodeQL क्वेरी टेम्पलेट्स के आधार पर कोड को क्वेरी किया जा सके और परिणामों को हमारे क्लाइंट इंटरफ़ेस में भेजा जा सके, जो vis.js और React के साथ बनाया गया है, ताकि आगे की खोज और विज़ुअलाइज़ेशन किया जा सके। यह पिछली कमज़ोरी रिपोर्टों के आधार पर त्वरित और व्यापक वेरिएंट विश्लेषण को सक्षम बनाता है। vis.js विज़ुअलाइज़ेशन सुविधा डेवलपर्स को कमज़ोर कोड पथों में अतिरिक्त अंतर्दृष्टि प्रदान करती है और उन्हें संभावित वेरिएंट को प्रभावी ढंग से ट्राइएज करने की अनुमति देती है।

दिसंबर 2021 की Log4Shell घटना ने ओपन-सोर्स डेवलपर्स को कमज़ोरी रिपोर्टों का जवाब देने में आने वाली कठिनाइयों को उजागर किया। CVE-2021-44228 के लिए प्रारंभिक पैच के बाद, जिसने अप्रमाणित रिमोट हमलावरों को Log4j 2 के कमज़ोर संस्करणों को चलाने वाले उपकरणों पर नियंत्रण लेने की अनुमति दी, Apache ने संबंधित कमज़ोरियों और अनियंत्रित किनारे के मामलों को संबोधित करने के लिए 3 अतिरिक्त पैच जारी किए।
ओपन-सोर्स डेवलपर्स के पास अक्सर व्यापक कोड समीक्षा में प्रशिक्षण की कमी होती है और वे किसी कमज़ोरी के वेरिएंट की पहचान करने में समस्याओं का सामना करते हैं, जिससे अधूरे पैच होते हैं। यद्यपि कोडबेस के त्वरित विश्लेषण की सुविधा के लिए CodeQL क्वेरी सूट मौजूद हैं, इन सूटों से लौटाए गए परिणामों में महत्वपूर्ण झूठी सकारात्मक दरें हो सकती हैं। इसके अलावा, ये सूट पूर्वनिर्धारित क्वेरी पर निर्भर करते हैं जो वेरिएंट विश्लेषण का समर्थन नहीं करते हैं और व्यक्तिगत कोडबेस के लिए अनुकूलित नहीं होते हैं। इस प्रकार, ओपन-सोर्स प्रोजेक्ट अक्सर कमज़ोरी रिपोर्टों का खंडित तरीके से जवाब देते हैं, जिससे संभावित वेरिएंट छूट जाते हैं।
C0deVari4nt डेवलपर्स को अपने स्वयं के CodeQL क्वेरी लिखने के महत्वपूर्ण ओवरहेड के बिना आसानी से वेरिएंट विश्लेषण करने के लिए एक प्लेटफ़ॉर्म प्रदान करता है। यह डेवलपर्स को कोडबेस-विशिष्ट जानकारी जैसे कि किसी कमज़ोरी का विशेष स्रोत और सिंक प्रदान करके CodeQL टेम्पलेट्स को अनुकूलित करने की सुविधा देता है। परिणाम vis.js द्वारा संचालित ग्राफ़ डेटाबेस दृश्य में विज़ुअलाइज़ किए जाएंगे, ताकि डेवलपर्स तुरंत संभावित वेरिएंट की पहचान कर सकें। इस प्रकार, डेवलपर्स एक ही कमज़ोरी रिपोर्ट से बग की पूरी श्रेणियों को प्रभावी ढंग से संबोधित करने में सक्षम होंगे।
C0deVari4nt को Python, CodeQL, vis.js और React का उपयोग करके एक इंटरैक्टिव GUI एप्लिकेशन के रूप में बनाया गया है, जो उपयोगकर्ता इनपुट लेता है और विभिन्न कमज़ोर कोड पथों के बीच संबंधों को प्रदर्शित करता है।

C0deVari4nt में निम्नलिखित 2 मुख्य घटक शामिल हैं:
क्लाइंट इंटरफ़ेस के अधिक विवरण नीचे देखे जा सकते हैं:

dbextractor.py <codeql db zip file> चलाकर codeql डेटाबेस सामग्री को अनज़िप करेंpip install -r requirements.txtuvicorn main:app --reload चलाएँnpm inpm start चलाएँ
strcat फ़ंक्शंस की सभी कॉल खोजेंstrncpy फ़ंक्शंस की सभी कॉल खोजेंsnprintf कॉल के रिटर्न मान पर बाउंड जाँच न होने के सभी मामले खोजें
malloc, calloc या realloc की सभी कॉल खोजेंisAdditionalTaintStep विधि का उपयोग करेंisAdditionalTaintStep विधि का उपयोग करेंनिम्नलिखित recvfrom को स्रोत, mempool_alloc को अतिरिक्त दूषण चरण और memcpy को सिंक के रूप में लेने वाली क्वेरी के लिए CodeQL परिणामों को दर्शाता है:

इस परिणाम में कुल 27 विभिन्न कोड पथों में 180 नोड हैं। परिणाम नीचे एक सरल neo4j इंटरफ़ेस में दर्शाए गए हैं:

इस क्वेरी को हमारे उपकरण के माध्यम से चलाने पर, हम प्रत्येक नोड, स्रोत और सिंक की डुप्लिकेट घटनाओं की पहचान करने और नोड्स के संबंधों को मर्ज करने में सक्षम थे।
इसके परिणामस्वरूप कुल 11 अद्वितीय नोड के साथ काफी साफ ग्राफ़ प्राप्त हुआ, जबकि सभी 27 अद्वितीय कोड पथ बरकरार रहे:

परिणामों को हमारी पथ लेबलिंग सुविधा के माध्यम से उनके संबंधित पथों में और वर्गीकृत किया जा सकता है:

