
CLI को अक्षम करके SECURITY-3314/CVE-2024-23897 और SECURITY-3315/CVE-2024-23898 को कम करने का वर्कअराउंड
= SECURITY-3314/SECURITY-3315 शमन (Mitigation)
यह रिपॉज़िटरी प्रभावित इंस्टेंस पर SECURITY-3314 और SECURITY-3315 के शोषण को रोकने वाले शमन उपायों का दस्तावेज़ीकरण करती है।
== अवलोकन
CLI तक पहुंच अक्षम करने की आवश्यकता है। निम्नलिखित दोनों चरणों का पालन किया जाना चाहिए:
== निर्देश
=== CLI एंडपॉइंट अक्षम करें
यदि Jenkins वर्तमान में चल रहा है, तो दिए गए स्क्रिप्ट disable-cli.groovy को https://www.jenkins.io/doc/book/managing/script-console/[Script Console] में निष्पादित करें।
ऐसा करने से Jenkins के पुनरारंभ होने तक CLI HTTP एंडपॉइंट हट जाएगा।
disable-cli.groovy की सामग्री के साथ एक Post-Initialization https://www.jenkins.io/doc/book/managing/groovy-hook-scripts/[Groovy Hook Script] बनाएँ ताकि Jenkins के (पुनः) प्रारंभ होने पर स्क्रिप्ट का निष्पादन सुनिश्चित हो सके।
==== पुष्टि
यह पुष्टि करने के लिए कि स्क्रिप्ट ने काम किया है, Manage Jenkins » Jenkins CLI पर जाएँ।
शमन लागू किए बिना, उपलब्ध CLI कमांड के अवलोकन सहित सामान्य CLI दस्तावेज़ीकरण दिखाया जाता है। शमन लागू करने पर, HTTP 404 Not Found त्रुटि दिखाई जाती है।
=== SSH पोर्ट अक्षम करें
https://plugins.jenkins.io/sshd/[SSH Server Plugin] SSH के माध्यम से Jenkins CLI तक पहुंच प्रदान करता है। यह एक ऐसा प्लगइन है जिसकी कार्यक्षमता पहले Jenkins core का हिस्सा हुआ करती थी, इसलिए यह स्थापित हो सकता है भले ही आपने इसे कभी स्पष्ट रूप से स्थापित न किया हो।
Manage Jenkins » Security पर जाएँ और सुनिश्चित करें कि SSH Server अनुभाग में SSHD Port सेटिंग Disable पर सेट है।
NOTE: ऐसा करने की अनुशंसा तब भी की जाती है, भले ही आप प्लगइन को अक्षम या अनइंस्टॉल करना चुनते हैं, क्योंकि प्लगइन प्रबंधन कार्यक्षमता प्लगइन निर्भरताओं को संतुष्ट करने के लिए प्लगइन को पुनः स्थापित या पुनः सक्षम कर सकती है।
वैकल्पिक रूप से, आप disable-cli.groovy स्क्रिप्ट के अंत में निम्नलिखित स्निपेट जोड़ सकते हैं:
// Disable CLI access over SSH Server Plugin
if (j.getPlugin('sshd')) {
hudson.ExtensionList.lookupSingleton(org.jenkinsci.main.modules.sshd.SSHD.class).setPort(-1)
}
==== पुष्टि
SSH पोर्ट को अक्षम करने के लिए समर्थित UI विकल्प के साथ किसी स्पष्ट कॉन्फ़िगरेशन की आवश्यकता नहीं है, लेकिन आप पहले से कॉन्फ़िगर किए गए SSH CLI पोर्ट से कनेक्ट करने का प्रयास कर सकते हैं।
अपेक्षित परिणाम कनेक्शन स्थापित करने में विफलता है।
ध्यान दें कि SSH CLI का कोई अनधिकृत (unauthenticated) उपयोग संभव नहीं है, इसलिए हर त्रुटि इस बात का संकेत नहीं है कि यह सफलतापूर्वक अक्षम कर दिया गया है।
ये अपेक्षित (सुरक्षित) परिणाम के उदाहरण हैं (मान लें कि पोर्ट 2222 पहले कॉन्फ़िगर किया गया था):
$ ssh -p 2222 jenkins.example.org
ssh: connect to host jenkins.example.org port 2222: Connection refused
$ ssh -p 2222 jenkins.example.org
kex_exchange_identification: read: Connection reset by peer
Connection reset by … port 2222