
[Moved to Codeberg] कमजोर log4j इंस्टेंस के लिए सरल स्थानीय स्कैनर

(Go में लिखा गया है क्योंकि, आप जानते हैं, "एक बार लिखो, कहीं भी चलाओ।")
यह एक सरल उपकरण है जिसका उपयोग वेब अनुप्रयोगों जैसे Java सॉफ़्टवेयर की स्थापनाओं में log4j 1.x और 2.x के भेद्य उदाहरणों को खोजने के लिए किया जा सकता है। JAR और WAR अभिलेखागारों की जाँच की जाती है और जो क्लास फ़ाइलें भेद्य मानी जाती हैं उन्हें चिह्नित किया जाता है। स्कैन पुनरावर्ती रूप से होता है: WAR फ़ाइलों के भीतर WAR फ़ाइलें जिनमें JAR फ़ाइलें हों जिनमें भेद्य क्लास फ़ाइलें हों, उन्हें ठीक से चिह्नित किया जाना चाहिए।
वर्तमान में पहचानी गई भेद्यताएँ हैं:
स्कैन उपकरण वर्तमान में उन ज्ञात बिल्ड आर्टिफैक्ट्स की जाँच करता है जो Maven के माध्यम से प्राप्त किए गए हैं। Linux वितरणों के लिए किए जाने वाले स्रोत-से-पुनर्निर्माण (from-source rebuilds) को पहचाना नहीं जा सकता है।
एक सरल पैच उपकरण भी शामिल है जिसका उपयोग ZIP अभिलेखागार संरचना को फिर से लिखकर JAR फ़ाइलों से खराब क्लासों को हटाने के लिए किया जा सकता है।
टैग किए गए रिलीज़ के लिए x86_64 Windows, Linux, MacOSX के बाइनरी Releases पृष्ठ के माध्यम से प्रदान किए जाते हैं।
$ ./local-log4j-vuln-scanner [--verbose] [--quiet] \
[--ignore-v1] [--ignore-vulns=...] \
[--exclude /path/to/exclude …] \
[--scan-network] \
[--log /path/to/file.log] \
/path/to/app1 /path/to/app2 …
--verbose फ़्लैग जाँची गई हर .jar और .war फ़ाइल को दिखाएगा, भले ही कोई समस्या न मिले।
--quiet फ़्लैग ज्ञात भेद्यता के संकेतकों को छोड़कर सभी आउटपुट को दबा देगा।
--ignore-v1 फ़्लैग log4j 1.x भेद्यताओं की जाँच को बाहर कर देगा।
--ignore-vulns फ़्लैग विशिष्ट भेद्यताओं की जाँच को बाहर करने की अनुमति देता है। जैसे -ignore-vulns=CVE-2021-45046,CVE-2021-44832। सभी ज्ञात भेद्यताओं की जाँच करने के लिए, खाली सूची इस प्रकार पास करें: -ignore-vulns=
--log फ़्लैग सब कुछ stdout/stderr के बजाय एक लॉग फ़ाइल में लिखने की अनुमति देता है।
स्कैन से उपनिर्देशिकाओं को बाहर करने के लिए --exclude फ़्लैग का उपयोग करें। इसे कई बार उपयोग किया जा सकता है।
--scan-network फ़्लैग स्कैनर को नेटवर्क फ़ाइल सिस्टम खोजने के लिए कहता है (डिफ़ॉल्ट रूप से अक्षम)। यह Windows के लिए लागू नहीं किया गया है।
यदि भेद्यताओं में से किसी एक को इंगित करने वाली क्लास फ़ाइलें मिलती हैं, तो निम्न जैसे संदेश मानक आउटपुट पर मुद्रित होते हैं:
./local-log4j-vuln-scanner - a simple local log4j vulnerability scanner
Checking for vulnerabilities: CVE-2019-17571, CVE-2021-44228, CVE-2021-45105
examining /path/to/vuln/log4shell-vulnerable-app-0.0.1-SNAPSHOT.war
indicator for vulnerable component found in /path/to/vuln/Downloads/log4shell-vulnerable-app-0.0.1-SNAPSHOT.war::WEB-INF/lib/log4j-core-2.14.1.jar (org/apache/logging/log4j/core/net/JndiManager.class): JndiManager.class log4j 2.14.0-2.14.1 CVE-2021-44228, CVE-2021-45105
Scan finished
सावधानी: इसे अपने जोखिम पर उपयोग करें और मूल JAR फ़ाइलों को रखें।
$ ./local-log4j-vuln-patcher log4j-core-2.14.1.jar log4j-core-2.14.1-patched.jar
Filtering out org/apache/logging/log4j/core/pattern/MessagePatternConverter.class (log4j 2.14)
Filtering out org/apache/logging/log4j/core/net/JndiManager.class (log4j 2.14.0-2.14.1)
Writing to log4j-core-2.14.1-patched.jar done
एक Go कंपाइलर स्थापित करें।
चेक-आउट किए गए रिपॉजिटरी में निम्न कमांड चलाएँ:
go build -o local-log4j-vuln-scanner ./scanner
go build -o local-log4j-vuln-patcher ./patcher
(Windows सिस्टम पर निश्चित रूप से उपयुक्त .exe एक्सटेंशन जोड़ें।)
GNU जनरल पब्लिक लाइसेंस, संस्करण 3
Hilko Bengen <[email protected]>