Vulnerabilidade no GNU screen que permite executar código com privilégios de root

No gerenciador de janelas de console (multiplexador de terminais) GNU screen, que fornece uma interface multitarefa na console, foram identificadas 5 vulnerabilidades. O problema mais grave (CVE-2025-23395) permite obter privilégios de root no sistema. A correção foi incluída na versão de hoje do screen 5.0.1.

A vulnerabilidade CVE-2025-23395 se manifesta apenas na ramificação screen 5.0.0, que é fornecida no Fedora Linux, Arch Linux, NetBSD, OpenBSD e Alpine. No Debian, Ubuntu, RHEL (EPEL 9), Gentoo, FreeBSD, SUSE/openSUSE e OpenWrt, a ramificação screen 4.x continua sendo fornecida. A exploração da vulnerabilidade é possível em sistemas que instalam o executável screen com a flag setuid de root, como no Arch Linux e NetBSD. No Fedora, a ferramenta é instalada com a flag setgid para obter os direitos do grupo screen, permitindo a criação de sockets no diretório do sistema /run/screen, o que limita as possibilidades de ataques de negação de serviço.

A vulnerabilidade é causada pelo fato de que, ao ser executada com privilégios de root, a função logfile_reopen() é chamada antes da queda dos privilégios, mas processa os dados no contexto dos diretórios do usuário não privilegiado que iniciou o screen. É notável que a abertura inicial do log é feita com a queda correta dos privilégios, mas na reabertura do arquivo de log, não ocorre a queda dos privilégios.

Por meio da manipulação para ativar o modo de registro do conteúdo da sessão, o usuário pode conseguir gravar dados em um arquivo com privilégios de root, embora o arquivo em si possa ser salvo no diretório pessoal do usuário. O ataque consiste em remover o arquivo de log criado e substituí-lo por um link simbólico que aponte para qualquer arquivo no sistema. Se o arquivo já existir, os dados com o conteúdo da tela na sessão do screen serão adicionados a ele sem alteração do proprietário. Se o arquivo não existir, ele será criado com permissões 0644, tendo o root como proprietário e o grupo como o do usuário atual.

O algoritmo do ataque, que cria o arquivo /etc/profile.d/exploit.sh com o comando "chown $USER /root":

  • Criando uma sessão screen com logging ativado $ screen -Logfile $HOME/screen.log
  • Pressionando a combinação de teclas Ctrl-a-H para ativar o log.
  • Removendo o arquivo de log e substituindo-o por um link simbólico, que resultará na criação do arquivo /etc/profile.d/exploit.sh $ rm $HOME/screen.log; ln -s /etc/profile.d/exploit.sh $HOME/screen.log
  • Voltando à sessão do screen e exibindo na tela os dados que serão gravados no arquivo de log. $ echo -e "\nchown $USER /root;"
  • Depois que o root real se conectar ao sistema, o script /etc/profile.d/exploit.sh será iniciado, alterando o proprietário do diretório /root. $ ls -lhd /root drwxr-x— 5 user root 4.0K 30 dez 2020 .
  • Analogamente, é possível criar arquivos de configuração do sudo ou adicionar comandos ao final dos scripts do sistema.

Vulnerabilidades menos perigosas no screen:

  • CVE-2025-46802 — interceptação do dispositivo TTY em sessões multijogador (o usuário pode obter permissões crw-rw-rw- para o dispositivo /dev/pts/1). O problema se manifesta nas versões 4.x e 5.x do screen.
  • CVE-2025-46803 — definição de permissões padrão 0622 para o dispositivo PTY, permitindo gravação por qualquer usuário. O problema se manifesta apenas na versão 5.0 do screen.
  • CVE-2025-46804 — vazamento de informações sobre a existência de arquivos e diretórios em diretórios restritos (ao especificar um diretório para os sockets, usando a variável de ambiente SCREENDIR, o utilitário gera diferentes mensagens de erro, revelando a presença de arquivos e diretórios com esse nome). O problema se manifesta nas versões 4.x e 5.x do screen.
  • CVE-2025-46805 — condição de corrida ao enviar sinais SIGCONT e SIGHUP, resultando em negação de serviço. O problema se manifesta nas versões 4.x e 5.x do screen.
  • Uso incorreto da função strncpy (substituindo strcpy por strncpy sem considerar a diferença no tratamento de caracteres nulos "\0"), levando a falhas ao executar comandos especificamente formatados. O problema se manifesta apenas na versão 5.0 do screen.

As vulnerabilidades foram descobertas durante uma auditoria da base de código do GNU screen, realizada pela equipe responsável pela segurança da distribuição SUSE Linux. As informações sobre as vulnerabilidades foram enviadas aos desenvolvedores do screen em 7 de fevereiro, mas dentro do prazo de 90 dias, eles não conseguiram preparar correções para todas as vulnerabilidades, e a equipe da SUSE teve que preparar alguns patches sozinha. Na opinião dos pesquisadores que conduziram a auditoria, os atuais mantenedores do GNU screen não têm um bom entendimento da base de código do projeto e não conseguem lidar plenamente com os problemas de segurança identificados.

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster