diff mbox series

[v5,02/12] integrity: Do not allow machine keyring updates following init

Message ID 20210907160110.2699645-3-eric.snowberg@oracle.com (mailing list archive)
State New, archived
Headers show
Series Enroll kernel keys thru MOK | expand

Commit Message

Eric Snowberg Sept. 7, 2021, 4:01 p.m. UTC
The machine keyring is setup during init.  No additional keys should be
allowed to be added afterwards.  Leave the permission as read only.

Signed-off-by: Eric Snowberg <eric.snowberg@oracle.com>
---
v2: Initial version
v4: Unmodified from v2
v5: Rename to machine keyring
---
 security/integrity/digsig.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Jarkko Sakkinen Sept. 9, 2021, 1:43 p.m. UTC | #1
On Tue, 2021-09-07 at 12:01 -0400, Eric Snowberg wrote:
> The machine keyring is setup during init.  No additional keys should be
> allowed to be added afterwards.  Leave the permission as read only.
> 
> Signed-off-by: Eric Snowberg <eric.snowberg@oracle.com>
> ---
> v2: Initial version
> v4: Unmodified from v2
> v5: Rename to machine keyring
> ---
>  security/integrity/digsig.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/security/integrity/digsig.c b/security/integrity/digsig.c
> index 8c315be8ad99..5a75ac2c4dbe 100644
> --- a/security/integrity/digsig.c
> +++ b/security/integrity/digsig.c
> @@ -140,7 +140,8 @@ int __init integrity_init_keyring(const unsigned int id)
>  		return -ENOMEM;
>  
>  	restriction->check = restrict_link_to_ima;
> -	perm |= KEY_USR_WRITE;

I would add here inline comment to say mostly the same as the commit
message does.

> +	if (id != INTEGRITY_KEYRING_MACHINE)
> +		perm |= KEY_USR_WRITE;
>  
>  out:
>  	return __integrity_init_keyring(id, perm, restriction);

I checked patch 01 but I lost the email somewhere. The keyring definition
looks now sane.

/Jarkko
diff mbox series

Patch

diff --git a/security/integrity/digsig.c b/security/integrity/digsig.c
index 8c315be8ad99..5a75ac2c4dbe 100644
--- a/security/integrity/digsig.c
+++ b/security/integrity/digsig.c
@@ -140,7 +140,8 @@  int __init integrity_init_keyring(const unsigned int id)
 		return -ENOMEM;
 
 	restriction->check = restrict_link_to_ima;
-	perm |= KEY_USR_WRITE;
+	if (id != INTEGRITY_KEYRING_MACHINE)
+		perm |= KEY_USR_WRITE;
 
 out:
 	return __integrity_init_keyring(id, perm, restriction);