
यह रिपॉजिटरी सरल लेकिन शक्तिशाली वन-लाइनर स्क्रिप्ट प्रदान करती है जो आपको यह शीघ्रता से निर्धारित करने में मदद करने के लिए डिज़ाइन की गई है कि आपका सर्वर CVE-2024-3094 के प्रति संवेदनशील है या नहीं, जो xz उपयोगिता के कुछ संस्करणों में पाया गया एक गंभीर सुरक्षा भेद्यता है। इसके अतिरिक्त, हम आपके कोड रिपॉजिटरी में xz लाइब्रेरी के संदर्भों को स्कैन करने का एक सुविधाजनक तरीका प्रदान करते हैं, जो संभावित अप्रत्यक्ष भेद्यताओं का संकेत हो सकता है।
यह जांचने के लिए कि आपका सर्वर CVE-2024-3094 के प्रति संवेदनशील है या नहीं, अपने टर्मिनल में निम्नलिखित कमांड निष्पादित करें:
(type dpkg &>/dev/null && dpkg -l xz 2>/dev/null | awk '/^ii/{print $3}' | grep -qE '^(5.6.0|5.6.1)$' && echo "Vulnerable: CVE-2024-3094" || echo "Not vulnerable or xz not installed") || (type rpm &>/dev/null && rpm -q --qf "%{VERSION}\n" xz 2>/dev/null | grep -qE '^(5.6.0|5.6.1)$' && echo "Vulnerable: CVE-2024-3094" || echo "Not vulnerable or xz not installed")
उपरोक्त कमांड Linux वितरण में पैकेजों की जांच करेगा।
या इस विकल्प को आज़माएँ जहाँ xz कमांड निष्पादित किया जाएगा, सामान्यतः यह अनुशंसित नहीं है:
command -v xz &>/dev/null && { xz_version=$(xz --version | head -n 1 | awk '{print $4}'); [[ $xz_version == "5.6.0" || $xz_version == "5.6.1" ]] && echo "Vulnerable: CVE-2024-3094" || echo "Not vulnerable: CVE-2024-3094"; } || echo "xz not installed"
यह स्क्रिप्ट निम्नलिखित क्रियाएँ करती है:
xz उपयोगिता स्थापित है या नहीं।xz का स्थापित संस्करण निर्धारित करता है।Docker का उपयोग करने वाली टीमों के लिए जो अपने कंटेनर इमेज के भीतर भेद्यताओं के बारे में चिंतित हैं, हम Trivy (Aqua Security द्वारा एक ओपन-सोर्स भेद्यता स्कैनर) का उपयोग करके एक परिष्कृत उदाहरण प्रदान करते हैं। यह विधि Docker इमेज को भेद्यताओं के लिए स्कैन करती है, जिसमें CVE-2024-3094 भी शामिल है, और इमेज की सुरक्षा स्थिति के बारे में स्पष्ट आउटपुट प्रदान करती है।
निम्नलिखित कमांड Trivy का उपयोग करके एक Docker इमेज (debian:experimental-20240311) को भेद्यताओं के लिए स्कैन करता है और liblzma5 से संबंधित CVE-2024-3094 के परिणामों को फ़िल्टर करता है:
docker run --rm -v $('pwd'):/project -w /project aquasec/trivy:latest image --format cyclonedx --scanners vuln --output /project/result.json debian:experimental-20240311@sha256:16cc2b09c44d991d36f63153f13a7c98fb7da6bd2ba9d7cc0f48baacb7484970 && jq -r '.components[] | .properties[] | select(.name == "aquasecurity:trivy:PkgID" and (.value | tostring | test("liblzma5@(5\\.6\\.0|5\\.6\\.1)"))) | .value' result.json | grep -qE '5\.6\.0|5\.6\.1' && echo "Vulnerable: CVE-2024-3094" || echo "Not vulnerable or liblzma5 not found"
यह कैसे काम करता है:
Docker रन कमांड: एक Trivy कंटेनर शुरू करता है, वर्तमान निर्देशिका को कंटेनर में वॉल्यूम के रूप में माउंट करता है। यह सेटअप Trivy को स्कैन परिणामों को सीधे होस्ट की वर्तमान निर्देशिका में एक फ़ाइल (result.json) में आउटपुट करने की अनुमति देता है।
Trivy स्कैन: निर्दिष्ट Docker इमेज को भेद्यताओं के लिए स्कैन करता है, परिणामों को CycloneDX प्रारूप (सॉफ़्टवेयर बिल ऑफ़ मैटेरियल्स के लिए एक मानकीकृत प्रारूप) में आउटपुट करता है।
jq के साथ प्रसंस्करण: पैकेज liblzma5 की पहचान करने के लिए स्कैन परिणामों को फ़िल्टर करता है और संस्करण "5.6.0" या "5.6.1" की जाँच करता है।
भेद्यता जाँच: liblzma5 के संवेदनशील संस्करणों की खोज के लिए grep का उपयोग करता है। यदि मिलता है तो "Vulnerable: CVE-2024-3094" प्रिंट करता है; अन्यथा "Not vulnerable or liblzma5 not found" आउटपुट करता है।
यह विधि स्वचालित पाइपलाइनों के लिए अत्यधिक प्रभावी है और विभिन्न Docker इमेज में विभिन्न भेद्यताओं की जाँच के लिए अनुकूलित की जा सकती है, यह सुनिश्चित करते हुए कि आपकी तैनाती सुरक्षित है।
अपने स्वयं के Docker इमेज को स्कैन करने के लिए दिए गए कमांड का उपयोग करने के लिए, अपनी आवश्यकताओं के अनुसार कमांड को अनुकूलित करने के लिए इन चरणों का पालन करें:
Docker इमेज बदलें: debian:experimental-20240311@sha256:16cc2b09c44d991d36f63153f13a7c98fb7da6bd2ba9d7cc0f48baacb7484970 को उस इमेज से बदलें जिसे आप स्कैन करना चाहते हैं। आप अपनी इमेज को नाम और टैग (जैसे, yourimage:yourtag) या उसके डाइजेस्ट द्वारा निर्दिष्ट कर सकते हैं।
भेद्यता जाँच को समायोजित करें: यदि आप CVE-2024-3094 के अलावा अन्य भेद्यताओं के लिए स्कैन कर रहे हैं, तो रुचि की भेद्यताओं से संबंधित विशिष्ट पैकेजों और संस्करणों को लक्षित करने के लिए jq और grep एक्सप्रेशन को संशोधित करें।
उदाहरण के लिए, अपनी इमेज yourimage:yourtag को स्कैन करने के लिए:
docker run --rm -v $('pwd'):/project -w /project aquasec/trivy:latest image --format cyclonedx --scanners vuln --output /project/result.json yourimage:yourtag && jq -r '.components[] | .properties[] | select(.name == "aquasecurity:trivy:PkgID" and (.value | tostring | test("liblzma5@(5\\.6\\.0|5\\.6\\.1)"))) | .value' result.json | grep -qE '5\.6\.0|5\.6\.1' && echo "Vulnerable: CVE-2024-3094" || echo "Not vulnerable or liblzma5 not found"
अनुकूलन के लिए सुझाव:
विभिन्न भेद्यताओं के लिए: jq कमांड में "liblzma5@(5\\.6\\.0|5\\.6\\.1)" को उस पैकेज और संस्करण से बदलें जिसमें आपकी रुचि है। उदाहरण के लिए, openssl संस्करण "1.1.1" की जाँच करने के लिए, आप openssl@(1\\.1\\.1) का उपयोग कर सकते हैं।
विभिन्न गुणों के लिए: भेद्यता या पैकेज के आधार पर, CycloneDX आउटपुट में विभिन्न गुणों को लक्षित करने के लिए .name == "aquasecurity:trivy:PkgID" को समायोजित करने की आवश्यकता हो सकती है।
नियमित अपडेट: सुनिश्चित करें कि आपका Trivy इंस्टेंस नियमित रूप से अपडेट किया जाता है ताकि नवीनतम भेद्यता परिभाषाएँ हों। यह आमतौर पर स्कैन चलाने से पहले नवीनतम aquasec/trivy इमेज खींचकर प्राप्त किया जा सकता है।
आउटपुट को समझना: Trivy और jq प्रसंस्करण के आउटपुट प्रारूप से परिचित हों ताकि परिणामों की सटीक व्याख्या कर सकें और अपने Docker इमेज के लिए निहितार्थों को समझ सकें।
xz संदर्भों के लिए कोड रिपॉजिटरी स्कैन करेंयदि आप ऐसा कोड बनाए रख रहे हैं जो संभावित रूप से xz लाइब्रेरी के साथ इंटरैक्ट करता है या उस पर निर्भर करता है, तो संवेदनशील लाइब्रेरी संस्करणों के किसी भी स्पष्ट संदर्भ की पहचान करना महत्वपूर्ण है। अपने रिपॉजिटरी को स्कैन करने के लिए निम्नलिखित कमांड का उपयोग करें:
tukaani प्रोजेक्ट xz उपयोगिता का घर है। अपने कोड में उल्लेख खोजने के लिए:
grep -rnH "tukaani" .
Maven का उपयोग करने वाली Java परियोजनाओं के लिए, आप अपने pom.xml में xz को निर्भरता के रूप में निर्दिष्ट कर सकते हैं। इन संदर्भों का पता लगाने के लिए:
grep -rnH "org.tukaani:xz:" .
ये कमांड निर्दिष्ट पैटर्न के लिए वर्तमान निर्देशिका (और उपनिर्देशिकाओं) को पुनरावर्ती रूप से खोजेंगे, जिसमें फ़ाइल का नाम, पंक्ति संख्या और मिलान वाली पंक्ति शामिल होगी।
नोट: सुनिश्चित करें कि आपके पास इन स्क्रिप्ट को अपने सर्वर पर चलाने या रिपॉजिटरी को स्कैन करने के लिए आवश्यक अनुमतियाँ हैं। उत्पादन सिस्टम में उपयोग करने से पहले हमेशा स्क्रिप्ट को सुरक्षित वातावरण में सत्यापित और परीक्षण करें।
इस रिपॉजिटरी में योगदान देने या सुधार सुझाने के लिए बेझिझक पुल अनुरोध सबमिट करें या एक मुद्दा खोलें। आपकी प्रतिक्रिया और योगदान की अत्यधिक सराहना की जाती है!