diff options
author | Roberto Sassu <roberto.sassu@huawei.com> | 2021-05-14 17:27:47 +0200 |
---|---|---|
committer | Mimi Zohar <zohar@linux.ibm.com> | 2021-05-21 12:48:39 -0400 |
commit | cdef685be5b4ae55c3959289e72d520402839c29 (patch) | |
tree | 9fafacdad2075d1f7e0da5cac4fa9b6c144230b5 /security/integrity/ima/ima_appraise.c | |
parent | evm: Introduce evm_hmac_disabled() to safely ignore verification errors (diff) | |
download | linux-dev-cdef685be5b4ae55c3959289e72d520402839c29.tar.xz linux-dev-cdef685be5b4ae55c3959289e72d520402839c29.zip |
evm: Allow xattr/attr operations for portable signatures
If files with portable signatures are copied from one location to another
or are extracted from an archive, verification can temporarily fail until
all xattrs/attrs are set in the destination. Only portable signatures may
be moved or copied from one file to another, as they don't depend on
system-specific information such as the inode generation. Instead portable
signatures must include security.ima.
Unlike other security.evm types, EVM portable signatures are also
immutable. Thus, it wouldn't be a problem to allow xattr/attr operations
when verification fails, as portable signatures will never be replaced with
the HMAC on possibly corrupted xattrs/attrs.
This patch first introduces a new integrity status called
INTEGRITY_FAIL_IMMUTABLE, that allows callers of
evm_verify_current_integrity() to detect that a portable signature didn't
pass verification and then adds an exception in evm_protect_xattr() and
evm_inode_setattr() for this status and returns 0 instead of -EPERM.
Signed-off-by: Roberto Sassu <roberto.sassu@huawei.com>
Signed-off-by: Mimi Zohar <zohar@linux.ibm.com>
Diffstat (limited to '')
-rw-r--r-- | security/integrity/ima/ima_appraise.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/security/integrity/ima/ima_appraise.c b/security/integrity/ima/ima_appraise.c index 03894769dffa..9bb351b933fb 100644 --- a/security/integrity/ima/ima_appraise.c +++ b/security/integrity/ima/ima_appraise.c @@ -416,6 +416,8 @@ int ima_appraise_measurement(enum ima_hooks func, case INTEGRITY_NOLABEL: /* No security.evm xattr. */ cause = "missing-HMAC"; goto out; + case INTEGRITY_FAIL_IMMUTABLE: + fallthrough; case INTEGRITY_FAIL: /* Invalid HMAC/signature. */ cause = "invalid-HMAC"; goto out; |