В GNU Screen обнаружено несколько уязвимостей, позволяющих получить права root.

уязвимость

Несколько дней назад было объявлено, информация об аудите безопасности который выявил пять критических уязвимостей в популярном терминальном мультиплексоре Экран GNU, используется для управления несколькими сеансами консоли на одном терминале.

Одна из которых (CVE-2025-23395, самая опасная уязвимость) позволяет злоумышленнику получить права root на уязвимых системах (уязвимость затрагивает только версию 5.0.0 GNU Screen), в том числе в таких дистрибутивах, как Fedora, Arch Linux, NetBSD и других. Однако другие версии, такие как Debian, Ubuntu и RHEL, по-прежнему используют ветку 4.x, которая не подвержена этой конкретной уязвимости.

CVE-2025-23395: Критическое повышение привилегий

Упоминается, что проблема возникает когда GNU Screen запущен с битом setuid root (в случае Arch и NetBSD), посколькуи функция logfile_reopen() выполняется перед понижением привилегий, что позволяет пользователю манипулировать реестром для записи произвольных файлов от имени пользователя root. На типичной ферме иЗлоумышленник удаляет исходный файл журнала и заменяет его символической ссылкой. в системный файл. При повторном открытии файла Screen записывает его с правами root, что позволяет вредоносному содержимому проникнуть внутрь.

Эта проблема затрагивает Screen 5.0.0 при работе с привилегиями setuid-root. Функция logfile_reopen() не удаляет привилегии при работе по указанному пользователем пути. Это позволяет непривилегированным пользователям создавать файлы в произвольных местах с правами владельца root, (реальной) группой владельца вызывающего пользователя и режимом файла 0644. Все данные, записанные в Screen PTY, будут регистрироваться в этом файле. Существующие файлы также можно использовать для регистрации таким образом: данные будут добавлены к соответствующему файлу, но режим файла и владелец останутся неизменными.

Эта атака может привести к полному контролю над системой, если использовать ее правильно, поскольку он позволяет вам изменять конфиденциальные файлы или изменять сценарии запуска. Fedora частично защищена, поскольку Screen установлен с битом setgid, что ограничивает поверхность атаки.

Другие соответствующие уязвимости

Аудит, проведенный группой безопасности SUSE Linux, также выявили другие важные неудачи:

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

Также было обнаружено неправильное использование strncpy, которое может приводить к сбоям при выполнении команд со специальным форматированием — проблема, характерная только для ветки 5.0.

Отсутствие обслуживания и поддержки со стороны SUSE

Обнаружение этих уязвимостей выявило более глубокие проблемы в обслуживании GNU Screen. По данным команды SUSE, Текущие разработчики проекта не до конца понимают кодовую базу. ни проблем безопасности, которые заставили их самостоятельно разрабатывать исправления для некоторых обнаруженных уязвимостей. Отчет был отправлен разработчикам 7 февраля, однако весь набор уязвимостей не удалось устранить в течение согласованного 90-дневного льготного периода.

Что делать, если вы используете GNU Screen?

Пользователи систем, включающих Screen 5.0.0 с setuid root следует немедленно обновиться до версии 5.0.1 или временно вернитесь к версии 4.x, если нет доступных пакетов. В качестве меры смягчения можно также удалить бит setuid из исполняемого файла Screen:

sudo chmod u-s /usr/bin/screen

Тем не менее, Это может повлиять на функциональность. например, совместное использование сеансов между пользователями. Наконец, стоит упомянуть, что недавно выпущенная версия 5.0.1 исправляет эту и другие ошибки и теперь доступна в таких дистрибутивах, как Arch Linux и FreeBSD.

Если вы интересно узнать об этом больше, вы можете проверить подробности в по следующей ссылке.