On 12/4/20 1:44 AM, Dale wrote:

Will opentmpfiles be fixed at some point or is it true that it can't be
fixed?  On -dev, I think I read where one person said it can't be
fixed.  In that case, switching is likely a good idea since the insecure
package can't be fixed.


The answer is a bit complicated. The first thing we need to understand that opentmpfiles is supposed to be a cross-platform (i.e. POSIX) implementation of the systemd-tmpfiles program. Systemd itself only runs on newer versions of linux, and since it has control of the entire system, it can enable those non-standard symlink and hardlink protections. So,

  * systemd-tmpfiles is secure, but only on linux, and only if you let
    it enable fs.protected_hardlinks for you.

The security there comes from two places. The first is that everything was implemented carefully in C to avoid these problems, and the second is that fs.protected_hardlinks solves the otherwise-unavoidable hardlink exploits.

Now for contrast, opentmpfiles is INsecure for two reasons:

  (1) It's written in shell script, so it doesn't have the ability to
      pass e.g. O_NOFOLLOW to all of the calls that might follow
      symlinks. And shell programs all operate on path names as opposed
      to file descriptors, so race conditions are impossible to avoid.

  (2) The fs.protected_hardlinks sysctl is not cross-platform, so if
      it's to fulfill its stated design goals, opentmpfiles can't rely
      on fs.protected_hardlinks.

The first problem is fixable, but the second is not. If opentmpfiles is rewritten in C, it could be just as secure as systemd-tmpfiles... but **only on linux with fs.protected_hardlinks enabled**.

It will never be both secure and cross-platform. The design of the whole tmpfiles.d thing is flawed in that regard.



root@fireball / # sysctl -n fs.protected_hardlinks
1
root@fireball / #


Does that improve things any or does that not really help anything?


It completely fixes one of the problems (hardlinks), but does nothing for the other (non-terminal symlinks).


Reply via email to