
स्थानीय बाइटकोड स्कैनर Log4JShell भेद्यता के लिए (CVE-2021-44228)
Log4jShell बाइटकोड डिटेक्टर एक ओपन सोर्स टूल है जो यह पहचानने में मदद करता है कि कोई jar फ़ाइल क्रिटिकल CVE-2021-44228 से प्रभावित है या नहीं। यह टूल jar फ़ाइल को स्कैन करता है और उसके अंदर मौजूद क्लासेज़ के लिए पूर्व-गणना किए गए हैशेज़ के एक सेट से तुलना करता है। ये हैश Maven Central पर आर्टिफैक्ट्स के लिए पूर्व-गणना किए गए हैं।
महत्वपूर्ण अपडेट: हमने Maven Central पर प्रभावित आर्टिफैक्ट्स की सूची का विस्तार किया है। इस सूची में 18.816 आर्टिफैक्ट्स शामिल हैं। ये आर्टिफैक्ट्स या तो log4j-core को घोषित निर्भरता के रूप में उपयोग करते हैं, या हमने उनके अंदर .class फ़ाइलें पहचानी हैं जो log4j-core के प्रभावित संस्करणों से मेल खाती हैं।
java -cp <PATH_TO_DOWNLOADED_JAR> de.codeshield.log4jshell.Log4JDetector <ABSOLUTE_PATH_TO_JAR_TO_CHECK> चलाएँ।यदि jar प्रभावित है, तो टूल कमांड-लाइन पर जानकारी आउटपुट करता है:
CVE-2021-44228 found declared as dependency in META-INF/maven/org.apache.logging.log4j/log4j-core/pom.xml
CVE-2021-44228 found in class file org/apache/logging/log4j/core/net/JndiManager$1.class
java -cp <PATH_TO_DOWNLOADED_JAR> de.codeshield.log4jshell.Log4JProcessDetector चलाएँ।log4j में एक गंभीर रिमोट कोड एक्ज़ीक्यूशन कमजोरी पाई गई है, और संस्करण 2.0-beta9 से 2.14 तक प्रभावित हैं। इस कमजोरी को क्रिटिकल के रूप में वर्गीकृत किया गया है, क्योंकि इसने Java के सबसे अधिक उपयोग किए जाने वाले लॉगिंग लाइब्रेरीज़ में से एक log4j को प्रभावित किया। इस पर कई संदर्भ और लेख उपलब्ध हैं।
Log4j का उपयोग अधिकांश Java प्रोजेक्ट्स में लॉगिंग उद्देश्यों के लिए किया जाता है और किया जाता रहा है। अब हमें यह समझने की आवश्यकता है कि कौन से प्रोजेक्ट और लाइब्रेरी वास्तव में प्रभावित हैं। Java की निर्भरता तंत्र के अनुसार, कोई एप्लिकेशन तब भी प्रभावित हो सकता है यदि वह अप्रत्यक्ष रूप से संवेदनशील लाइब्रेरी संस्करण को शामिल करता है। एक प्रोजेक्ट A एक लाइब्रेरी lib को अप्रत्यक्ष रूप से शामिल करता है, यदि A की कोई प्रत्यक्ष निर्भरता B का lib पर निर्भरता है। यह जाँचने का एक सरल तरीका कि कोई प्रभावित है या नहीं, maven निर्भरता ट्री का उपयोग करके किया जा सकता है:
उदाहरण: किसी maven प्रोजेक्ट पर mvn dependency:tree कमांड निष्पादित करें।
[INFO] exampleProject:mainProject:jar:0.0.1-SNAPSHOT
[INFO] +- exampleProject:lib-using-log4j:jar:0.0.1-SNAPSHOT:compile
[INFO] | \- org.apache.logging.log4j:log4j-core:jar:2.14.1:compile
हालाँकि, यह जाँच केवल एक प्रारंभिक संकेत है और निम्नलिखित कारणों से पर्याप्त नहीं है:
Java प्रोग्राम अक्सर:
परिणामस्वरूप, कोई भी लाइब्रेरी जिसका उपयोग Java प्रोजेक्ट कर रहा है, आपके प्रोजेक्ट में कमजोरी शामिल कर सकती है। एक गहन बाइटकोड विश्लेषण मदद करता है, जिसे हम इस रिपॉजिटरी के भाग के रूप में प्रकाशित कर रहे हैं।
इस टूल को बनाने के लिए चलाएँ
mvn compile
रन करने योग्य jar को असेंबल करने के लिए
mvn clean compile assembly:single का उपयोग करें
संवेदनशील क्लासेज़ के लिए हैश का सेट पूरे Maven Central रिपॉजिटरी पर पूर्व-गणना किया गया है। क्लासेज़ के हैश में वे सभी हैश शामिल हैं जिन्हें हमने फ़िंगरप्रिंटिंग तकनीक का उपयोग करके बाइटकोड-समान के रूप में पहचाना है।
पूर्व-गणना की गई जानकारी में शामिल हैं:
प्रभावित संस्करण सीमा के रूप में हमने [2.0-beta9, 2.15) को माना है संदर्भ।
यह टूल Java के लिए एक नई बाइटकोड फ़िंगरप्रिंटिंग तकनीक का उपयोग करता है जिसका आविष्कार Andreas Dann ने किया है। मूल प्रवाह इस प्रकार है।
नोट: आसान रोल आउट के लिए, यह रिपॉजिटरी संवेदनशील क्लासेज़ के SHA हैश शिप करती है; फ़िंगरप्रिंटिंग का उपयोग करके जानकारी की गणना की गई है
हैश और maven आर्टिफैक्ट्स की सूची पूर्ण नहीं है। हम नियमित रूप से सूचियों को अपडेट करेंगे।
यह टूल CodeShield के सह-संस्थापकों द्वारा सह-निर्मित किया गया था
प्रतिक्रिया का स्वागत है!
हम प्रभावित आर्टिफैक्ट्स की सूची का विस्तार करने पर काम कर रहे हैं और हमेशा अपनी पेशकश को बेहतर बनाने के लिए प्रयासरत हैं। contribution welcome
साथ ही, ⭐️ इस रिपॉजिटरी को दें यदि हमारे स्कैनर ने आपकी सहायता की!
यदि आपको सहायता की आवश्यकता है, या हमारी तकनीक के बारे में सुनना चाहते हैं, तो हमसे [email protected] पर संपर्क करें।
आपकी CodeShield टीम 💚