Vulnerabilità in GNU screen che consente l'esecuzione di codice con privilegi di root

Nel gestore delle finestre console (multiplexer di terminali) GNU screen, che fornisce un'interfaccia multi-finestra nella console, sono state rilevate 5 vulnerabilità. Il problema più grave (CVE-2025-23395) consente l'ottenimento dei diritti di root nel sistema. La correzione è stata inclusa nell'uscita odierna di screen 5.0.1.

La vulnerabilità CVE-2025-23395 si manifesta solo nel ramo screen 5.0.0, fornito in Fedora Linux, Arch Linux, NetBSD, OpenBSD e Alpine. In Debian, Ubuntu, RHEL (EPEL 9), Gentoo, FreeBSD, SUSE/openSUSE e OpenWrt continua a essere fornito il ramo screen 4.x. L'esploit della vulnerabilità è possibile nei sistemi che installano il file eseguibile screen con il flag setuid root, come in Arch Linux e NetBSD. In Fedora, l'utilità viene installata con il flag setgid per ottenere i diritti del gruppo screen, permettendo di posizionare i socket nella directory di sistema /run/screen, che limita le possibilità di attacco di denial of service.

La vulnerabilità è causata dal fatto che, quando viene eseguita come root, la funzione logfile_reopen() viene eseguita prima del ripristino dei privilegi, ma gestisce i dati nel contesto delle directory dell'utente non privilegiato che ha avviato screen. È notevole che l'apertura iniziale del log avviene con un corretto ripristino dei privilegi, ma durante la riapertura del file di log non si effettua il ripristino dei privilegi.

Attraverso manipolazioni nell'attivazione della registrazione del contenuto della sessione, un utente può ottenere la registrazione di dati in un file con diritti di root, mentre il file stesso può essere salvato nella directory home dell'utente. L'attacco consiste nella rimozione del file di log creato e nella sua sostituzione con un link simbolico che punta a qualsiasi file nel sistema. Se il file esiste già, i dati verranno aggiunti al suo interno senza cambiare il proprietario; se il file non esiste, verrà creato con i diritti 0644, con proprietario root e gruppo come quello dell'utente attuale.

L'algoritmo di attacco, che crea un file /etc/profile.d/exploit.sh con il comando "chown $USER /root":

  • Creazione di una sessione screen con registrazione attivata $ screen -Logfile $HOME/screen.log
  • Premere la combinazione di tasti Ctrl-a-H per attivare la registrazione.
  • Rimozione del file di log e sua sostituzione con un link simbolico, che porterà alla creazione del file /etc/profile.d/exploit.sh $ rm $HOME/screen.log; ln -s /etc/profile.d/exploit.sh $HOME/screen.log
  • Ritornare alla sessione screen e visualizzare i dati che saranno registrati nel file di log. $ echo -e "\nchown $USER /root;"
  • Dopo che il sistema si connetterà a un vero root, verrà eseguito lo script /etc/profile.d/exploit.sh, il quale cambierà il proprietario della directory /root. $ ls -lhd /root drwxr-x— 5 user root 4.0K 30 Dic 2020 .
  • Analogamente, è possibile creare file di configurazione sudo o aggiungere comandi alla fine degli script di sistema.

Vulnerabilità meno pericolose in screen:

  • CVE-2025-46802 — intercettazione del dispositivo TTY in sessioni multiutente (un utente può ottenere i diritti crw-rw-rw- per il dispositivo /dev/pts/1). Il problema si manifesta nelle versioni di screen 4.x e 5.x.
  • CVE-2025-46803 — impostazione predefinita dei diritti 0622 sul dispositivo PTY, consentendo la scrittura a qualsiasi utente. Il problema si manifesta solo nella versione di screen 5.0.
  • CVE-2025-46804 — fuoriuscita di informazioni sulla presenza di file e directory in directory protette (specificando una directory per i socket, utilizzando la variabile d'ambiente SCREENDIR, l'utilità restituisce diversi messaggi di errore, rivelando l'esistenza di file e directory con quel nome). Il problema si manifesta nelle versioni di screen 4.x e 5.x.
  • CVE-2025-46805 — race condition durante l'invio dei segnali SIGCONT e SIGHUP, che porta a un'attacco di negazione di servizio. Il problema si manifesta nelle versioni di screen 4.x e 5.x.
  • Utilizzo scorretto della funzione strncpy (sostituzione di strcpy con strncpy senza tenere conto delle differenze nella gestione dei caratteri nulli "\0"), portando a un crash durante l'esecuzione di comandi appositamente formattati. Il problema si manifesta solo nella versione di screen 5.0.

Le vulnerabilità sono state rilevate durante un audit del codice di base di GNU screen, condotto dal team responsabile della sicurezza della distribuzione SUSE Linux. Le informazioni sulle vulnerabilità sono state inviate agli sviluppatori di screen il 7 febbraio, ma entro i 90 giorni concessi non sono riusciti a preparare correzioni per tutte le vulnerabilità e i membri di SUSE hanno dovuto preparare alcuni patch da soli. Secondo gli esperti che hanno condotto l'audit, gli attuali manutentori di GNU screen non hanno una buona padronanza del codice sorgente del progetto e non sono in grado di risolvere completamente i problemi di sicurezza identificati.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster