
# Log4j भेद्यताओं के लिए नॉर्वेजियन-भाषा मार्गदर्शिका (CVE-2021-44228, CVE-2021-45046, CVE-2021-45105, CVE-2021-4104, CVE-2019-17571) जिसमें पहचान स्क्रिप्ट, शमन चरण, और प्रभावित सिस्टम की पहचान और सुधार के लिए माइंड मैप शामिल हैं।
अपडेट 19.12.2021: Log4j में लगातार नई कमज़ोरियाँ और उन्हें इस्तेमाल करने के नए तरीके खोजे जा रहे हैं। हमने git रिपॉज़िटरी में तीन फ़्लोचार्ट (mind maps) जोड़े हैं जो क्रमशः Log4j के कमज़ोर संस्करण, कैसे जाँचें कि आप कमज़ोर हैं या नहीं और विभिन्न कमज़ोरियों के शमन का वर्णन करते हैं।
उन सॉफ़्टवेयर की पहचान करें जो Log4j संस्करण 2.x का उपयोग करते हैं
Log4j की कमज़ोरियों को शमित करें
यदि उपरोक्त संभव न हो
Pattern Layouts में Context Lookups खोजने पर विचार करेंउन सॉफ़्टवेयर की पहचान करें जो Log4j संस्करण 1.x का उपयोग करते हैं।
यदि संगठन में Log4j संस्करण 1.x का उपयोग किया जाता है, तो विक्रेता के साथ बातचीत करें और माँग करें कि वे
Log4j की कमज़ोरियों में सबसे बड़ा बुरा भेड़िया। यह कमज़ोरी तब शोषित होती है जब ${jndi:ldap://\<angrepskode>/a} स्ट्रिंग का एक रूप Log4j द्वारा लॉग किया जाता है। CVSS 10.0, RCE।
CVE-2021-44228 जितनी बड़ी नहीं, लेकिन उतनी ही भयानक। Log4j के गैर-मानक सेटअप की आवश्यकता होती है। CVSS 9.0, RCE और DoS।
CVE-2021-44228 जितनी बड़ी नहीं, और थोड़ी कम भयानक भी। CVSS 7.5, DoS
केवल Log4j संस्करण 1.x पर लागू होती है। इसके लिए आवश्यक है कि Log4j JMSAppender का उपयोग करे। CVSS 6.6, RCE शोषण के लिए आवश्यक है कि Log4j JMSAppender का उपयोग करे। या तो JMSAppender सीधे कॉन्फ़िगर किया गया हो - जो असामान्य है - या हमलावर स्वयं इसे Log4j के कॉन्फ़िगरेशन में जोड़ दे। इसके अतिरिक्त, हमलावर के पास JMSAppender के कॉन्फ़िगरेशन को बदलने की पहुँच होनी चाहिए। यदि ऐसा है, तो हमलावर के पास आमतौर पर पहले से ही सिस्टम तक पहुँच होगी। इसलिए इस कमज़ोरी को कम प्रासंगिक माना जाता है।
केवल Log4j संस्करण 1.x पर लागू होती है। इसके लिए आवश्यक है कि Log4j SocketServer का उपयोग करे। CVSS 9.8, RCE यह संबंधित सॉकेट तक नेटवर्क पहुँच रखने वाले हमलावर को कोड निष्पादन की क्षमता देती है। शोषण कोड सार्वजनिक रूप से उपलब्ध है।
Java 8 के लिए, Log4j v. 2.17.0 नवीनतम संस्करण है। यह उपरोक्त सभी कमज़ोरियों को शमित करता है।
संस्करण 2.16.0 सबसे गंभीर कमज़ोरियों को शमित करता है।
Java7 के लिए, Log4j संस्करण 2.12.2 में जारी किया गया है। यह CVE-2021-45105 को शमित नहीं करता है। Log4j की टीम यह भी कहती है कि न तो Java 6 और न ही Java 7 अब समर्थित है। यह अनिश्चित है कि वे Java7 में Log4j के लिए एक और सुरक्षा अद्यतन जारी करेंगे या नहीं।
Loïc Castel द्वारा निर्मित। github से लिया गया।
चुनौती का एक हिस्सा यह है कि ज़रूरी नहीं कि केवल वे सर्वर ही कमज़ोर हों जो सीधे इंटरनेट के संपर्क में हैं। कमज़ोरी 'श्रृंखला' में काफी पीछे स्थित ऐसे सर्वर में हो सकती है जो समान डेटा प्राप्त करता है और उसे लॉग करता है। इससे यह जानना चुनौतीपूर्ण हो सकता है कि क्या उजागर है और क्या नहीं।
फ़्लोचार्ट "Mind map #2" यह जाँचने का अच्छा अवलोकन देता है कि अपने सिस्टम में इन कमज़ोरियों की जाँच कैसे करें।

Loïc Castel द्वारा निर्मित। github से लिया गया।


- User-agent
- खोज फ़ील्ड
- उपयोगकर्ता नाम
- ...
4. कैनरी हिट्स की निगरानी करें और पता लगाएँ कि log4j कहाँ चल रहा है।
स्रोत: Florian Roth का ट्वीट
यह मैप किए गए नेटवर्क ड्राइव सहित सभी डिस्क को लेता है:
Get-PSDrive -PSProvider FileSystem | foreach {(gci ($_.Root) -rec -force -include *.jar -ea 0 | foreach {select-string "JndiLookup.class" $_} | select -exp Path)}
स्रोत: https://twitter.com/0gtweet/status/1469661769547362305
यदि आप केवल स्थानीय डिस्क की जाँच करना चाहते हैं:
Get-CimInstance win32_volume | Where-Object { $_.DriveType -eq 3 -and $_.DriveLetter -ne $null} | ForEach-Object {(gci ($_.DriveLetter+"\") -rec -force -include *.jar -ea 0 | foreach {select-string "JndiLookup.class" $_} | select -exp Path)}
स्रोत: https://twitter.com/webmastir/status/1470386184052486155?s=20
यदि आप इसके अलावा मशीन की इवेंट लॉग की जाँच करना चाहते हैं।
Get-WinEvent -ListLog * |
foreach { get-winevent @{logname=$_.logname; } -ea 0 } |
where message -match 'jndi'
#!/bin/bash
find / -name '*log4j*.jar' -print0 2>/dev/null -print0 | while read -d $'\0' log4j; do
echo -en "${log4j}: "$(unzip -p "${log4j}" | strings | grep -Po '^Implementation-Version:\s+([0-9\.]+)' | awk '{ print $NF }')"\n"
done
exit 0
root के रूप में चलाएँ
lsof | grep log4j-core
फ़्लोचार्ट "Mind map #3" शमन के विकल्पों का अवलोकन देता है।

Loïc Castel द्वारा निर्मित। github से लिया गया।
नीचे हमने शमन करने के लिए कुछ संसाधन सूचीबद्ध किए हैं।
Log4j को v 2.17.0 में अपडेट करें
Log4j को v 2.12.2 में अपडेट करें ध्यान दें यह CVE-2021-45105 को शमित नहीं करता है
⚠️ इस विधि को अब पूर्ण समाधान नहीं माना जाता है, क्योंकि यह सभी स्थितियों में सभी कमज़ोरियों को शमित नहीं करती।
[Environment]:https://raw.githubusercontent.com/helsecert/cve-2021-44228/main/:SetEnvironmentVariable(%22LOG4J_FORMAT_MSG_NO_LOOKUPS%22,%22true%22,%22Machine%22)
ध्यान दें: पुनरारंभ आवश्यक है
स्रोत: https://twitter.com/CyberRaiju/status/1469505680138661890
"‐Dlog4j2.formatMsgNoLookups=True"
कमांड लाइन उदाहरण:
JAVA_OPTS="-Dlog4j2.formatMsgNoLookups=true" teku --network mainnet
या -Xmx मान के साथ:
JAVA_OPTS="-Dlog4j2.formatMsgNoLookups=true -Xmx4g" teku
Systemd कॉन्फ़िगरेशन उदाहरण:
Environment='JAVA_OPTS="-Dlog4j2.formatMsgNoLookups=true"'
या -Xmx मान के साथ:
Environment='JAVA_OPTS="-Dlog4j2.formatMsgNoLookups=true" "-Xmx4g'
यह एप्लिकेशन के पुनरारंभ पर लोड होता है स्रोत: https://github.com/ConsenSys/teku/security/advisories/GHSA-mwfw-vm54-g3p7
jar फ़ाइल एक संग्रह (zip फ़ाइल) है और इसे खोला जा सकता है। फिर फ़ाइलों को हटाया जा सकता है। यह 7-zip जैसे टूल से मैन्युअल रूप से (चित्र देखें) या स्क्रिप्ट का उपयोग करके किया जा सकता है।
एप्लिकेशन के पुनरारंभ की आवश्यकता है
स्रोत: https://mogwailabs.de/en/blog/2021/12/vulnerability-notes-log4shell/9

[Reflection.Assembly]:https://raw.githubusercontent.com/helsecert/cve-2021-44228/main/:LoadWithPartialName(%27System.IO.Compression%27)
$JarFilLokasjon = 'C:\temp\log4j-core-2.13.0-test.jar'
$Filnavn = 'JndiLookup.class' #Denne filen slettes!
$Stream = New-Object IO.FileStream($JarFilLokasjon, [IO.FileMode]::Open)
$ZipMode = [IO.Compression.ZipArchiveMode]::Update
$Zip = New-Object IO.Compression.ZipArchive($stream, $ZipMode)
($zip.Entries | Where-Object { $Filnavn -contains $_.Name }) | ForEach-Object { $_.Delete() }
$zip.Dispose()
$stream.Close()
$stream.Dispose()
zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class