Now that I have had more time to ponder this issue, I realize that it is
also a security vulnerability. And spurred by the realization, I vaguely
recall coming across several articles in the past (some from before
systemd was a thing) about how automatic runtime cleaning of /tmp and
/var/tmp is (or can be) a security issue.

Firstly, an attacker (an unprivileged local user in this context) may be
able to control what files are removed in the cleanup, though it may be
possible to mitigate/prevent this by properly hardening the cleanup
program. More importantly, when files or directories of long-running
processes (that assume they still have full control over them) are
removed in the cleanup, the attacker can hijack them by recreating them,
thus possibly gaining read/write capabilities beyond their privileges.
For example, replacing a file still used by a process (though obviously
not for a while since it got cleaned) with a symlink, it may be possible
to overwrite arbitrary system files.

As a more specific example applicable to a current Ubuntu 24.04.1 setup,
if an X server is not started for a month after system boot,
/tmp/.X11-unix gets removed. The attacker can then create it, and as
owner will be able to rename files it contains. So when an X server is
later started, rename the socket X0 to X0-foo, create your own socket X0
and you will have MitM eavesdropping/tampering on another user's X
display.

** Information type changed from Public to Public Security

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to systemd in Ubuntu.
https://bugs.launchpad.net/bugs/2088268

Title:
  systemd /tmp cleaning removes files that it shouldn't

Status in systemd package in Ubuntu:
  New

Bug description:
  On Ubuntu 24.04.1, systemd 255.4-1ubuntu8.4, the fix for bug #2019026
  causes files under /tmp to be removed if their age is greater than 30
  days. However, there are files under /tmp that should not be removed
  at runtime regardless of their age (whether they belong in that
  directory at all is a separate question), for example those listed in
  /usr/lib/tmpfiles.d/x11.conf (I have witnessed the disappearance of
  X11 lock files, though the sockets are still there; /tmp/.XIM-unix and
  /tmp/.font-unix have also disappeared).

  I am not familiar enough with systemd-tmpfiles to figure out whether
  those files can be properly protected from removal with a tmpfiles.d
  configuration change, but I do know that the current configuration
  does not do that.

  I noticed this problem when a couple of TigerVNC sessions became
  inaccessible a month after starting them, which turned out to be
  because the "cached" password file in /tmp/tigervnc.XXXXXX/passwd was
  removed. This is at least partially a bug in tigervnc, but the problem
  also affects other critical not-to-be-removed-or-else files under
  /tmp.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/2088268/+subscriptions


-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to