
Log4J CVE-2021-44228 : प्रशमन चीट शीट
अपडेट - 28-Dec-2021
CVE-2021-44832: Apache Log4j2, JDBC Appender के माध्यम से RCE के लिए असुरक्षित है जब हमलावर कॉन्फ़िगरेशन को नियंत्रित करता है।
Log4j 2.17.1 (Java 8), 2.12.4 (Java 7) और 2.3.2 (Java 6) में ठीक किया गया
अपडेट - 17-Dec-2021
रातोंरात, Apache द्वारा खुलासा किया गया कि Log4j संस्करण 2.16 भी डेनियल ऑफ सर्विस हमले के माध्यम से असुरक्षित है, जिसका प्रभाव पूर्ण एप्लिकेशन क्रैश है, इसकी गंभीरता को उच्च (7.5) के रूप में वर्गीकृत किया गया है, CVE-2021-45105 जारी किया गया है, और Apache द्वारा एक नया फिक्स्ड संस्करण (2.17) प्रकाशित किया गया है, जिसमें अपग्रेड करने की अनुशंसा की जाती है।
पृष्ठभूमि:
इंटरनेट पर Apache की Java के लिए लोकप्रिय Log4J लॉगिंग लाइब्रेरी में एक 0-day भेद्यता (जो रिमोट कोड निष्पादन करा सकती है) के बारे में चर्चा जोरों पर थी। यह विशेष भेद्यता–जिसे CVE-2021-44228 के रूप में ट्रैक किया गया है, जिसका CVSS स्कोर अधिकतम "क्रिटिकल" 10 है–Log4J की लुकअप क्षमता में निहित है, जो JNDI (Java Naming and Directory Interface) के साथ संयुक्त है। यह समस्या व्यापक है क्योंकि कई डेवलपर्स अनजान थे कि Log4J का उपयोग अनफ़िल्टर्ड इनपुट के साथ करना खतरनाक था।
सबसे महत्वपूर्ण प्रभाव यह है कि एक हमलावर लॉगर तक एक स्ट्रिंग पहुँचा सकता है, जिसे Log4J द्वारा संसाधित करने पर, मनमाना कोड निष्पादित होता है। इसके पहले उदाहरणों में ${jndi:ldap} पथ का उपयोग किया गया था, जो रिमोट URL से मनमाना कोड लोड करने का कारण बन सकता है। यह पथ नए Java रनटाइम के उपयोग से आंशिक रूप से शमित होता है जो डिफ़ॉल्ट रूप से URL-आधारित क्लास लोडर को ब्लॉक करते हैं। दुर्भाग्य से, Java का आधुनिक संस्करण शोषण को रोकने के लिए पर्याप्त नहीं हो सकता है, क्योंकि एप्लिकेशन स्वयं ऐसी क्लासेस उजागर कर सकता है जिनका उपयोग मनमाना कोड चलाने के लिए किया जा सकता है।
JNDI आर्किटेक्चर:

