All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefan Berger <stefanb@linux.ibm.com>
To: linux-integrity@vger.kernel.org,
	linux-security-module@vger.kernel.org,
	linux-unionfs@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, paul@paul-moore.com,
	jmorris@namei.org, serge@hallyn.com, zohar@linux.ibm.com,
	roberto.sassu@huawei.com, amir73il@gmail.com, brauner@kernel.org,
	miklos@szeredi.hu, Stefan Berger <stefanb@linux.ibm.com>
Subject: [PATCH v3 04/10] evm: Use the metadata inode to calculate metadata hash
Date: Fri, 23 Feb 2024 12:25:07 -0500	[thread overview]
Message-ID: <20240223172513.4049959-5-stefanb@linux.ibm.com> (raw)
In-Reply-To: <20240223172513.4049959-1-stefanb@linux.ibm.com>

Changes to file attributes (mode bits, uid, gid) on the lower layer are
not taken into account when d_backing_inode() is used when a file is
accessed on the overlay layer and this file has not yet been copied up.
This is because d_backing_inode() does not return the real inode of the
lower layer but instead returns the backing inode which in this case
holds wrong file attributes. Further, when CONFIG_OVERLAY_FS_METACOPY is
enabled and a copy-up is triggered due to file metadata changes, then
the metadata are held by the backing inode while the data are still held
by the real inode. Therefore, use d_inode(d_real(dentry, D_REAL_METADATA))
to get to the file's metadata inode and use it to calculate the metadata
hash with.

Co-developed-by: Mimi Zohar <zohar@linux.ibm.com>
Signed-off-by: Stefan Berger <stefanb@linux.ibm.com>
Acked-by: Amir Goldstein <amir73il@gmail.com>
---
 security/integrity/evm/evm_crypto.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/security/integrity/evm/evm_crypto.c b/security/integrity/evm/evm_crypto.c
index 7552d49d0725..35416f55391c 100644
--- a/security/integrity/evm/evm_crypto.c
+++ b/security/integrity/evm/evm_crypto.c
@@ -223,7 +223,7 @@ static int evm_calc_hmac_or_hash(struct dentry *dentry,
 				 size_t req_xattr_value_len,
 				 uint8_t type, struct evm_digest *data)
 {
-	struct inode *inode = d_backing_inode(dentry);
+	struct inode *inode = d_inode(d_real(dentry, D_REAL_METADATA));
 	struct xattr_list *xattr;
 	struct shash_desc *desc;
 	size_t xattr_size = 0;
-- 
2.43.0


  parent reply	other threads:[~2024-02-23 17:25 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-23 17:25 [PATCH v3 00/10] evm: Support signatures on stacked filesystem Stefan Berger
2024-02-23 17:25 ` [PATCH v3 01/10] ima: Rename backing_inode to real_inode Stefan Berger
2024-03-19 22:50   ` Mimi Zohar
2024-02-23 17:25 ` [PATCH v3 02/10] security: allow finer granularity in permitting copy-up of security xattrs Stefan Berger
2024-03-19 22:51   ` Mimi Zohar
2024-02-23 17:25 ` [PATCH v3 03/10] evm: Implement per signature type decision in security_inode_copy_up_xattr Stefan Berger
2024-03-19 22:51   ` Mimi Zohar
2024-02-23 17:25 ` Stefan Berger [this message]
2024-03-19 22:51   ` [PATCH v3 04/10] evm: Use the metadata inode to calculate metadata hash Mimi Zohar
2024-02-23 17:25 ` [PATCH v3 05/10] ima: Move file-change detection variables into new structure Stefan Berger
2024-02-23 17:25 ` [PATCH v3 06/10] evm: Store and detect metadata inode attributes changes Stefan Berger
2024-02-23 17:25 ` [PATCH v3 07/10] ima: re-evaluate file integrity on file metadata change Stefan Berger
2024-03-19 22:53   ` Mimi Zohar
2024-02-23 17:25 ` [PATCH v3 08/10] evm: Enforce signatures on unsupported filesystem for EVM_INIT_X509 Stefan Berger
2024-03-19 23:26   ` Mimi Zohar
2024-02-23 17:25 ` [PATCH v3 09/10] fs: Rename SB_I_EVM_UNSUPPORTED to SB_I_EVM_HMAC_UNSUPPORTED Stefan Berger
2024-03-19 22:53   ` Mimi Zohar
2024-02-23 17:25 ` [PATCH v3 10/10] evm: Rename is_unsupported_fs to is_unsupported_hmac_fs Stefan Berger
2024-03-19 22:53   ` Mimi Zohar
2024-04-09 21:29 ` [PATCH v3 00/10] evm: Support signatures on stacked filesystem Mimi Zohar

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240223172513.4049959-5-stefanb@linux.ibm.com \
    --to=stefanb@linux.ibm.com \
    --cc=amir73il@gmail.com \
    --cc=brauner@kernel.org \
    --cc=jmorris@namei.org \
    --cc=linux-integrity@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-security-module@vger.kernel.org \
    --cc=linux-unionfs@vger.kernel.org \
    --cc=miklos@szeredi.hu \
    --cc=paul@paul-moore.com \
    --cc=roberto.sassu@huawei.com \
    --cc=serge@hallyn.com \
    --cc=zohar@linux.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.