
फ़ाइल-सिस्टम स्कैनर जो संकलित जावा क्लासेज़ (nested archives सहित) का विश्लेषण करके कमजोर Log4J संस्करणों (CVE-2021-44228, CVE-2021-45046) का पता लगाता है। लिनक्स, विंडोज़ और मैक पर काम करता है।

स्कैनर जो कमजोर Log4J संस्करणों का पता लगाता है, ताकि टीमों को CVE-2021-44228 (गंभीर), CVE-2021-45046, CVE-2021-45105, और CVE-2021-44832 के प्रति अपने जोखिम का आकलन करने में मदद मिल सके। यह पूर्ण फ़ाइल-सिस्टम, जिसमें सभी स्थापित एप्लिकेशन शामिल हैं, की सावधानीपूर्वक जांच करके Log4J इंस्टेंस खोज सकता है। यह कई परतों में छिपे Log4J इंस्टेंस को भी ढूँढने में सक्षम है। Linux, Windows, और Mac पर काम करता है, और उन सभी जगहों पर भी जहाँ Java चलता है!
log4j-core लाइब्रेरी के विरुद्ध हिट की रिपोर्ट करता है। log4j-api के बारे में क्या?वर्तमान में log4j-core संस्करण 2.3.2, 2.12.4, और 2.17.1 को _SAFE_ के रूप में, 2.3.1, 2.12.2, 2.12.3, 2.15.0, 2.16.0, और 2.17.0 को _OKAY_ के रूप में, और अन्य सभी संस्करणों को _VULNERABLE_ के रूप में रिपोर्ट करता है (हालांकि यह पूर्व-2.0-beta9 को _POTENTIALLY_SAFE_ के रूप में रिपोर्ट करता है)। यह पुराने log4j-1.x संस्करणों को _OLD_ के रूप में रिपोर्ट करता है।
यह executable spring-boot jars/wars, uber jars में मिश्रित निर्भरताओं, shaded jars, और यहाँ तक कि फ़ाइल-सिस्टम पर बिना संपीड़न के पड़े exploded jar फ़ाइलों (उर्फ *.class) में log4j का सही-सही पता लगा सकता है।
हम वर्तमान में परीक्षण के लिए उपयोग किए जाने वाले log4j-samples का एक संग्रह बनाए रखते हैं।
java -jar log4j-detector-2021.12.29.jar ./samples
-- github.com/mergebase/log4j-detector v2021.12.29 (by mergebase.com) analyzing paths (could take a while).
-- Note: specify the '--verbose' flag to have every file examined printed to STDERR.
false-hits/log4j-core-2.12.2.jar contains Log4J-2.x == 2.12.2 _OKAY_
false-hits/log4j-core-2.12.3.jar contains Log4J-2.x == 2.12.3 _OKAY_
false-hits/log4j-core-2.12.4.jar contains Log4J-2.x == 2.12.4 _SAFE_
false-hits/log4j-core-2.15.0.jar contains Log4J-2.x == 2.15.0 _OKAY_
false-hits/log4j-core-2.16.0.jar contains Log4J-2.x == 2.16.0 _OKAY_
false-hits/log4j-core-2.17.0.jar contains Log4J-2.x == 2.17.0 _OKAY_
false-hits/log4j-core-2.17.1.jar contains Log4J-2.x >= 2.17.1 _SAFE_
false-hits/log4j-core-2.3.1.jar contains Log4J-2.x == 2.3.1 _OKAY_
false-hits/log4j-core-2.3.2.jar contains Log4J-2.x == 2.3.2 _SAFE_
true-hits/log4j-core-2.0-beta9.jar contains Log4J-2.x >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
true-hits/log4j-core-2.10.0.jar contains Log4J-2.x >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.10.0.zip contains Log4J-2.x >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.11.0.jar contains Log4J-2.x >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.11.1.jar contains Log4J-2.x >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.11.2.jar contains Log4J-2.x >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.12.0.jar contains Log4J-2.x >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.12.1.jar contains Log4J-2.x >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.14.0.jar contains Log4J-2.x >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.14.1.jar contains Log4J-2.x >= 2.10.0 _VULNERABLE_
true-hits/log4j-core-2.2.jar contains Log4J-2.x >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
true-hits/log4j-core-2.3.jar contains Log4J-2.x >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
true-hits/log4j-core-2.4.1.jar contains Log4J-2.x >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
true-hits/log4j-core-2.4.jar contains Log4J-2.x >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
true-hits/log4j-core-2.9.1.jar contains Log4J-2.x >= 2.0-beta9 (< 2.10.0) _VULNERABLE_
old-hits/log4j-1.1.3.jar contains Log4J-1.x <= 1.2.17 _OLD_
old-hits/log4j-1.2.17.jar contains Log4J-1.x <= 1.2.17 _OLD_
old-hits/log4j-core-2.0-beta2.jar contains Log4J-2.x <= 2.0-beta8 _POTENTIALLY_SAFE_ (Did you remove JndiLookup.class?)
_VULNERABLE_ -> आपको इस फ़ाइल को अपग्रेड करने या हटाने की आवश्यकता है।
_OKAY_ -> हम इसे Log4J संस्करण 2.3.1, 2.12.2, 2.12.3, 2.15.0, 2.16.0, और 2.17.0 के लिए रिपोर्ट करते हैं। हम 2.17.1 में अपग्रेड करने की सलाह देते हैं।
_SAFE_ -> हम वर्तमान में इसे केवल Log4J संस्करण 2.3.2, 2.12.4, और 2.17.1 (और उससे ऊपर) के लिए रिपोर्ट करते हैं।
_OLD_ -> आप CVE-2021-44228 से सुरक्षित हैं, लेकिन आपको अपग्रेड करने की योजना बनानी चाहिए क्योंकि Log4J 1.2.x 7 वर्षों से EOL है और इसमें कई ज्ञात कमजोरियाँ हैं।
_POTENTIALLY_SAFE_ -> "JndiLookup.class" फ़ाइल मौजूद नहीं है, या तो क्योंकि आपका Log4J संस्करण बहुत पुराना है (पूर्व-2.0-beta9), या क्योंकि किसी ने पहले ही इस फ़ाइल को हटा दिया है। सुनिश्चित करें कि आपकी टीम या कंपनी के किसी व्यक्ति ने "JndiLookup.class" हटाया है, यदि ऐसा है, क्योंकि हमलावर समझौता किए गए सिस्टम तक अतिरिक्त प्रतिस्पर्धी हमलावरों की पहुँच को रोकने के लिए स्वयं इस फ़ाइल को हटाने के लिए जाने जाते हैं।
java -jar log4j-detector-2021.12.29.jar
Usage: java -jar log4j-detector-2021.12.29.jar [--verbose] [--json] [--stdin] [--exclude=X] [paths to scan...]
--json - STDOUT परिणामों को JSON में आउटपुट करें। (त्रुटियाँ/चेतावनियाँ अभी भी STDERR पर उत्सर्जित होती हैं)
--stdin - अन्वेषण करने के लिए STDIN से पथ पढ़ें (प्रति पंक्ति एक पथ)
--exclude=X - जहाँ X एक JSON सूची है जिसमें बहिष्कृत करने के लिए पूर्ण पथ शामिल हैं। यह मान्य JSON होना चाहिए।
उदाहरण: --exclude='["/dev", "/media", "Z:\TEMP"]'
निकास कोड: 0 = कोई कमजोर Log4J संस्करण नहीं मिला।
1 = कम से कम एक विरासत Log4J 1.x संस्करण मिला।
2 = कम से कम एक कमजोर Log4J संस्करण मिला।
के बारे में - MergeBase log4j detector (संस्करण 2021.12.29)
दस्तावेज़ - https://github.com/mergebase/log4j-detector
(C) कॉपीराइट 2021 Mergebase Software Inc. आपको GPLv3 के माध्यम से लाइसेंस प्राप्त।
git clone https://github.com/mergebase/log4j-detector.git
cd log4j-detector/
mvn install
java -jar target/log4j-detector-latest.jar
हम log4j नमूनों का एक संग्रह यहाँ बनाए रखते हैं: https://github.com/mergebase/log4j-samples
GPL संस्करण 3.0
Java कंपाइलर स्ट्रिंग लिटरल को सीधे संकलित *.class फ़ाइलों में संग्रहीत करता है। यदि log4j-detector आपके फ़ाइल-सिस्टम पर "JndiManager.class" नाम की फ़ाइल का पता लगाता है, तो यह इस स्ट्रिंग के लिए उस फ़ाइल की जाँच करता है: "Invalid JNDI URI - {}". पता चलता है कि वह विशिष्ट स्ट्रिंग लिटरल केवल Log4J के पैच किए गए संस्करण (संस्करण 2.15.0) में मौजूद है। Log4J के कोई भी संस्करण जिनमें वह स्ट्रिंग नहीं है, कमजोर हैं।