]> git.karo-electronics.de Git - linux-beck.git/commitdiff
Revert "ima: limit file hash setting by user to fix and log modes"
authorMimi Zohar <zohar@linux.vnet.ibm.com>
Wed, 2 Nov 2016 13:14:16 +0000 (09:14 -0400)
committerMimi Zohar <zohar@linux.vnet.ibm.com>
Mon, 14 Nov 2016 03:50:09 +0000 (22:50 -0500)
Userspace applications have been modified to write security xattrs,
but they are not context aware.  In the case of security.ima, the
security xattr can be either a file hash or a file signature.
Permitting writing one, but not the other requires the application to
be context aware.

In addition, userspace applications might write files to a staging
area, which might not be in policy, and then change some file metadata
(eg. owner) making it in policy.  As a result, these files are not
labeled properly.

This reverts commit c68ed80c97d9720f51ef31fe91560fdd1e121533, which
prevents writing file hashes as security.ima xattrs.

Requested-by: Patrick Ohly <patrick.ohly@intel.com>
Cc: Dmitry Kasatkin <dmitry.kasatkin@gmail.com>
Signed-off-by: Mimi Zohar <zohar@linux.vnet.ibm.com>
security/integrity/ima/ima_appraise.c

index 389325ac6067d547718c957ff110047de986ff56..a705598ced5ff26e40f0299e845c807f0a2b175e 100644 (file)
@@ -384,14 +384,10 @@ int ima_inode_setxattr(struct dentry *dentry, const char *xattr_name,
        result = ima_protect_xattr(dentry, xattr_name, xattr_value,
                                   xattr_value_len);
        if (result == 1) {
-               bool digsig;
-
                if (!xattr_value_len || (xvalue->type >= IMA_XATTR_LAST))
                        return -EINVAL;
-               digsig = (xvalue->type == EVM_IMA_XATTR_DIGSIG);
-               if (!digsig && (ima_appraise & IMA_APPRAISE_ENFORCE))
-                       return -EPERM;
-               ima_reset_appraise_flags(d_backing_inode(dentry), digsig);
+               ima_reset_appraise_flags(d_backing_inode(dentry),
+                        (xvalue->type == EVM_IMA_XATTR_DIGSIG) ? 1 : 0);
                result = 0;
        }
        return result;