
CVE-2026-32746 - GNU InetUtils telnetd LINEMODE SLC تجاوز سعة المخزن المؤقت PoC (RCE قبل المصادقة، CVSS 9.8)
تجاوز سعة المخزن المؤقت قبل المصادقة في معالج LINEMODE SLC (Set Local Characters) الخاص بـ GNU InetUtils telnetd.
CVSS 3.1: 9.8 (حرجة) | CWE: CWE-120, CWE-787
تُلحق الدالة add_slc() في telnetd/slc.c 3 بايتات لكل ثلاثية SLC بمخزن مؤقت ثابت بحجم 108 بايت (slcbuf) دون التحقق من الحدود. يمكن لمهاجم غير مصادق إرسال خيار فرعي مخصص SLC يحتوي على 40+ ثلاثية (رموز دالة أكبر من 18/NSLC) أثناء التفاوض على الخيارات - قبل أي موجه تسجيل دخول - مما يتسبب في تجاوز سعة المخزن المؤقت وإفساد مؤشر slcptr والبيانات المجاورة في BSS.
# Build the vulnerable lab environment
docker compose up -d
# Detect (non-destructive)
python3 detect.py 127.0.0.1 2323
# Exploit (triggers overflow, verifies via response)
python3 exploit.py 127.0.0.1 2323
# Clean up
docker compose down
يعمل إعداد Docker على تشغيل حاوية Debian مع inetutils-telnetd 2.4 تحت xinetd، معرّضة على المنفذ 2323. معزولة تمامًا - لا شيء يلمس مضيفك.
WILL LINEMODE لتفعيل التفاوض على LINEMODEDO LINEMODE ويدخل في معالجة الخيار الفرعي SLCadd_slc() ردًا "غير مدعوم" (3 بايتات) لكل ثلاثية في مخزن مؤقت بحجم 104 بايتslcptr والبيانات المجاورة في BSSend_slc() كل شيء من slcbuf إلى موضع slcptr الذي تم إفساده، بما في ذلك ذاكرة BSS المسربة في الاستجابةللحصول على تحليل استغلال متعمق يتضمن قيود البايت، وتقنيات المحاذاة، وبدائية def_slcbuf/free() على أنظمة 32-بت، راجع مقالة WatchTowr.
هذه الأداة مقدمة لاختبارات الاختراق المصرح بها والأغراض التعليمية فقط. لا تستخدمها ضد أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها. المؤلف غير مسؤول عن أي إساءة استخدام.
MIT
| الملف | الوصف |
|---|
exploit.py | تجاوز سعة PoC مع تحقق قائم على الاستجابة |
Dockerfile | مختبر telnetd القابل للاستغلال |
docker-compose.yml | إعداد مختبر بأمر واحد |
xinetd-telnet.conf | إعداد خدمة xinetd |
detect.py | سكريبت كشف الإصدار غير التدميري |