The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

12.05.2025 23:11

В консольном оконном менеджере (мультиплексоре терминалов) 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 недостаточно хорошо ориентируются в кодовой базе проекта и не способны полностью разобраться в выявленных проблемах безопасности.

  1. Главная ссылка к новости (https://security.opensuse.org/...)
  2. OpenNews: Уязвимость в tmux, эксплуатируемая через escape-последовательность
  3. OpenNews: Первый выпуск abduco, легковесной альтернативы tmux и screen
  4. OpenNews: Выпуск Xpra 6.0, аналога утилиты screen для GUI. Развитие Wprs, реализации Xpra для Wayland
  5. OpenNews: Выпуск консольного оконного менеджера GNU screen 5.0
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/63226-screen
Ключевые слова: screen
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (44) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Витюшка (?), 23:52, 12/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Некорректное использование функции strncpy()...
     
     
  • 2.2, Аноним (2), 23:59, 12/05/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    приводящее к аварийному завершению при выполнении специально оформленных команд.

    Вы же вроде в расте как раз такое и любите - чуть что - сразу паника (аварийное завершение)

     
     
  • 3.4, НяшМяш (ok), 00:17, 13/05/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А вы в сяшечке всё так же любите игнорировать предыдущие 4 уязвимости, лишь бы растовиков попинать. Почитал описание функции strncpy и за голову схватился - словосочетание "behavior undefined" встречается аж 3 раза. Мы уж лучше в расте красиво навернёмся с подробным стектрейсом и ошибкой, ничего при этом не испортив, чем как сяшечники звучно оподливившись в шаровары.
     
     
  • 4.7, Нуину (?), 00:48, 13/05/2025 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Мы уж лучше в расте красиво навернёмся с подробным стектрейсом и ошибкой

    Никто не мешает написать в строки, которые хранят в себе длину и убрать все эти ошибки на корню.

     
     
  • 5.24, Rev (ok), 02:14, 13/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Да-да, только никто этого не делает :(
     
  • 4.12, Нуину (?), 01:18, 13/05/2025 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > Мы уж лучше в расте красиво навернёмся с подробным стектрейсом и ошибкой,

    Ну, судя по тому, что никто не использует rustscreen или что-то подобное, похоже растовщики по прежнему наворачиваются с подробным стектрейсом и ошибкой.

    >  ничего при этом не испортив

    Да, сложно испортить код, которого нет.

     
  • 4.21, _kp (ok), 01:53, 13/05/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Так есть и другие способы работы со строками, даже не в C++, но и в С, и в том числе на микроконтроллерах.
    А тащить бородатые "стандартные функции", которые на каждый чих надо обкладывать проверками, но на это  все равно где нибудь забьют, так себе стиль.
     
  • 4.28, 12yoexpert (ok), 02:30, 13/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    у тебя уродский кот, вообще не смешной, стрёмный и скучный
     
     
  • 5.29, Аноним (-), 02:43, 13/05/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 5.33, Аноним (33), 03:48, 13/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    КоКом тебе лещщща за котика!!
     
  • 5.40, zionist. (?), 04:57, 13/05/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 4.30, Оно ним (?), 03:00, 13/05/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А из предыдущих четырёх раст бы защитил от одной - с состоянием гонки. А остальные точно так же и в расте были бы.
     
  • 4.45, Аноним (-), 06:26, 13/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Behavior undefined, это нормально для системного языка программирования. Ненормально когда люди проектирующие язык программирования пытаются полностью устранить Behavior undefined.

    Behavior undefined - это просто объективное явление, его невозможно полностью устранить. И наличие в языке behavior undefined, не делает язык автоматически плохим. Вам надо уметь гибко мыслить, шаблонное мышление, это плохо.

     
  • 3.5, Аноним (5), 00:30, 13/05/2025 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >> приводящее к аварийному завершению при выполнении специально оформленных команд.
    >> Bad strncpy() Use Leads to Crashes when Sending Commands
    > Вы же вроде в расте как раз такое и любите - чуть что - сразу паника (аварийное завершение)

    Я расстрою очередного (к)експерта, но panic - это _контролируемое_ завершение программой самой себя, в случае непредвиденной (или осознанно проигнорированной погроммистом) ошибки-ситуации.

    А не вот это вот любимое Настоящими Погроммистами "мы тут немного попортили память за пределами буфера, вследствии чего код далее делал незнамо что, пока не прилетел SIGABRT" ...

     
     
  • 4.20, Аноним (2), 01:50, 13/05/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Дак ведь SIGABRT тоже на сишке написан (в ядре), что не нравится то?
     
  • 4.22, _kp (ok), 02:00, 13/05/2025 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > panic - это _контролируемое_ завершение..

    Но не всегда уместное. А вне десктопа и совсем не уместное.

    > немного попортили память за пределами буфера

    тут не ручной перезапуск уместен, а замена ПО требуется.
    Ну, можно же и на Си нормально работь со строками, без неандертальских функций и тупых строковых буферов. Ну, ладно, хотя бы  в коде не требующего сверхбыстродействия.

     
     
  • 5.32, Аноним (32), 03:27, 13/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > А вне десктопа и совсем не уместное.

    Ты всё перепутал. Это как раз на десктопе таким пугать пользователя нельзя. А на сервере я как раз хочу чтобы упало, а не тихонько неизвестно как то ли работало, то ли память портило. Как падения софта мониторить давно придумали и решили сотней разных способов. А вот как мониторить порчу памяти до сих пор не договорились.

     
  • 4.34, Аноним (33), 03:55, 13/05/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     

  • 1.6, Аноним (6), 00:30, 13/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    >> нынешние сопровождающие GNU screen недостаточно хорошо ориентируются в кодовой базе проекта

    Диды бы такого не допустили...

     
     
  • 2.9, Аноним (9), 01:01, 13/05/2025 Скрыто ботом-модератором     [к модератору]
  • +2 +/
     
  • 2.16, Аноним (16), 01:39, 13/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > нынешние сопровождающие GNU screen недостаточно хорошо ориентируются в кодовой базе проекта

    И на хрена было выпускать ветку screen 5.0? Не устраивает ветка 4.9 пишите свою новую на Rust или Go

     
     
  • 3.18, Аноним (18), 01:41, 13/05/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.35, Аноним (33), 03:56, 13/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Диды допустили
     

  • 1.8, крокодил мимо.. (-), 01:01, 13/05/2025 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     
  • 1.10, sena (ok), 01:04, 13/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > нынешние сопровождающие GNU screen недостаточно хорошо ориентируются в кодовой базе проекта

    То есть диды написали тонны сишного кода в ГНУ/Линуксах и уходят, а сопровождать его вместо них некому.

     
     
  • 2.11, Нуину (?), 01:15, 13/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > То есть диды написали тонны сишного кода в ГНУ/Линуксах и уходят

    А где там в gnu screen тонна кода?

    > а сопровождать его вместо них некому.

    Получается некому, а те, кто могут, не хотят. Об этом яжфин говорил, что проблема есть в сопровождающих.

     
     
  • 3.14, sena (ok), 01:25, 13/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Об этом яжфин говорил, что проблема есть в сопровождающих.

    Тогда все эти мансы с растом обретают иной смысл - просто Торвальдс хочет привлечь к разработке молодёжь, а она в си не умеет и не хочет. Ну и скандал, борьба, революция, всё это тоже важно для привлечения молодёжи.

     
     
  • 4.15, Нуину (?), 01:35, 13/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > Тогда все эти мансы с растом обретают иной смысл - просто Торвальдс хочет привлечь к разработке молодёжь, а она в си не умеет и не хочет. Ну и скандал, борьба, революция, всё это тоже важно для привлечения молодёжи.

    Я думаю там замешаны конторы, у которых ставка на раст. У них профит простой: нужны дешевые разрабы.

    > а она в си не умеет и не хочет.

    Справедливости ради молодёжь много чего не умеет не хочет. А нет, умеют писать жручие и тормозные поделия на электроне.

     
     
  • 5.23, _kp (ok), 02:06, 13/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Если проблемы не было, а в предпоследней версии появилась, то или молодежь самовыражалась, ведь нигде так часто, как в открытых проектах буфера не переполняются, отвечать то за писанину не надо, или даже сделано сознательно, рустофилами, для нагнетания вони о переполнении буферов.
     
     
  • 6.42, Аноним (42), 05:39, 13/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    > сделано сознательно, рустофилами, для нагнетания вони о переполнении буферов.

    Растовики sroot сишникам в штаны?

     
  • 4.27, 12yoexpert (ok), 02:28, 13/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    меня больше тревожит, что некоторые "не умеют в русский язык"
     
     
  • 5.36, Аноним (33), 03:57, 13/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Почем тебя это тревожет
     
  • 5.39, zionist. (?), 04:28, 13/05/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     

  • 1.13, Krtek (?), 01:24, 13/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    >они так и не смогли подготовить исправления для всех уязвимостей

    Всё, что нужно знать о GNU.

     
  • 1.17, Аноним (18), 01:40, 13/05/2025 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • –1 +/
     
  • 1.19, Аноним (19), 01:45, 13/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > сотрудникам SUSE пришлось подготовить некоторые патчи самостоятельно. По мнению проводивших аудит исследователей, нынешние сопровождающие GNU screen недостаточно хорошо ориентируются в кодовой базе проекта и не способны полностью разобраться в выявленных проблемах безопасности.

    А нынешний сопровождающий — это alexander_naumov@opensuse.org ведь? Они там меж собой в suse договориться не могут даже?

     
     
  • 2.26, 12yoexpert (ok), 02:26, 13/05/2025 [^] [^^] [^^^] [ответить]  
  • –1 +/
    а что ты хотел от граждан Отечества паскудина и Миши?
     
     
  • 3.38, zionist. (?), 04:20, 13/05/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.37, Аноним (37), 04:07, 13/05/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     

  • 1.31, Аноним (31), 03:01, 13/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Роллинг это быстрые фиксы с одной стороны и новые вулны с другой.
     
  • 1.43, Аноним (43), 06:09, 13/05/2025 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > только в ветке screen 5.0.0, которая поставляется в Fedora Linux, Arch Linux,
    > NetBSD, OpenBSD и Alpine.

    Спасибо этим господам что побегали для нас по минному полю и разминировали прямо его своими тушками :)

     
     
  • 2.44, Аноним (44), 06:25, 13/05/2025 [^] [^^] [^^^] [ответить]  
  • +/
    Им спасибо, а мы продолжим юзать tmux в роли терминал-мультиплексора
     
  • 2.47, Аноним (-), 06:29, 13/05/2025 Скрыто ботом-модератором     [к модератору]
  • +/
     

  • 1.46, Аноним (-), 06:28, 13/05/2025 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2025 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру