Уязвимост в 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
  • Натискане на комбинацията клавиши Ctrl-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 в многопотребителски сесии (потребителят може да постигне задаване на права 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

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster