В 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 (в случая с 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 с root идентификатор на setuid трябва незабавно да се актуализира до версия 5.0.1 или временно връщане към версия 4.x, ако няма налични пакети. Като мярка за смекчаване, битът setuid може също да бъде премахнат от изпълнимия файл на Screen:

sudo chmod u-s /usr/bin/screen

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

Ако сте заинтересовани да научите повече за това, можете да проверите подробностите в следваща връзка.