विभिन्न वातावरणों के लिए शमन उपाय:
अपडेट - 17-Dec-2021
सुरक्षा भेद्यता CVE-2021-45105
विवरण:
Apache Log4j2 संस्करण 2.0-alpha1 से 2.16.0 तक स्व-संदर्भित लुकअप से अनियंत्रित रिकर्सन से सुरक्षा प्रदान नहीं करते थे। जब लॉगिंग कॉन्फ़िगरेशन Context Lookup के साथ एक गैर-डिफ़ॉल्ट
Pattern Layout का उपयोग करता है (उदाहरण के लिए, $${ctx:loginId}), तो Thread Context Map (MDC) इनपुट डेटा पर नियंत्रण रखने वाले हमलावर दुर्भावनापूर्ण इनपुट डेटा तैयार कर सकते हैं जिसमें
एक रिकर्सिव लुकअप होता है, जिसके परिणामस्वरूप StackOverflowError उत्पन्न होता है जो प्रक्रिया को समाप्त कर देगा। इसे DOS (डेनियल ऑफ सर्विस) हमले के रूप में भी जाना जाता है।
शमन उपाय:
संस्करण 2.17.0 (Java 8 के लिए) से, केवल कॉन्फ़िगरेशन में लुकअप स्ट्रिंग्स रिकर्सिव रूप से विस्तारित होती हैं; किसी भी अन्य
उपयोग में, केवल शीर्ष-स्तरीय लुकअप हल किया जाता है, और कोई भी नेस्टेड लुकअप हल नहीं किया जाता है।
पिछले रिलीज़ में इस समस्या को यह सुनिश्चित करके कम किया जा सकता है कि आपकी लॉगिंग कॉन्फ़िगरेशन निम्न कार्य करती है:
लॉगिंग कॉन्फ़िगरेशन में PatternLayout में, ${ctx:loginId} या $${ctx:loginId} जैसे Context Lookups को Thread Context Map पैटर्न (%X, %mdc, या %MDC) से बदलें।
अन्यथा, कॉन्फ़िगरेशन में, ${ctx:loginId} या $${ctx:loginId} जैसे Context Lookups के संदर्भ हटा दें जहाँ वे एप्लिकेशन के बाहरी स्रोतों जैसे HTTP हेडर या उपयोगकर्ता इनपुट से उत्पन्न होते हैं।
अपडेट - 13-Dec-2021
** Log4j(रिलीज़ 2.16.0 – 2021-12-13) में दो बेहतर सुविधाएँ हैं :**
---------------!!मैसेज लुकअप डिफ़ॉल्ट रूप से अक्षम होने के कारण उपलब्ध नवीनतम संस्करण में अपग्रेड करने की अत्यधिक अनुशंसा की जाती है।!!------------
https://logging.apache.org/log4j/2.x/changes-report.html#a2.16.0
JNDI को डिफ़ॉल्ट रूप से अक्षम करें। JNDI की अनुमति देने के लिए log4j2.enableJndi को true पर सेट करना आवश्यक है।
Message Lookups के लिए समर्थन पूरी तरह से हटाएँ
नया अपडेट:
------------------CVE-2021-45046-----------------
Apache Log4j2 Thread Context Message Pattern और Context Lookup Pattern एक डेनियल ऑफ सर्विस हमले के प्रति असुरक्षित हैं।
शमन उपाय:
Log4j 1.x शमन: यह भेद्यता Log4j 1.x को प्रभावित नहीं करती है।
Log4j 2.x शमन: नीचे दी गई शमन तकनीकों में से एक को लागू करें।
Java 8 (या बाद के) उपयोगकर्ताओं को रिलीज़ 2.16.0 में अपग्रेड करना चाहिए। Java 7 की आवश्यकता वाले उपयोगकर्ताओं को उपलब्ध होने पर रिलीज़ 2.12.2 में अपग्रेड करना चाहिए (कार्य प्रगति पर है, जल्द उपलब्ध होने की उम्मीद है)।
अन्यथा, क्लासपाथ से JndiLookup क्लास हटाएँ: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
ध्यान दें कि केवल log4j-core JAR फ़ाइल इस भेद्यता से प्रभावित होती है। केवल log4j-api JAR फ़ाइल का उपयोग करने वाले एप्लिकेशन, जिनमें log4j-core JAR फ़ाइल नहीं है, इस भेद्यता से प्रभावित नहीं होते हैं।
------------------CVE-2021-44228-------------------
शमन उपाय
Log4j 1.x शमन: Log4j 1.x में Lookups नहीं होते हैं इसलिए जोखिम कम है। Log4j 1.x का उपयोग करने वाले एप्लिकेशन केवल तभी इस हमले के प्रति असुरक्षित होते हैं जब वे अपने
कॉन्फ़िगरेशन में JNDI का उपयोग करते हैं। इस भेद्यता के लिए एक अलग CVE (CVE-2021-4104) दर्ज किया गया है। शमन के लिए: अपनी लॉगिंग कॉन्फ़िगरेशन की जाँच करें ताकि यह सुनिश्चित हो कि कोई JMSAppender कॉन्फ़िगर नहीं है।
JMSAppender के बिना Log4j 1.x कॉन्फ़िगरेशन इस भेद्यता से प्रभावित नहीं होते हैं।
Log4j 2.x शमन: नीचे दी गई शमन तकनीकों में से एक को लागू करें।
Java 8 (या बाद के) उपयोगकर्ताओं को रिलीज़ 2.16.0 में अपग्रेड करना चाहिए।
Java 7 की आवश्यकता वाले उपयोगकर्ताओं को उपलब्ध होने पर रिलीज़ 2.12.2 में अपग्रेड करना चाहिए (कार्य प्रगति पर है, जल्द उपलब्ध होने की उम्मीद है)।
अन्यथा, क्लासपाथ से JndiLookup क्लास हटाएँ: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
ध्यान दें कि केवल log4j-core JAR फ़ाइल इस भेद्यता से प्रभावित होती है। केवल log4j-api JAR फ़ाइल का उपयोग करने वाले एप्लिकेशन, जिनमें log4j-core JAR फ़ाइल शामिल नहीं है, इस भेद्यता से प्रभावित नहीं होते हैं।
1. Apache Log4j:
रिलीज़ >=2.10** में और
रिलीज़ >=2.0-beta9 और <=2.10.0 के लिए
2. pom.xml फिक्स:
3. Azure App Service (Windows और Linux):
4. कोई भी कंटेनरीकृत एप्लिकेशन:
5. Azure Functions:
6. Apache Log4j के लिए हॉटपैच
7. Defender for Cloud Log4j भेद्यताओं से प्रभावित मशीनों को कैसे ढूँढता है
8. Azure Sentinel और Azure WAF लॉग पर डिटेक्शन
9.Maven प्लग-इन कॉन्फ़िगरेशन जो भविष्य के बिल्ड में log4j2 असुरक्षित संस्करणों पर प्रतिबंध लगाता है
1. Apache Log4j:
CVE-2021-44228: Apache Log4j2 JNDI सुविधाएँ हमलावर-नियंत्रित LDAP और अन्य JNDI संबंधित एंडपॉइंट्स से सुरक्षा प्रदान नहीं करती हैं।
प्रभावित संस्करण: सभी log4j-core संस्करण >=2.0-beta9 और <=2.14.1 Apache Log4j <=2.14.1 में कॉन्फ़िगरेशन, लॉग संदेशों और पैरामीटरों में उपयोग की जाने वाली JNDI सुविधाएँ हमलावर-नियंत्रित LDAP और अन्य JNDI संबंधित एंडपॉइंट्स से सुरक्षा प्रदान नहीं करती हैं। जब मैसेज लुकअप प्रतिस्थापन सक्षम होता है, तो एक हमलावर जो लॉग संदेशों या लॉग संदेश पैरामीटरों को नियंत्रित कर सकता है, LDAP सर्वर से लोड किए गए मनमाने कोड को निष्पादित कर सकता है। Log4j 2.15.0 से, यह व्यवहार डिफ़ॉल्ट रूप से अक्षम कर दिया गया है।