
Jar फ़ाइलों के लिए स्कैनर जो CVE-2021-44228 के प्रति असुरक्षित हो सकती हैं
log4j CVE-2021-44228 मुद्दे के प्रति संवेदनशील अनुप्रयोगों का पता jar, war, और ear फ़ाइलों को स्कैन करके JndiLookup.class की उपस्थिति खोजने के माध्यम से लगाया जा सकता है।
आप जिस प्लेटफ़ॉर्म की जाँच कर रहे हैं, उसके आधार पर PowerShell या Python3 स्क्रिप्ट चलाना अधिक उपयुक्त हो सकता है। दोनों ही मामलों में, वैकल्पिक तर्क वह शीर्ष-स्तरीय निर्देशिका है जिसे आप अपनी खोज शुरू करने के लिए उपयोग करना चाहते हैं।
खोजा गया कोई भी फ़ाइल यह निर्धारित करने के लिए जाँच के योग्य है कि उसका उपयोग करने वाला अनुप्रयोग संवेदनशील है या नहीं। किसी भी उपस्थित JndiLookup.class के लिए, log4j आमतौर पर jar फ़ाइल नाम में संस्करण शामिल करता है। उदाहरण के लिए, log4j-core-2.14.1.jar पर एक हिट एक संवेदनशील अनुप्रयोग का संकेत होगा। वैकल्पिक रूप से, log4j-core-2.16.jar भी हिट उत्पन्न कर सकता है क्योंकि JndiLookup कोड log4j के 2.16 संस्करण में अभी भी मौजूद है, लेकिन यह डिफ़ॉल्ट रूप से अक्षम है। अधिक जानकारी के लिए VU#930724 देखें।
उदाहरण के लिए, यहाँ स्कैनर के PowerShell संस्करण का एक आह्वान है:

इसी प्रकार, यहाँ Python3 संस्करण का एक आह्वान है:

अंत में, यहाँ Bash संस्करण का एक आह्वान है:

ध्यान दें कि इस स्क्रिप्ट के Bash और Python संस्करण डिज़ाइन द्वारा स्कैन को एकल फ़ाइलसिस्टम तक सीमित कर देंगे।
PowerShell संस्करण के साथ, स्कैन करने के लिए स्थानों को स्क्रिप्ट में पाइप किया जा सकता है ताकि जाँच की जाने वाली चीज़ों पर नियंत्रण हो। उदाहरण के लिए, paths.txt फ़ाइल में निहित पथों की सूची को स्कैन करने के लिए:
get-content .\paths.txt | .\checkjndi.ps1
आइए अपने Windows स्कैन निष्पादन पर पहली हिट देखें:
WARNING: C:\tmp\2.15\log4j-core-2.15.0.jar contains org/apache/logging/log4j/core/lookup/JndiLookup.class
jar नाम के आधार पर, यह log4j 2.15 की एक लाइब्रेरी है। जबकि log4j का यह संस्करण CVE-2021-44228 को ठीक करता है, फिर भी इसमें एक खामी थी जिसे CVE-2021-45046 के रूप में रेखांकित किया गया है। CVE-2021-45046 का प्रभाव केवल कुछ Java अनुप्रयोगों के लिए सेवा से वंचित करना है जो log4j 2.15 का उपयोग करते हैं। Java अनुप्रयोगों के लिए जो log4j के 2.15 से पहले के संस्करणों का उपयोग करते हैं और जो CVE-2021-45046 के लागू होने की पूर्वापेक्षाओं को भी पूरा करते हैं, प्रभाव RCE है।
आइए दूसरी हिट देखें:
C:\tmp\2.16\log4j-core-2.16.0.jar contains org/apache/logging/log4j/core/lookup/JndiLookup.class ** BUT APPEARS TO BE PATCHED **
इस jar फ़ाइल में log4j का 2.16 संस्करण है, जो CVE-2021-44228 के प्रति संवेदनशील नहीं है। यह परिणाम जानकारी के उद्देश्य से रिपोर्ट किया गया है, जो दर्शाता है कि एक विक्रेता ने अपने उत्पाद को पैच किया है।
आइए तीसरी हिट देखें:
WARNING: C:\tmp\ghidra_10.0_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 के प्रति संवेदनशील हैं।
आपको इन स्क्रिप्ट्स में से किसी एक द्वारा रिपोर्ट की गई किसी भी हिट की जाँच करनी चाहिए, और पुष्टि करनी चाहिए कि या तो log4j संस्करण वास्तव में निश्चित 2.16 संस्करण है, या सॉफ़्टवेयर का निश्चित संस्करण प्राप्त करने के लिए अपने सॉफ़्टवेयर विक्रेता से संपर्क करें। वैकल्पिक रूप से, VU#930724 में इस बारे में जानकारी है कि कैसे JndiLookup.class को संवेदनशील jar फ़ाइलों से हटाया जा सकता है।
स्कैनर के PowerShell संस्करण में अतिरिक्त त्रुटि रिपोर्टिंग है जब फ़ाइलों या निर्देशिकाओं की जाँच नहीं की जा सकती। विशेष रूप से, Unable to scan त्रुटियाँ जो UnauthorizedAccessException रिपोर्ट करती हैं, किसी निर्देशिका और/या फ़ाइल तक पहुँचने में अनुमति समस्या का संकेत है। Unable to scan त्रुटियाँ जो InvalidDataException रिपोर्ट करती हैं, आमतौर पर एक दूषित संग्रह के कारण होती हैं।