
log4shell (CVE-2021-44228, CVE-2021-45046) और अन्य संवेदनशील (CVE-2017-5645, CVE-2019-17571, CVE-2022-23305, CVE-2022-23307 ... ) log4j लाइब्रेरी के इंस्टेंसेस के लिए सबसे तेज़ फाइलसिस्टम स्कैनर। उत्कृष्ट प्रदर्शन और कम मेमोरी फुटप्रिंट।

https://github.com/mergebase/log4j-detector का Python पोर्ट। log4j-detector कॉपीराइट (C) कॉपीराइट 2021 Mergebase Software Inc. https://mergebase.com/ है। GPLv3 के तहत लाइसेंस प्राप्त।
Python में पोर्ट करने का उद्देश्य प्रदर्शन में सुधार, मेमोरी खपत कम करना और कोड पठनीयता बढ़ाना था। नीचे performance तुलना अनुभाग देखें।
और ऐसा प्रतीत होता है कि यह सबसे कम मेमोरी आवश्यकता वाला सबसे तेज़ स्कैनिंग टूल है।
आपके फ़ाइल-सिस्टम पर log4j (1.x), reload4j (1.2.18+) और log4j-core (2.x) संस्करणों की पहचान करता है जो CVE-2021-44228, CVE-2021-45046 और कई अन्य - नीचे दी गई तालिका देखें। यह बड़े अनुप्रयोगों में कई परतों गहरे एम्बेडेड उदाहरणों को खोजने में सक्षम है। Linux, Windows, Mac या कहीं और Python 3.8+ चलाने पर काम करता है।
log4j को निष्पादन योग्य spring-boot jars/wars, uber jars में मिश्रित निर्भरताओं, छायांकित jars, और यहां तक कि फ़ाइल-सिस्टम पर बिना संपीड़ित (उर्फ *.class) पड़ी विस्फोटित jar फ़ाइलों के अंदर सही ढंग से पता लगा सकता है। यह छायांकित वर्ग फ़ाइलों - एक्सटेंशन .esclazz (elastic) और .classdata (Azure) को भी संभाल सकता है।
खोजे गए Java संग्रह एक्सटेंशन: .zip, .jar, .war, .ear, .aar, .jpi,
.hpi, .rar, .nar, .wab, .eba, .ejb, .sar, .apk, .par, .kar
| पता लगाता है | CVE | CVSSv3 | गंभीरता | Java | कमजोरी की शुरुआत | असुरक्षित संस्करण | फिक्स संस्करण | लाइब्रेरी |
|---|---|---|---|---|---|---|---|---|
| YES | CVE-2021-44228 | 10.0 | गंभीर | 8 | 2.0-beta9 | 2.14.1 | 2.15.0 | log4jv2 |
| YES | CVE-2017-5645 | 9.8 | गंभीर | 7 | 2.0-alpha1 | 2.8.1 | 2.8.2 | log4jv2 |
| YES | CVE-2019-17571 | 9.8 | गंभीर | 1.2.0 | 1.2.17 | nofix | log4jv1 | |
| YES | CVE-2021-45046 | 9.0 | गंभीर | 7/8 | 2.0-beta9 | 2.15.0, 2.12.2 को छोड़कर | 2.12.2/2.16.0 | log4jv2 |
| YES | CVE-2022-23305 | 9.8 | गंभीर | 1.2.0 | 1.2.17 | nofix / 1.2.18.1 | log4jv1, reload4j | |
| YES | CVE-2022-23307 | 9.8 | गंभीर | 1.2.0 | 1.2.17 | nofix / 1.2.18.1 | log4jv1, reload4j | |
| YES | CVE-2022-23302 | 8.8 | उच्च | 1.0 | 1.2.17 | nofix / 1.2.18.1 | log4jv1, reload4j | |
| YES | CVE-2021-4104 | 7.5 | उच्च | - | 1.0 | 1.2.17 | nofix | log4jv1 |
| YES | CVE-2021-44832 | 6.6 | मध्यम | 6/7/8 | 2.0-alpha7 | 2.17.0, 2.3.2/2.12.4 को छोड़कर | 2.3.2/2.12.4/2.17.1 | log4jv2 |
| - | CVE-2021-42550 | 6.6 | मध्यम | - | 1.0 | 1.2.7 | 1.2.8 | logback |
| YES | CVE-2021-45105 | 5.9 | मध्यम | 6/7/8 | 2.0-beta9 | 2.16.0, 2.12.3 को छोड़कर | 2.3.1/2.12.3/2.17.0 | log4jv2 |
| - | CVE-2020-9488 | 3.7 | निम्न | 7/8 | 2.0-alpha1 | 2.13.1 | 2.12.3/2.13.2 | log4jv2 |
प्रत्येक उदाहरण को उपयुक्त CVE सूची के साथ रिपोर्ट किया जाता है। प्रत्येक CVE के लिए log4j लाइब्रेरी फ़ाइल का विश्लेषण किया जाता है कि क्या अनुशंसित वर्कअराउंड (जैसे JndiLookup.class या JMSAppender.class हटा दिए गए हैं) लागू किए गए हैं और उस स्थिति में इसे असंवेदनशील माना जाता है। स्थिति STRANGE उन संग्रहों के लिए रिपोर्ट की जाती है जिनमें log4j-core pom.properties फ़ाइल है, लेकिन वास्तविक बाइटकोड कक्षाएं नहीं हैं, आमतौर पर वे स्रोत पैकेज होते हैं और उन्हें अनदेखा किया जा सकता है।
चेतावनी
--fixसुविधा प्रयोगात्मक है, इसे अपने जोखिम पर उपयोग करें, इसका उपयोग करने से पहले अपनी jar फ़ाइलों का बैकअप लेना सुनिश्चित करें।
तर्क --fix JndiLookup.class के उदाहरणों को JndiLookup.vulne में नाम बदलने का प्रयास करता है, जिससे क्लास लोड होने से रोका जा सके। Java संग्रह के अंदर यह स्थान पर नाम बदलने के माध्यम से किया जाता है, इसमें संग्रह को पुनः ज़िप करने की आवश्यकता नहीं होती है और यह तुरंत तेज़ है।
Linux 64bit, MS Windows 64bit और 32bit के लिए बाइनरी उपलब्ध हैं - Releases देखें
समर्थित न्यूनतम Python संस्करण 3.8 है। मेरे परीक्षण के अनुसार Python 3.6 zip कार्यान्वयन मेरे परीक्षण डेटा से कई
.jarफ़ाइलें नहीं खोल सकता।
log4shell finder प्रदर्शन और कम मेमोरी फुटप्रिंट के लिए अनुकूलित है।
23.1.2022 को अद्यतन, 2005 फ़ोल्डरों में 26237 फ़ाइलों वाली निर्देशिका पर प्रदर्शन मापा गया।
रनटाइम आधा हो गया, मेमोरी खपत 2/3, फ़ाइल सिस्टम रीड कम से कम 90%
Command being timed: "./test_log4shell.py /home/hynek/war/ --exclude-dirs /mnt --same-fs"
User time (seconds): 17.68
System time (seconds): 1.20
Percent of CPU this job got: 127%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:14.47
Maximum resident set size (kbytes): 64144
File system inputs: 114424
Command being timed: "./log4j-finder.py /home/hynek/war/"
User time (seconds): 23.59
System time (seconds): 1.09
Percent of CPU this job got: 99%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:26.18
Maximum resident set size (kbytes): 38604
File system inputs: 142824
Command being timed: "java -jar log4j-detector-latest.jar /home/hynek/war"
User time (seconds): 30.56
System time (seconds): 1.39
Percent of CPU this job got: 113%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:28.26
Maximum resident set size (kbytes): 214116
File system inputs: 14416
Command being timed: "./log4j2-scan /home/hynek/war --scan-log4j1 --scan-zip"
User time (seconds): 52.05
System time (seconds): 25.32
Percent of CPU this job got: 88%
Elapsed (wall clock) time (h:mm:ss or m:ss): 1:27.86
Maximum resident set size (kbytes): 593080
File system inputs: 215416
all पैरामीटर के साथ सभी स्थानीय ड्राइव का स्वचालित पता लगाना--no-csv-header--threads पैरामीटर--cvs-clean पैरामीटर--cvs-stats पैरामीटर--fix कमांड .jar संग्रह को दूषित कर सकता था।पिछले बदलावों के लिए रिलीज़ नोट्स देखें
या तो Python इंटरप्रेटर से चलाएँ या dist फ़ोल्डर से Windows/Linux बाइनरी का उपयोग करें।