
मूल स्क्रिप्ट और रिपॉजिटरी: https://github.com/CERTCC/CVE-2021-44228_scanner
संशोधन: एलेक्स पेना
log4j CVE-2021-44228 भेद्यता के प्रति संवेदनशील अनुप्रयोगों का पता jar, war, और ear फ़ाइलों को स्कैन करके लगाया जा सकता है, ताकि JndiLookup.class की उपस्थिति खोजी जा सके।
खोजी गई कोई भी फ़ाइल जाँच के योग्य है, ताकि यह निर्धारित किया जा सके कि उसे उपयोग करने वाला अनुप्रयोग संवेदनशील है या नहीं। जब भी कोई JndiLookup.class मौजूद हो, log4j आमतौर पर jar फ़ाइल नाम में संस्करण शामिल करता है। उदाहरण के लिए, log4j-core-2.14.1.jar पर एक हिट संवेदनशील अनुप्रयोग का संकेत हो सकती है। वैकल्पिक रूप से, log4j-core-2.16.jar भी हिट उत्पन्न कर सकता है, क्योंकि JndiLookup कोड log4j के 2.16 संस्करण में अभी भी मौजूद है, लेकिन यह डिफ़ॉल्ट रूप से अक्षम है। अधिक जानकारी के लिए VU#930724 देखें।
पैरामीटर
-Force Allow scanning of system and hidden files (The Force parameter doesn't override security restrictions)
-Verbose Extra scanning output and messages
वर्तमान निर्देशिका स्कैन करें
.\checkjndi.ps1
test_folder निर्देशिका को स्कैन करें, अतिरिक्त आउटपुट के साथ और सिस्टम/छिपी हुई फ़ाइलों को स्कैन करते हुए
.\checkjndi.ps1 -Force -Verbose c:\Users\alex\Desktop\test_folder
उदाहरण के लिए, यहाँ स्कैनर के PowerShell संस्करण का एक आह्वान है:

स्कैन किए जाने वाले स्थानों को स्क्रिप्ट में पाइप किया जा सकता है, ताकि यह नियंत्रण रहे कि क्या जाँचा जाता है। उदाहरण के लिए, paths.txt फ़ाइल में निहित पथों की सूची को स्कैन करने के लिए:
get-content .\paths.txt | .\checkjndi.ps1
आइए हमारे Windows स्कैन निष्पादन की पहली हिट को देखें:
C:\Users\unst0\Desktop\test_folder\apache-log4j-2.17.1-bin.zip contains apache-log4j-2.17.1-bin/log4j-core-2.17.1.jar contains org/apache/logging/log4j/core/lookup/JndiLookup.class ** BUT APPEARS TO BE PATCHED **
इस jar फ़ाइल में log4j का 2.17 संस्करण है, जो CVE-2021-44228 के प्रति संवेदनशील नहीं है। यह परिणाम सूचना के उद्देश्य से रिपोर्ट किया गया है, जो दर्शाता है कि एक विक्रेता ने अपने उत्पाद को पैच कर दिया है।
आइए दूसरी हिट को देखें:
WARNING: C:\Users\unst0\Desktop\test_folder\ghidra_10.0.4_PUBLIC_20210928.zip contains ghidra_10.0.4_PUBLIC/Ghidra/Framework/Generic/lib/log4j-core-2.12.1.jar contains org/apache/logging/log4j/core/lookup/JndiLookup.class
यहाँ हम देख सकते हैं कि Ghidra log4j संस्करण 2.12.1 का उपयोग करता है, और इसलिए हमें इसे संवेदनशील मान लेना चाहिए। और वास्तव में, Ghidra के 10.1 से पहले के संस्करण CVE-2021-44228 के प्रति संवेदनशील हैं।
आइए तीसरी हिट को देखें:
WARNING: C:\Users\unst0\Desktop\test_folder\server.jar contains META-INF/libraries/org/apache/logging/log4j/log4j-core/2.14.1/log4j-core-2.14.1.jar contains org/apache/logging/log4j/core/lookup/JndiLookup.class
यहाँ हम देख सकते हैं कि minecraft server.jar फ़ाइल log4j संस्करण 2.14.1 का उपयोग करती है, और इसलिए हमें इसे संवेदनशील मान लेना चाहिए। और वास्तव में, Minecraft: Java Edition सर्वर के 1.18.1 से पहले के संस्करण CVE-2021-44228 के प्रति संवेदनशील हैं।
आपको इन दोनों स्क्रिप्टों में से किसी भी द्वारा रिपोर्ट की गई किसी भी हिट की जाँच करनी चाहिए, और पुष्टि करनी चाहिए कि या तो log4j संस्करण वास्तव में निश्चित 2.16 संस्करण है, या अपने सॉफ़्टवेयर विक्रेता से संपर्क करके सॉफ़्टवेयर का एक निश्चित संस्करण प्राप्त करें। वैकल्पिक रूप से, VU#930724 में जानकारी है कि संवेदनशील jar फ़ाइलों से JndiLookup.class कैसे हटाया जा सकता है।
स्कैनर के PowerShell संस्करण में अतिरिक्त त्रुटि रिपोर्टिंग होती है जब फ़ाइलों या निर्देशिकाओं की जाँच नहीं की जा सकती है। विशेष रूप से, UnauthorizedAccessException की रिपोर्ट करने वाली कोई भी Unable to scan त्रुटि किसी निर्देशिका और/या फ़ाइल तक पहुँचने में अनुमति की समस्या का संकेत देती है। InvalidDataException की रिपोर्ट करने वाली कोई भी Unable to scan त्रुटि आमतौर पर दूषित संग्रह के कारण होती है।