
Samba में 2 बिना प्रमाणीकरण वाले RCEs के लिए proof-of-concept स्क्रिप्ट्स (CVE-2026-4408 और CVE-2026-4480) तथा TelnetD में स्थानीय विशेषाधिकार वृद्धि (CVE-2026-28372)
इस रिपॉजिटरी में "Forgotten but Not Gone: Unauthenticated RCEs and LPEs in Legacy Linux Services" (Black Hat USA 2026 और DEF CON 34) प्रस्तुति में दिखाई गई कमज़ोरियों के लिए proof-of-concept स्क्रिप्ट्स हैं।
TelnetD में स्थानीय विशेषाधिकार वृद्धि: विशेषाधिकार-रहित हमलावर TelnetD की environment variables सुविधा का शोषण करके root-विशेषाधिकार वाला शेल प्राप्त कर सकते हैं। डिज़ाइन के अनुसार और इसके RFC के अनुसार, Telnet प्रोटोकॉल अपने क्लाइंट्स को शेल सत्र के लिए environment variables सेट करने में सक्षम बनाता है। यह सुविधा सुरक्षा दृष्टिकोण से खराब तरीके से डिज़ाइन की गई थी। यह सेवा बिना प्रमाणीकरण के क्लाइंट्स को telnetd प्रक्रिया और उसकी सभी उप-प्रक्रियाओं के लिए environment variables सेट करने की अनुमति देती थी। इसकी उप-प्रक्रियाओं में से एक /usr/bin/login है। एक दूरस्थ telnet क्लाइंट के रूप में environment variables सेट करने से हम CREDENTIALS_DIRECTORY environment variable के साथ /usr/bin/login को स्पॉन करने में सक्षम हुए। इससे login प्रक्रिया CREDENTIALS_DIRECTORY द्वारा निर्दिष्ट निर्देशिका में login.noauth नामक फ़ाइल खोजती है। यदि फ़ाइल में yes स्ट्रिंग होती है, तो login प्रक्रिया प्रमाणीकरण को छोड़ देती है और क्लाइंट द्वारा निर्दिष्ट उपयोगकर्ता के रूप में चल रहे क्लाइंट को एक शेल प्रदान करती है। यह कोई भी उपयोगकर्ता हो सकता है, यहाँ तक कि root भी।
SAMR के माध्यम से Samba में बिना प्रमाणीकरण के रिमोट कोड निष्पादन: Samba अपने क्लाइंट्स द्वारा अनुरोधित विभिन्न कार्यों को पूरा करने के लिए अपनी कॉन्फ़िगरेशन फ़ाइल (smb.conf) में निर्धारित शेल कमांड्स पर निर्भर करता है, जैसे नया नेटवर्क शेयर जोड़ना, नया प्रिंटर जोड़ना, और भी बहुत कुछ। उनमें से कुछ शेल कमांड्स क्लाइंट द्वारा भेजे गए अनुरोध के आधार पर पैरामीटर प्राप्त करते हैं। अधिकांश समय, शेल इंजेक्शन को रोकने के लिए कमांड निष्पादित करने से पहले पैरामीटर को sanitize किया जाता है और विशेष वर्णों को escape किया जाता है।
यह कमज़ोरी check_password_complexity फ़ंक्शन में है जो क्लाइंट द्वारा निर्दिष्ट स्ट्रिंग को बिना sanitize किए शेल कमांड में फॉर्मेट करता है। इस कमज़ोरी के लिए दो शर्तों की आवश्यकता होती है:
Samba के RPC डेमॉन (samba-dcerpcd) को NCACN_IP_TCP का उपयोग करने के लिए कॉन्फ़िगर करने हेतु, इसे मुख्य Samba सेवा के हिस्से के रूप में नहीं, बल्कि एक अलग सिस्टम सेवा के रूप में लॉन्च किया जाना चाहिए। साथ ही, कॉन्फ़िगरेशन फ़ाइल में "rpc start on demand helpers" विकल्प को no पर सेट करना होगा।
SPOOLSS के माध्यम से Samba में बिना प्रमाणीकरण के रिमोट कोड निष्पादन: फ़ंक्शन generic_job_submit भी क्लाइंट द्वारा नियंत्रित स्ट्रिंग को बिना sanitize किए शेल कमांड में फॉर्मेट करता है। निम्नलिखित कॉन्फ़िगरेशन का संयोजन इस कमज़ोरी का कारण बनता है:
एक बिना प्रमाणीकरण वाला क्लाइंट spoolss RPC इंटरफ़ेस के माध्यम से प्रिंटर शेयर तक पहुँच का अनुरोध कर सकता है। फिर, RpcStartDocPrinter फ़ंक्शन के माध्यम से एक प्रिंट जॉब सबमिट किया जा सकता है। अनुरोध में निर्दिष्ट दस्तावेज़ नाम का उपयोग जॉब नाम के रूप में किया जाएगा, जो कमांड के %J पैरामीटर में फॉर्मेट होता है। hRpcEndDocPrinter को कॉल करने से generic_job_submit ट्रिगर होता है, जो जॉब नाम को बिना sanitization के फॉर्मेट करने के बाद कॉन्फ़िगरेशन से "print command" निष्पादित करेगा। एक्सप्लॉइट द्वारा भेजा गया कोड nobody उपयोगकर्ता के रूप में निष्पादित किया जाएगा। यदि प्रिंटर शेयर अनुभाग में कॉन्फ़िगरेशन "valid users = @users" जोड़ा जाता है, तो शोषण अभी भी काम करता है, लेकिन इसके लिए मान्य क्रेडेंशियल्स की आवश्यकता होती है। यदि प्रमाणीकरण किया गया था, तो एक्सप्लॉइट द्वारा भेजा गया कोड nobody के रूप में नहीं, बल्कि प्रमाणित उपयोगकर्ता के रूप में निष्पादित किया जाएगा।