On Mon, 2019-06-03 at 11:25 +0200, Roberto Sassu wrote: > On 5/30/2019 2:00 PM, Mimi Zohar wrote: > > On Wed, 2019-05-29 at 15:30 +0200, Roberto Sassu wrote: > >> Currently, ima_appraise_measurement() ignores the EVM status when > >> evm_verifyxattr() returns INTEGRITY_UNKNOWN. If a file has a valid > >> security.ima xattr with type IMA_XATTR_DIGEST or IMA_XATTR_DIGEST_NG, > >> ima_appraise_measurement() returns INTEGRITY_PASS regardless of the EVM > >> status. The problem is that the EVM status is overwritten with the > >>> appraisal status > > > > Roberto, your framing of this problem is harsh and misleading. IMA > > and EVM are intentionally independent of each other and can be > > configured independently of each other. The intersection of the two > > is the call to evm_verifyxattr(). INTEGRITY_UNKNOWN is returned for a > > number of reasons - when EVM is not configured, the EVM hmac key has > > not yet been loaded, the protected security attribute is unknown, or > > the file is not in policy. > > > > This patch does not differentiate between any of the above cases, > > requiring mutable files to always be protected by EVM, when specified > > as an "ima_appraise=" option on the boot command line. > > > > IMA could be extended to require EVM on a per IMA policy rule basis. > > Instead of framing allowing IMA file hashes without EVM as a bug that > > has existed from the very beginning, now that IMA/EVM have matured and > > is being used, you could frame it as extending IMA or hardening. > > I'm seeing it from the perspective of an administrator that manages an > already hardened system, and expects that the system only grants access > to files with a valid signature/HMAC. That system would not enforce this > behavior if EVM keys are removed and the digest in security.ima is set > to the actual file digest. > > Framing it as a bug rather than an extension would in my opinion help to > convince people about the necessity to switch to the safe mode, if their > system is already hardened. I don't disagree with you that people should be using EVM to protect IMA hashes. If you claim this is a bug in the design from the very beginning, then there needs some explanation as to why it was upstreamed as it was. My review of this patch provided that context/background. Mimi > > > >> This patch mitigates the issue by selecting signature verification as the > >> only method allowed for appraisal when EVM is not initialized. Since the > >> new behavior might break user space, it must be turned on by adding the > >> '-evm' suffix to the value of the ima_appraise= kernel option. > >> > >> Fixes: 2fe5d6def1672 ("ima: integrity appraisal extension") > >> Signed-off-by: Roberto Sassu <roberto.sassu@xxxxxxxxxx> > >> Cc: stable@xxxxxxxxxxxxxxx >