2018-05-02 21:53:57

by Eric W. Biederman

[permalink] [raw]
Subject: [PATCH] evm: Don't update hmacs in user ns mounts

From: Seth Forshee <[email protected]>
Date: Fri, 22 Dec 2017 15:32:35 +0100

The kernel should not calculate new hmacs for mounts done by
non-root users. Update evm_calc_hmac_or_hash() to refuse to
calculate new hmacs for mounts for non-init user namespaces.

Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: James Morris <[email protected]>
Cc: Mimi Zohar <[email protected]>
Cc: "Serge E. Hallyn" <[email protected]>
Signed-off-by: Seth Forshee <[email protected]>
Signed-off-by: Dongsu Park <[email protected]>
Signed-off-by: Eric W. Biederman <[email protected]>
---

Mimi this patch has been floating around for a while and it appears to
be the only piece missing from the vfs to make unprivileged mounts safe
(at least semantically). Do you want to merge this through your integrity
tree or should merge this through my userns tree?

security/integrity/evm/evm_crypto.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)


diff --git a/security/integrity/evm/evm_crypto.c b/security/integrity/evm/evm_crypto.c
index a46fba322340..facf9cdd577d 100644
--- a/security/integrity/evm/evm_crypto.c
+++ b/security/integrity/evm/evm_crypto.c
@@ -200,7 +200,8 @@ static int evm_calc_hmac_or_hash(struct dentry *dentry,
int size;
bool ima_present = false;

- if (!(inode->i_opflags & IOP_XATTR))
+ if (!(inode->i_opflags & IOP_XATTR) ||
+ inode->i_sb->s_user_ns != &init_user_ns)
return -EOPNOTSUPP;

desc = init_desc(type);
--
2.14.1



2018-05-03 01:43:38

by Mimi Zohar

[permalink] [raw]
Subject: Re: [PATCH] evm: Don't update hmacs in user ns mounts

On Wed, 2018-05-02 at 16:49 -0500, Eric W. Biederman wrote:
> From: Seth Forshee <[email protected]>
> Date: Fri, 22 Dec 2017 15:32:35 +0100
>
> The kernel should not calculate new hmacs for mounts done by
> non-root users. Update evm_calc_hmac_or_hash() to refuse to
> calculate new hmacs for mounts for non-init user namespaces.
>
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: James Morris <[email protected]>
> Cc: Mimi Zohar <[email protected]>
> Cc: "Serge E. Hallyn" <[email protected]>
> Signed-off-by: Seth Forshee <[email protected]>
> Signed-off-by: Dongsu Park <[email protected]>
> Signed-off-by: Eric W. Biederman <[email protected]>
> ---
>
> Mimi this patch has been floating around for a while and it appears to
> be the only piece missing from the vfs to make unprivileged mounts safe
> (at least semantically). Do you want to merge this through your integrity
> tree or should merge this through my userns tree?

Matthew's EVM patches don't conflict with this change, so either way
is fine.

Mimi

>
> security/integrity/evm/evm_crypto.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
>
> diff --git a/security/integrity/evm/evm_crypto.c b/security/integrity/evm/evm_crypto.c
> index a46fba322340..facf9cdd577d 100644
> --- a/security/integrity/evm/evm_crypto.c
> +++ b/security/integrity/evm/evm_crypto.c
> @@ -200,7 +200,8 @@ static int evm_calc_hmac_or_hash(struct dentry *dentry,
> int size;
> bool ima_present = false;
>
> - if (!(inode->i_opflags & IOP_XATTR))
> + if (!(inode->i_opflags & IOP_XATTR) ||
> + inode->i_sb->s_user_ns != &init_user_ns)
> return -EOPNOTSUPP;
>
> desc = init_desc(type);