Package: screen
Version: 4.9.1-1
Severity: grave
Justification: user security hole
+ possible data loss via a symlink attack
The hardcopy (C-a h) in screen works in the following way:
│ hardcopydir directory
│
│ Defines a directory where hardcopy files will be placed. If unset,
│ hardcopys are dumped in screen's current working directory.
(from the screen(1) man page).
First, using screen's current working directory is insecure,
even though this is documented.
Moreover, the problem gets worse because
* the created file is not protected against read access by
other users;
* it is subject to a symlink attack; and if the target file of
the symbolic link already exists, it will be overwritten!
Note: If the file does not exists yet, the umask is honored.
But if the file already exists (possibly belonging to another
user, with -rw-rw-rw- (666) permissions), the owner and
permissions are preserved, which can be a way to even bypass a
077 umask (the kernel may offer protection for some directories
like /tmp, but not all of them, and software should not rely on
such protection anyway).
The screen-exchange feature (">" in copy mode) is also insecure:
│ > sets the (second) mark and writes the contents of the paste buffer
│ to the screen-exchange file (/tmp/screen-exchange per default) once
│ copy-mode is finished.
The default file is under /tmp (poor default choice) and not protected
against read access by other users. However, a symlink attack does not
seem to be possible: I get an error "No write to links, please." if
/tmp/screen-exchange is a symbolic link.
-- Package-specific info:
File Existence and Permissions
------------------------------
drwxr-xr-x 35 root root 1040 2025-03-17 12:18:24 /run
lrwxrwxrwx 1 root root 4 2015-10-06 13:32:33 /var/run -> /run
-rwxr-xr-x 1 root root 486488 2023-09-07 00:10:56 /usr/bin/screen
-rw-r--r-- 1 root root 29 2017-06-19 12:21:03
/etc/tmpfiles.d/screen-cleanup.conf
lrwxrwxrwx 1 root root 9 2015-10-06 16:01:06
/lib/systemd/system/screen-cleanup.service -> /dev/null
-rwxr-xr-x 1 root root 1222 2017-04-03 01:11:05 /etc/init.d/screen-cleanup
lrwxrwxrwx 1 root root 24 2023-09-18 14:43:32 /etc/rcS.d/S02screen-cleanup
-> ../init.d/screen-cleanup
File contents
-------------
### /etc/tmpfiles.d/screen-cleanup.conf
______________________________________________________________________
d /run/screen 1777 root utmp
______________________________________________________________________
-- System Information:
Debian Release: trixie/sid
APT prefers unstable-debug
APT policy: (500, 'unstable-debug'), (500, 'stable-updates'), (500,
'stable-security'), (500, 'stable-debug'), (500, 'proposed-updates-debug'),
(500, 'unstable'), (500, 'testing'), (500, 'stable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 6.11.10-amd64 (SMP w/12 CPU threads; PREEMPT)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE,
TAINT_UNSIGNED_MODULE
Locale: LANG=C.UTF-8, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Versions of packages screen depends on:
ii debianutils 5.21
ii libc6 2.41-6
ii libcrypt1 1:4.4.38-1
ii libpam0g 1.7.0-3
ii libtinfo6 6.5+20250216-2
ii libutempter0 1.2.1-4
screen recommends no packages.
Versions of packages screen suggests:
pn byobu | screenie | iselect <none>
ii ncurses-term 6.5+20250216-2
-- no debconf information
--
Vincent Lefèvre <[email protected]> - Web: <https://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / Pascaline project (LIP, ENS-Lyon)