
लॉग4जे सीवीई के लिए अभिलेखागार और डॉकर छवियों में पुनरावर्ती भेद्यता स्कैनर। SHA256 हैश के माध्यम से JndiLookup.class और कमजोर संस्करणों का पता लगाता है, एक्सप्लॉइट क्लास को हटाने के लिए वैकल्पिक पैचिंग के साथ।
यह स्कैनर संग्रह सहित पथों को रिकर्सिवली स्कैन करेगा ताकि कमजोर log4j संस्करणों और org/apache/logging/log4j/core/lookup/JndiLookup.class फ़ाइलों का पता लगाया जा सके।
वर्तमान में अनुमति सूची गैर-शोषणीय संस्करणों को परिभाषित करती है, इस मामले में log4j-core 2.17.0 और 2.12.3।

| CVE | संदर्भ |
|---|---|
| CVE-2021-44228 | https://www.cve.org/CVERecord?id=CVE-2021-44228 |
| CVE-2021-45046 | https://www.cve.org/CVERecord?id=CVE-2021-45046 |
| CVE-2021-45105 | https://www.cve.org/CVERecord?id=CVE-2021-45105 |
| CVE-2021-44832 | https://www.cve.org/CVERecord?id=CVE-2021-44832 |
$ divd-2021-00038--log4j-scanner.exe {target-path}
$ divd-2021-00038--log4j-scanner {target-path}
टूल का उपयोग करके अब आप कंटेनरों को भी स्कैन कर सकते हैं:
$ ./divd-2021-00038--log4j-scanner scan-image logstash:7.16.1
या स्थानीय इमेजेज़:
$ ./divd-2021-00038--log4j-scanner scan-image --local {sha256|pattern}
$ ./divd-2021-00038--log4j-scanner scan-image --local log4shell:latest
$ ./divd-2021-00038--log4j-scanner scan-image --local 4949add9e671
# सभी स्थानीय इमेजेज़ को स्कैन करें
$ ./divd-2021-00038--log4j-scanner scan-image --local
आप इमेज को पैच भी कर सकते हैं:
$ docker save log4shell > ./log4shell-image.tar
$ ./divd-2021-00038--log4j-scanner ./log4shell-image.tar
$ ./divd-2021-00038--log4j-scanner patch ./log4shell-image.tar
$ cat ./log4shell-image.tar.patch | docker load
दोनों tar फ़ाइलों की तुलना करने पर निम्नलिखित अंतर मिलेंगे:
Binary files ../2/BOOT-INF/lib/log4j-core-2.14.1.jar and ./BOOT-INF/lib/log4j-core-2.14.1.jar differ
Binary files ../2/app/spring-boot-application.jar and ./app/spring-boot-application.jar differ
Binary files ../2/b0d66ac73d47865118cfb9a1244f1508d94ea938da1eb78c2db20bd2e1a6629a/layer.tar and ./b0d66ac73d47865118cfb9a1244f1508d94ea938da1eb78c2db20bd2e1a6629a/layer.tar differ
Only in ./org/apache/logging/log4j/core/lookup: JndiLookup.class
हमने फ़ाइलों को रिकर्सिवली पैच करने के लिए प्रारंभिक समर्थन जोड़ा है। यह बहुत प्रायोगिक है, इस सुविधा से सावधान रहें। वर्तमान में पैचिंग केवल आर्काइव (jar / tar) फ़ाइलों के साथ काम करती है। पैच एक नई .patch फ़ाइल बनाएगा जिसे मूल फ़ाइल को बदलने की आवश्यकता होती है। यह जानबूझकर एक मैन्युअल प्रक्रिया है, क्योंकि इसे सेवाओं को पुनरारंभ करने के साथ समयबद्ध करने की आवश्यकता होती है। बदलने से पहले मूल फ़ाइल का बैकअप बनाना सुनिश्चित करें। पैचिंग के बाद आप पुनः स्कैन कर सकते हैं ताकि सुनिश्चित हो सके कि आप कोई फ़ाइल नहीं चूके। वर्तमान में फ़ोल्डरों में सादी .class फ़ाइलों को पैच नहीं किया जाएगा, क्योंकि उन्हें मैन्युअल रूप से सुरक्षित रूप से हटाया जा सकता है।
.patch फ़ाइल मूल फ़ाइल के बिल्कुल समान होगी, बिना JndiLookup.class के। यह इस समस्या को कम करने के लिए पर्याप्त होना चाहिए, जब तक उन्नयन का इंतजार किया जाता है। बैकअप बनाना और अच्छी तरह से परीक्षण करना सुनिश्चित करें।
पैच सावधानी के तौर पर फ़ोल्डरों पर चलने से इंकार कर देगा। बस पैच को कमजोर आर्काइव की ओर इंगित करें।
$ divd-2021-00038--log4j-scanner.exe patch {target-path}
divd-2021-00038--log4j-scanner patch {target-path}
आवश्यकताएँ:
$ git clone "https://github.com/dtact/divd-2021-00038--log4j-scanner.git"
$ go build -o ./.builds/divd-2021-00038--log4j-scanner ./main.go
कोड और दस्तावेज़ीकरण कॉपीराइट 2021 रेम्को वेरहोफ़ (DTACT)।
कोड MIT लाइसेंस के तहत जारी किया गया है।