]> git.apps.os.sepia.ceph.com Git - fscrypt.git/commit
Strictly validate metadata file ownership by default
authorEric Biggers <ebiggers@google.com>
Wed, 23 Feb 2022 20:35:04 +0000 (12:35 -0800)
committerEric Biggers <ebiggers@google.com>
Wed, 23 Feb 2022 20:35:04 +0000 (12:35 -0800)
commit74e870b7bd1585b4b509da47e0e75db66336e576
tree9b67ab42cebbfd25d917852260a5300292f39630
parent6e355131670ad014e45f879475ddf800f0080d41
Strictly validate metadata file ownership by default

The metadata validation checks introduced by the previous commits are
good, but to reduce the attack surface it would be much better to avoid
reading and parsing files owned by other users in the first place.

There are some possible use cases for users sharing fscrypt metadata
files, but I think that for the vast majority of users it is unneeded
and just opens up attack surface.  Thus, make fscrypt (and pam_fscrypt)
not process policies or protectors owned by other users by default.
Specifically,

   * If fscrypt or pam_fscrypt is running as a non-root user, only
     policies and protectors owned by the user or by root can be used.

   * If fscrypt is running as root, any policy or protector can be used.
     (This is to match user expectations -- starting a sudo session
     should gain rights, not remove rights.)

   * If pam_fscrypt is running as root, only policies and protectors
     owned by root can be used.  Note that this only applies when the
     root user themselves has an fscrypt login protector, which is rare.

Add an option 'allow_cross_user_metadata' to /etc/fscrypt.conf which
allows restoring the old behavior for anyone who really needs it.
15 files changed:
README.md
actions/context.go
actions/policy.go
actions/protector.go
cli-tests/t_encrypt.out
cli-tests/t_single_user.out
cli-tests/t_status.out
cli-tests/t_v1_policy.out
cmd/fscrypt/status.go
filesystem/filesystem.go
filesystem/filesystem_test.go
metadata/config_test.go
metadata/metadata.pb.go
metadata/metadata.proto
pam_fscrypt/run_fscrypt.go