[PATCH v8 04/17] integrity: Do not allow machine keyring updates following init

From: Eric Snowberg
Date: Tue Nov 23 2021 - 23:42:54 EST


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@xxxxxxxxxx>
Reviewed-by: Mimi Zohar <zohar@xxxxxxxxxxxxx>
---
v2: Initial version
v4: Unmodified from v2
v5: Rename to machine keyring
v6: Add additional comment (suggested by Jarkko)
v7: Unmodified from v6
v8: Code unmodified from v7 added Mimi's Reviewed-by
---
security/integrity/digsig.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/security/integrity/digsig.c b/security/integrity/digsig.c
index 8c315be8ad99..910fe29a5037 100644
--- a/security/integrity/digsig.c
+++ b/security/integrity/digsig.c
@@ -140,7 +140,13 @@ int __init integrity_init_keyring(const unsigned int id)
return -ENOMEM;

restriction->check = restrict_link_to_ima;
- perm |= KEY_USR_WRITE;
+
+ /*
+ * No additional keys shall be allowed to load into the machine
+ * keyring following init
+ */
+ if (id != INTEGRITY_KEYRING_MACHINE)
+ perm |= KEY_USR_WRITE;

out:
return __integrity_init_keyring(id, perm, restriction);
--
2.18.4