В telnetd от GNU InetUtils е установена уязвимост, която позволява свързване с произволен потребител, включително потребителя root, без проверка на парола. Все още не е присвоен CVE идентификатор. Уязвимостта се проявява от версия InetUtils 1.9.3 (2015 г.) и остава непоправена в актуалната версия 2.7.0. Патчове са налични (1, 2).
Проблемът произтича от факта, че telnetd извиква утилитата «/usr/bin/login за проверка на паролата, като предава името на потребителя, зададено от клиента при свързване с. сървър. Утилитата «login» поддържа опцията «-f», позволяваща вход без извършване на автентикация (предполага се, че тази опция се използва, когато потребителят вече е преминал проверка). Така, ако успеете да вмъкнете опцията «-f» в името на потребителя, можете да влезете без проверка на парола.
При нормално свързване не можете да използвате име на потребител като «-f root», но в telnet има режим на автоматично свързване, активиран с опцията «-a». В този режим името на потребителя не се взима от командния ред, а се предава чрез променливата на средата USER. При извикване на утилитата login стойността на тази променлива се вмъква без допълнителна проверка и без екраниране на специални знаци. Следователно, за да се свържете като потребител root, е достатъчно да зададете стойност «-f root» на променливата на средата USER и да се свържете с telnet сървъра, задавайки опцията «-a»: $ USER='-f root' telnet -a име_на_сървъра
Промяната, довела до уязвимостта, е добавена към кода на telnetd през март 2015 г. и е свързана с решаването на проблем, който не позволяваше определянето на името на потребителя в режим autologin без автентикация в Kerberos. Като решение е добавена поддръжка за предаване на името на потребителя за режима autologin чрез променливата на средата, но проверката на валидността на името на потребителя от променливата на средата е пропусната.
Източник: opennet.ru
