Vulnérabilité dans GNU screen permettant d'exécuter du code avec les droits root.

Dans le gestionnaire de fenêtres en mode console (multiplexeur de terminaux) GNU screen, qui offre une interface multi-fenêtres en console, cinq vulnérabilités ont été découvertes. Le problème le plus critique (CVE-2025-23395) permet d'obtenir des droits root sur le système. Un correctif a été intégré dans la version actuelle de screen 5.0.1.

La vulnérabilité CVE-2025-23395 ne se manifeste que dans la branche screen 5.0.0, qui est fournie avec Fedora Linux, Arch Linux, NetBSD, OpenBSD et Alpine. Dans Debian, Ubuntu, RHEL (EPEL 9), Gentoo, FreeBSD, SUSE/openSUSE et OpenWrt, la branche screen 4.x continue d'être distribuée. L'exploitation de cette vulnérabilité est possible dans les systèmes qui installent le fichier exécutable screen avec le drapeau setuid root, par exemple, dans Arch Linux et NetBSD. Sous Fedora, l'outil est installé avec le drapeau setgid pour obtenir les droits du groupe screen, ce qui permet de placer des sockets dans le répertoire système /run/screen, limitant ainsi les possibilités d'attaque par déni de service.

La vulnérabilité est causée par le fait que lors de l'exécution avec les droits root, la fonction logfile_reopen() est exécutée avant la dissolution des privilèges, mais traite des données dans le contexte des répertoires de l'utilisateur non privilégié qui a lancé screen. Il est à noter que l'ouverture initiale du journal se fait avec la suppression correcte des privilèges, mais lors de la réouverture du fichier journal, la suppression des privilèges n'est pas effectuée.

Grâce à des manipulations pour activer le mode de journalisation du contenu de la session, l'utilisateur peut réaliser l'écriture de données dans un fichier avec des droits root, alors que le fichier lui-même peut être enregistré dans le répertoire personnel de l'utilisateur. L'attaque consiste à supprimer le fichier journal créé et à le remplacer par un lien symbolique pointant vers n'importe quel fichier du système. Si le fichier existe déjà, les données du contenu de l'écran lors de la session screen seront ajoutées sans changer le propriétaire. Si le fichier n'existe pas, il sera créé avec des droits 0644, avec root comme propriétaire et le groupe comme l'utilisateur actuel.

L'algorithme d'attaque qui crée le fichier /etc/profile.d/exploit.sh avec la commande « chown $USER /root » :

  • Création d'une session screen avec l'activation de la journalisation $ screen -Logfile $HOME/screen.log
  • Appuyer sur la combinaison de touches Ctrl-a-H pour activer le journal.
  • Suppression du fichier journal et remplacement par un lien symbolique, ce qui entraînera la création du fichier /etc/profile.d/exploit.sh $ rm $HOME/screen.log; ln -s /etc/profile.d/exploit.sh $HOME/screen.log
  • Retour à la session screen et affichage à l'écran des données qui seront écrites dans le fichier journal. $ echo -e "\nchown $USER /root;"
  • Une fois que le véritable root se connecte au système, le script /etc/profile.d/exploit.sh sera lancé, ce qui changera le propriétaire du répertoire /root. $ ls -lhd /root drwxr-x— 5 user root 4.0K 30 déc. 2020 .
  • De la même manière, il est possible de créer des fichiers de configuration sudo ou d'ajouter des commandes à la fin des scripts système.

Vulnérabilités moins dangereuses dans screen :

  • CVE-2025-46802 — interception de l'appareil TTY dans les sessions multiprocesseurs (un utilisateur peut obtenir des droits crw-rw-rw- pour l'appareil /dev/pts/1). Le problème se manifeste dans les versions 4.x et 5.x de screen.
  • CVE-2025-46803 — définition par défaut des droits 0622 sur l'appareil PTY, permettant l'écriture par n'importe quel utilisateur. Le problème ne se manifeste que dans la version 5.0 de screen.
  • CVE-2025-46804 — fuite d'informations sur la présence de fichiers et de répertoires dans des répertoires fermés (lors de la spécification d'un répertoire pour les sockets, en utilisant la variable d'environnement SCREENDIR, l'outil renvoie différents messages d'erreur, permettant de savoir si des fichiers et répertoires avec ce nom existent). Le problème se manifeste dans les versions 4.x et 5.x de screen.
  • CVE-2025-46805 — condition de concurrence lors de l'envoi des signaux SIGCONT et SIGHUP, entraînant un déni de service. Le problème se manifeste dans les versions 4.x et 5.x de screen.
  • Utilisation incorrecte de la fonction strncpy (remplacement de strcpy par strncpy sans tenir compte de la différence dans le traitement des caractères nuls «\0»), entraînant une fermeture anormale lors de l'exécution de commandes spécialement formatées. Le problème ne se manifeste que dans la version 5.0 de screen.

Les vulnérabilités ont été identifiées lors d'un audit de code de la base de code de GNU screen, réalisé par l'équipe en charge de la sécurité de la distribution SUSE Linux. Les développeurs de screen ont été informés de la vulnérabilité le 7 février, mais dans le délai imparti de 90 jours, ils n'ont pas réussi à préparer de correctifs pour toutes les vulnérabilités et les employés de SUSE ont dû préparer certains correctifs eux-mêmes. Selon les chercheurs ayant mené l'audit, les actuels mainteneurs de GNU screen ne sont pas suffisamment familiers avec la base de code du projet et ne sont pas capables de résoudre complètement les problèmes de sécurité identifiés.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster