В telnet нашли уязвимость с root-доступом в одну строку — она скрывалась в коде 11 лет
Кто использует — срочно обновитесь!
В сервере telnetd из пакета GNU InetUtils обнаружили критическую уязвимость, позволяющую получить root-доступ без пароля.
Эксплойт умещается в одну строку, а сама проблема незаметно прожила в коде почти 11 лет — с мая 2015 года. О находке сообщило издание The Register.
Уязвимости присвоен идентификатор CVE-2026-24061, уровень опасности — 9,8 балла по CVSS.
В чем суть бага
Telnet — устаревший протокол удаленного доступа без шифрования. Несмотря на репутацию чего-то древнего и неактуального, telnet до сих пор используется в некоторых Linux-дистрибутивах и встраиваемых системах.
Проблема возникла из-за правок 2015 года в telnetd (версия 1.9.3). Сервер передает имя пользователя в системную утилиту /usr/bin/login, которая поддерживает флаг -f.
Этот флаг сообщает, что пользователь уже аутентифицирован и проверку пароля можно пропустить.
После тех изменений telnetd стал брать имя пользователя из переменной окружения USER — без проверки и экранирования. В итоге атакующий может подставить туда значение -f root и получить root-доступ.
Как выглядит эксплуатация
Эксплойт действительно тривиален и помещается в одну строку:
Если сервер уязвим, подключение сразу происходит от имени суперпользователя — без ввода пароля. По словам Стивена Фьюэра из Rapid7, эксплуатация проблемы «элементарна и гарантированно приводит к полному root-доступу».
Почему это особенно неприятно
- баг существовал почти 11 лет и попал в код вместе с «исправлением» другой ошибки;
- атака не требует подбора паролей или сложной подготовки;
- уязвимость работает до аутентификации;
- telnet-серверы до сих пор доступны в интернете.
По данным сервиса GreyNoise, за последние сутки зафиксированы попытки эксплуатации CVE-2026-24061 как минимум с 21 уникального IP-адреса.
Что рекомендуют делать
Рекомендации ожидаемые, но все еще актуальные:
- обновить GNU InetUtils до версии с исправлением;
- по возможности полностью отказаться от telnet в пользу SSH;
- временно отключить telnetd;
- если отключение невозможно — закрыть порт 23/TCP для всех, кроме доверенных IP.