یک آسیبپذیری در سرور telnetd از مجموعه GNU InetUtils کشف شده است. این آسیبپذیری امکان اتصال به عنوان هر کاربری، از جمله root، بدون تأیید رمز عبور را فراهم میکند. هنوز شناسه CVE اختصاص داده نشده است. این آسیبپذیری از نسخه 1.9.3 InetUtils (2015) وجود داشته و در نسخه فعلی 2.7.0 بدون وصله باقی مانده است. رفع اشکال در وصلههای (1، 2) موجود است.
مشکل از آنجا ناشی میشود که برای بررسی رمز عبور، فرآیند telnetd ابزار "/usr/bin/login" را فراخوانی میکند و نام کاربری مشخص شده توسط کلاینت هنگام اتصال به ... را به عنوان آرگومان ارسال میکند. سرورابزار «login» از گزینه «-f» پشتیبانی میکند که امکان ورود بدون احراز هویت را فراهم میکند (این گزینه برای زمانی در نظر گرفته شده است که کاربر قبلاً احراز هویت شده باشد). بنابراین، با جایگزینی گزینه «-f» در نام کاربری، میتوانید بدون تأیید رمز عبور متصل شوید.
با یک اتصال معمولی، نمیتوانید از نام کاربری مانند "-f root" استفاده کنید، اما Telnet یک حالت اتصال خودکار دارد که با گزینه "-a" فعال میشود. در این حالت، نام کاربری از خط فرمان گرفته نمیشود، بلکه از طریق متغیر محیطی USER ارسال میشود. هنگامی که ابزار ورود به سیستم فراخوانی شد، مقدار این متغیر محیطی بدون بررسی اضافی و بدون حذف کاراکترهای خاص جایگزین شد. بنابراین، برای اتصال به عنوان کاربر ریشه، کافیست متغیر محیطی USER را روی "-f root" تنظیم کنید و با استفاده از گزینه "-a" به سرور Telnet متصل شوید: $ USER='-f root' telnet -a server_name
تغییری که این آسیبپذیری را ایجاد کرد، در مارس ۲۰۱۵ به کد telnetd اضافه شد و مشکلی را برطرف کرد که مانع از تعیین نام کاربری در حالت ورود خودکار بدون احراز هویت Kerberos میشد. به عنوان یک راه حل، پشتیبانی از ارسال نام کاربری برای حالت ورود خودکار از طریق یک متغیر محیطی اضافه شد، اما بررسی اعتبارسنجی نام کاربری از متغیر محیطی فراموش شد.
منبع: opennet.ru
