В конзолния прозоречен мениджър (мултиплексор на терминали) 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 30 дек 2020 .
- По аналогия могат да се създадат конфигурационни файлове за sudo или да се добавят команди в края на системните скриптове.
По-малко опасни уязвимости в screen:
- CVE-2025-46802 — прихващане на устройството TTY в многопотребителски сесии (потребителят може да получи права crw-rw-rw- за устройството \/dev\/pts\/1). Проблемът се проявява в версията 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
