Уязвимость в GNU Screen, позволяющая выполнить код с правами Root

В консольном оконном менеджере (мультиплексоре терминалов) GNU screen, предоставляющем многооконный интерфейс в консоли, выявлено 5 уязвимостей. Наиболее опасная проблема (CVE-2025-23395) позволяет получить права root в системе. Исправление выключено в состав сегодняшнего выпуска screen 5.0.1.

Уязвимость CVE-2025-23395 проявляется только в ветке screen 5.0.0, которая поставляется в Fedora Linux, Arch Linux, NetBSD, OpenBSD и Alpine. В Debian, Ubuntu, RHEL (EPEL 9), Gentoo, FreeBSD, SUSE/openSUSE и OpenWrt продолжает поставляться ветка screen 4.x. Эксплуатация уязвимости возможна в системах, устанавливающих исполняемый файл screen с флагом setuid root, например, в Arch Linux и NetBSD. В Fedora утилита ставится с флагом setgid для получения прав группы screen, позволяющем размещать сокеты в системном каталоге /run/screen, что ограничивает возможности атаки отказом в обслуживании.

Уязвимость вызвана тем, что при запуске с правами root функция logfile_reopen() выполняется до сброса привилегий, но обрабатывает данные в контексте каталогов текущего непривилегированного пользователя, запустившего screen. Примечательно, что начальное открытие лога производится с корректным сбросом привилегий, но при повторном открытии файла с логом сброс привилегий не производится.

Через манипуляции с включением режима журналирования содержимого сеанса пользователь может добиться записи данных в файл с правами root, при том, что сам файл может быть сохранён в домашнем каталоге пользователя. Атака сводится к удалению созданного файла с логом и его замене на символическую ссылку, указывающую на любой файл в системе. Если файл уже существует в него без изменения владельца будут добавлены данные с содержимым экрана в сеансе screen. Если файл не существует – он будет создан с правами 0644, владельцем root и группой как у текущего пользователя.

Алгоритм атаки, создающей файл /etc/profile.d/exploit.sh с командой “chown $USER /root”:

  • Создание сеанса screen с включением ведения лога $ screen -Logfile $HOME/screen.log
  • Нажатие комбинации клавиш Сtrl-a-H для включения лога.
  • Удаление файла с логом и его замена на символическую ссылку, которая приведёт к созданию файла /etc/profile.d/exploit.sh $ rm $HOME/screen.log; ln -s /etc/profile.d/exploit.sh $HOME/screen.log
  • Возвращение в сеанс screen и вывод на экран данных, которые будут записаны в файл с логом. $ echo -e “nchown $USER /root;”
  • После того как к системе подключится реальный root, запустится сценарий /etc/profile.d/exploit.sh, который поменяет владельца для каталога /root. $ ls -lhd /root drwxr-x— 5 user root 4.0K Dec 30 2020 .
  • По аналогии можно создать файлы конфигурации sudo или добавить команды в конец системных скриптов.

Менее опасные уязвимости в screen:

  • CVE-2025-46802 – перехват устройства TTY в многопользовательских сеансах (пользователь может добиться выставления для устройства /dev/pts/1 прав crw-rw-rw-). Проблема проявляется в ветках screen 4.x и 5.x.
  • CVE-2025-46803 – выставление по умолчанию прав 0622 на устройство PTY, допускающих запись любым пользователям. Проблема проявляются только в ветке screen 5.0.
  • CVE-2025-46804 – утечка информации о наличии файлов и каталогов в закрытых каталогах (при указании каталога для сокетов, используя переменную окружения SCREENDIR, утилита выдаёт разные тексты ошибок, позволяющие суть о наличии файлов и каталогов с данным именем). Проблема проявляется в ветках screen 4.x и 5.x.
  • CVE-2025-46805 – состояние гонки при отправке сигналов SIGCONT и SIGHUP, приводящее к отказу в обслуживании. Проблема проявляется в ветках screen 4.x и 5.x.
  • Некорректное использование функции strncpy(), приводящее к аварийному завершению при выполнении специально оформленных команд. Проблема проявляются только в ветке screen 5.0.

Уязвимости выявлены в ходе аудита кодовой базы GNU screen, проведённого командой, отвечающей за безопасность дистрибутива SUSE Linux. Разработчикам screen сведения об уязвимости были отправлены 7 февраля, но те за отведённые 90 дней так и не смогли подготовить исправления и сотрудникам SUSE пришлось подготовить патчи самостоятельно. По мнению выявивших проблемы исследователей, нынешние сопровождающие GNU screen недостаточно хорошо ориентируются в кодовой базе проекта и не способны полностью разобраться в выявленных проблемах безопасности.

Release. Ссылка here.