Skip to content

Commit a9100b6

Browse files
robertosassugregkh
authored andcommitted
ima: do not update security.ima if appraisal status is not INTEGRITY_PASS
commit 020aae3ee58c1af0e7ffc4e2cc9fe4dc630338cb upstream. Commit b65a9cf ("Untangling ima mess, part 2: deal with counters") moved the call of ima_file_check() from may_open() to do_filp_open() at a point where the file descriptor is already opened. This breaks the assumption made by IMA that file descriptors being closed belong to files whose access was granted by ima_file_check(). The consequence is that security.ima and security.evm are updated with good values, regardless of the current appraisal status. For example, if a file does not have security.ima, IMA will create it after opening the file for writing, even if access is denied. Access to the file will be allowed afterwards. Avoid this issue by checking the appraisal status before updating security.ima. Signed-off-by: Roberto Sassu <roberto.sassu@huawei.com> Signed-off-by: Mimi Zohar <zohar@linux.vnet.ibm.com> Signed-off-by: James Morris <james.l.morris@oracle.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 51b8aea commit a9100b6

1 file changed

Lines changed: 3 additions & 0 deletions

File tree

security/integrity/ima/ima_appraise.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,9 @@ void ima_update_xattr(struct integrity_iint_cache *iint, struct file *file)
297297
if (iint->flags & IMA_DIGSIG)
298298
return;
299299

300+
if (iint->ima_file_status != INTEGRITY_PASS)
301+
return;
302+
300303
rc = ima_collect_measurement(iint, file, NULL, NULL);
301304
if (rc < 0)
302305
return;

0 commit comments

Comments
 (0)