ima: fallback to MODULE_SIG_ENFORCE for existing kernel module syscall
Subsystems (3)
PATCH 1/1 ima: fallback to MODULE_SIG_ENFORCE for existing kernel module syscall
The new kernel module syscall appraises kernel modules based
on policy. If the IMA policy requires kernel module checking,
fallback to module signature enforcing for the existing syscall, if enabled. Otherwise return INTEGRITY_UNKNOWN.
Signed-off-by Mimi Zohar <[email protected]>
--- security/integrity/ima/ima.h | 1 + security/integrity/ima/ima_main.c | 12 ++++++++---- security/integrity/ima/ima_policy.c | 3 ++- 3 files changed, 11 insertions(+), 5 deletions(-)
security/integrity/ima/ima.h +1 -0
@@ -139,6 +139,7 @@ void ima_delete_rules(void);/* Appraise integrity measurements */ #define IMA_APPRAISE_ENFORCE 0x01#define IMA_APPRAISE_FIX 0x02 +#define IMA_APPRAISE_MODULES 0x04#ifdef CONFIG_IMA_APPRAISE int ima_appraise_measurement(struct integrity_iint_cache *iint,
security/integrity/ima/ima_main.c +8 -4
@@ -291,11 +291,15 @@ EXPORT_SYMBOL_GPL(ima_file_check);*/ int ima_module_check (struct file *file) { -int rc; +int rc =0 ; -if (!file) - rc =INTEGRITY_UNKNOWN ; -else +if (!file) { +if (ima_appraise &IMA_APPRAISE_MODULES ) { +#ifndef CONFIG_MODULE_SIG_FORCE + rc =INTEGRITY_UNKNOWN ; +#endif + } + }else rc =process_measurement (file, file->f_dentry->d_name.name,MAY_EXEC ,MODULE_CHECK );return (ima_appraise &IMA_APPRAISE_ENFORCE ) ? rc :0 ;
security/integrity/ima/ima_policy.c +2 -1
@@ -523,7 +523,8 @@ static int ima_parse_rule(char *rule, struct ima_rule_entry *entry) }if (!result && (entry->action ==UNKNOWN )) result = -EINVAL ; - +else if (entry->func ==MODULE_CHECK ) + ima_appraise |=IMA_APPRAISE_MODULES ;audit_log_format (ab,"res=%d" , !result);audit_log_end (ab);return result;
Signature · 1 line
1.7.7.6