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

Новости мира unix. Хотите узнать секрет вечного счастья? Откройте страницу 246.
Ответить
acolyte
Аватара пользователя
Сообщения: 4149
Зарегистрирован: 20.08.2022

#

Уязвимость в GNU screen, позволяющая выполнить код с правами root
Дата публикации:Mon, 12 May 2025 23:11:48 +0300




В консольном оконном менеджере (мультиплексоре терминалов) 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 (замена strcpy на strncpy без учёта разницы в обработке нулевых символов "\0"), приводящее к аварийному завершению при выполнении специально оформленных команд. Проблема проявляются только в ветке screen 5.0.



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




Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=63226

Жизнь за Нер'зула!

Ответить