evm: Allow xattr/attr operations for portable signatures
authorRoberto Sassu <roberto.sassu@huawei.com>
Fri, 14 May 2021 15:27:47 +0000 (17:27 +0200)
committerMimi Zohar <zohar@linux.ibm.com>
Fri, 21 May 2021 16:48:39 +0000 (12:48 -0400)
commitcdef685be5b4ae55c3959289e72d520402839c29
tree9fafacdad2075d1f7e0da5cac4fa9b6c144230b5
parent4a804b8a4572dfc81c3a59709d49ae206e4370ba
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>
include/linux/integrity.h
security/integrity/evm/evm_main.c
security/integrity/ima/ima_appraise.c