Se ha encontrado 5 vulnerabilidades en el multiplexor de terminales GNU screen, que proporciona una interfaz de múltiples ventanas en la consola. El problema más grave (CVE-2025-23395) permite obtener privilegios de root en el sistema. La corrección se ha incluido en la versión de hoy de screen 5.0.1.
La vulnerabilidad CVE-2025-23395 se manifiesta únicamente en la rama screen 5.0.0, que se proporciona en Fedora Linux, Arch Linux, NetBSD, OpenBSD y Alpine. En Debian, Ubuntu, RHEL (EPEL 9), Gentoo, FreeBSD, SUSE/openSUSE y OpenWrt, sigue distribuyéndose la rama screen 4.x. La explotación de la vulnerabilidad es posible en sistemas que instalan el archivo ejecutable screen con el flag setuid root, como en Arch Linux y NetBSD. En Fedora, la utilidad se instala con el flag setgid para obtener los derechos del grupo screen, lo que permite alojar sockets en el directorio del sistema /run/screen, limitando así las posibilidades de un ataque de denegación de servicio.
La vulnerabilidad se debe a que al ejecutarse con privilegios de root, la función logfile_reopen() se ejecuta antes de la reducción de privilegios, pero maneja datos en el contexto de directorios del usuario no privilegiado que ejecutó screen. Es notable que la apertura inicial del log se realiza con una correcta reducción de privilegios, pero al reabrir el archivo del log, no se realiza la reducción de privilegios.
Mediante la manipulación del modo de registro del contenido de la sesión, el usuario puede provocar que se graben datos en un archivo con privilegios de root, aun cuando el archivo en sí se puede guardar en el directorio personal del usuario. El ataque consiste en eliminar el archivo de log creado y reemplazarlo por un enlace simbólico que apunte a cualquier archivo del sistema. Si el archivo ya existe, se añadirán datos al archivo sin cambiar el propietario, con el contenido de la pantalla de la sesión screen. Si el archivo no existe, se creará con los permisos 0644, siendo root el propietario y el grupo el del usuario actual.
Algoritmo de ataque que crea el archivo /etc/profile.d/exploit.sh con el comando «chown $USER /root»:
- Crear una sesión screen con registro habilitado $ screen -Logfile $HOME/screen.log
- Presionar la combinación de teclas Ctrl-a-H para habilitar el log.
- Eliminar el archivo de log y reemplazarlo por un enlace simbólico, lo que llevará a crear el archivo /etc/profile.d/exploit.sh $ rm $HOME/screen.log; ln -s /etc/profile.d/exploit.sh $HOME/screen.log
- Regresar a la sesión screen y mostrar en pantalla los datos que se grabarán en el archivo de log. $ echo -e «\nchown $USER /root;»
- Después de que un root real se conecte al sistema, se ejecutará el script /etc/profile.d/exploit.sh, que cambiará el propietario del directorio /root. $ ls -lhd /root drwxr-x— 5 user root 4.0K 30 de dic 2020 .
- De manera similar, se pueden crear archivos de configuración de sudo o agregar comandos al final de los scripts del sistema.
Vulnerabilidades menos peligrosas en screen:
- CVE-2025-46802 — intercepción del dispositivo TTY en sesiones multitarea (un usuario puede conseguir permisos crw-rw-rw- para el dispositivo /dev/pts/1). El problema se manifiesta en las ramas screen 4.x y 5.x.
- CVE-2025-46803 — asignación por defecto de permisos 0622 al dispositivo PTY, permitiendo la escritura por parte de cualquier usuario. El problema solo se manifiesta en la rama screen 5.0.
- CVE-2025-46804 — filtración de información sobre la existencia de archivos y directorios en directorios cerrados (al especificar un directorio para los sockets, utilizando la variable de entorno SCREENDIR, la utilidad emite diferentes mensajes de error que permiten deducir la existencia de archivos y directorios con ese nombre). El problema se manifiesta en las ramas screen 4.x y 5.x.
- CVE-2025-46805 — condición de carrera al enviar señales SIGCONT y SIGHUP, lo que lleva a denegaciones de servicio. El problema se manifiesta en las ramas screen 4.x y 5.x.
- Uso incorrecto de la función strncpy (reemplazo de strcpy por strncpy sin considerar la diferencia en el manejo de caracteres nulos «\0»), provocando un cierre inesperado al ejecutar comandos específicamente formateados. El problema solo se manifiesta en la rama screen 5.0.
Las vulnerabilidades fueron identificadas durante una auditoría de la base de código de GNU screen, realizada por el equipo de seguridad de la distribución SUSE Linux. Se enviaron detalles sobre las vulnerabilidades a los desarrolladores de screen el 7 de febrero, pero en los 90 días asignados no pudieron preparar correcciones para todas las vulnerabilidades y el personal de SUSE tuvo que preparar algunos parches por sí mismos. Según los investigadores que realizaron la auditoría, los actuales mantenedores de GNU screen no están suficientemente familiarizados con la base de código del proyecto y no son capaces de abordar completamente los problemas de seguridad identificados.
Fuente: opennet.ru
