Nel gestore di finestre della console (multiplexer di terminale) GNU screen, che offre un'interfaccia multi-finestra nella console, sono state rilevate 5 vulnerabilità. Il problema più grave (CVE-2025-23395) consente di ottenere i diritti di root nel sistema. La correzione è inclusa nell'uscita odierna di screen 5.0.1.
La vulnerabilità CVE-2025-23395 si manifesta solo nella versione screen 5.0.0, fornita in Fedora Linux, Arch Linux, NetBSD, OpenBSD e Alpine. In Debian, Ubuntu, RHEL (EPEL 9), Gentoo, FreeBSD, SUSE/openSUSE e OpenWrt continua a essere fornita la versione screen 4.x. Sfruttare la vulnerabilità è possibile nei sistemi che installano il file eseguibile screen con il flag setuid root, come in Arch Linux e NetBSD. In Fedora, l'utility viene installata con il flag setgid per ottenere i diritti del gruppo screen, consentendo di posizionare i socket nella directory di sistema /run/screen, limitando così le possibilità di attacco di tipo denial of service.
La vulnerabilità è causata dal fatto che quando viene eseguito con i diritti di root, la funzione logfile_reopen() viene eseguita prima del ripristino dei privilegi, ma gestisce i dati nel contesto delle directory dell'utente non privilegiato attualmente in esecuzione screen. È interessante notare che l'iniziale apertura del log avviene con il corretto ripristino dei privilegi, ma alla riapertura del file di log non viene eseguito il ripristino dei privilegi.
Attraverso operazioni di abilitazione della registrazione del contenuto della sessione, l'utente può raggiungere la scrittura dei dati in un file con diritti di root, pur essendo il file stesso salvato nella home directory dell'utente. L'attacco consiste nella cancellazione 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 con il contenuto della sessione screen verranno aggiunti senza modificare il proprietario. Se il file non esiste, verrà creato con i diritti 0644, con proprietario root e gruppo come l'utente attuale.
L'algoritmo di attacco che crea il file /etc/profile.d/exploit.sh con il comando "chown $USER /root":
- Creazione di una sessione screen con l'attivazione della registrazione $ screen -Logfile $HOME/screen.log
- Premere la combinazione di tasti Ctrl-a-H per attivare il log.
- Cancellazione del file di log e sua sostituzione con un link simbolico, il 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
- Rientrare nella sessione screen e stampare sullo schermo i dati che saranno scritti nel file di log. $ echo -e "\nchown $USER /root;"
- Dopo che il root reale si connetterà al sistema, verrà eseguito lo script /etc/profile.d/exploit.sh, che cambierà il proprietario della directory /root. $ ls -lhd /root drwxr-x— 5 user root 4.0K Dec 30 2020 .
- Analogamente, è possibile creare file di configurazione sudo o aggiungere comandi alla fine degli script di sistema.
Vulnerabilità meno gravi in screen:
- CVE-2025-46802 — intercettazione del dispositivo TTY nelle sessioni multiutente (l'utente può ottenere diritti crw-rw-rw- per il dispositivo /dev/pts/1). Il problema si manifesta nelle versioni screen 4.x e 5.x.
- CVE-2025-46803 — assegnazione predefinita di diritti 0622 al dispositivo PTY, consentendo la scrittura a qualsiasi utente. Il problema si manifesta solo nella versione screen 5.0.
- CVE-2025-46804 — fuga di informazioni sulla presenza di file e directory in directory chiuse (specificando una directory per i socket, utilizzando la variabile di ambiente SCREENDIR, l'utility restituisce testi di errore diversi, rivelando informazioni sulla presenza di file e directory con quel nome). Il problema si manifesta nelle versioni screen 4.x e 5.x.
- CVE-2025-46805 — condizione di competizione nell'invio dei segnali SIGCONT e SIGHUP, che porta a un attacco di negazione di servizio. Il problema si manifesta nelle versioni screen 4.x e 5.x.
- Uso improprio della funzione strncpy (sostituzione di strcpy con strncpy senza considerare le differenze nella gestione dei caratteri null "\0"), portando a un arresto anomalo durante l'esecuzione di comandi appositamente formattati. Il problema si manifesta solo nella versione screen 5.0.
Le vulnerabilità sono state identificate durante un audit del codice sorgente 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 nei 90 giorni concessi non sono riusciti a preparare correzioni per tutte le vulnerabilità, e il personale di SUSE ha dovuto preparare alcuni patch autonomamente. Secondo gli studiosi che hanno condotto l'audit, gli attuali manutentori di GNU screen non sono sufficientemente a conoscenza del codice sorgente del progetto e non sono in grado di comprendere appieno i problemi di sicurezza identificati.
Fonte: opennet.ru
