IMA: define a builtin critical data measurement policy
Define a new critical data builtin policy to allow measuring early kernel integrity critical data before a custom IMA policy is loaded. Update the documentation on kernel parameters to document the new critical data builtin policy. Signed-off-by: Lakshmi Ramasubramanian <nramas@linux.microsoft.com> Reviewed-by: Tyler Hicks <tyhicks@linux.microsoft.com> Signed-off-by: Mimi Zohar <zohar@linux.ibm.com>
This commit is contained in:
parent
9f5d7d23cc
commit
03cee16836
|
@ -1746,7 +1746,7 @@
|
|||
ima_policy= [IMA]
|
||||
The builtin policies to load during IMA setup.
|
||||
Format: "tcb | appraise_tcb | secure_boot |
|
||||
fail_securely"
|
||||
fail_securely | critical_data"
|
||||
|
||||
The "tcb" policy measures all programs exec'd, files
|
||||
mmap'd for exec, and all files opened with the read
|
||||
|
@ -1765,6 +1765,9 @@
|
|||
filesystems with the SB_I_UNVERIFIABLE_SIGNATURE
|
||||
flag.
|
||||
|
||||
The "critical_data" policy measures kernel integrity
|
||||
critical data.
|
||||
|
||||
ima_tcb [IMA] Deprecated. Use ima_policy= instead.
|
||||
Load a policy which meets the needs of the Trusted
|
||||
Computing Base. This means IMA will measure all
|
||||
|
|
|
@ -206,6 +206,10 @@ static struct ima_rule_entry secure_boot_rules[] __ro_after_init = {
|
|||
.flags = IMA_FUNC | IMA_DIGSIG_REQUIRED},
|
||||
};
|
||||
|
||||
static struct ima_rule_entry critical_data_rules[] __ro_after_init = {
|
||||
{.action = MEASURE, .func = CRITICAL_DATA, .flags = IMA_FUNC},
|
||||
};
|
||||
|
||||
/* An array of architecture specific rules */
|
||||
static struct ima_rule_entry *arch_policy_entry __ro_after_init;
|
||||
|
||||
|
@ -228,6 +232,7 @@ __setup("ima_tcb", default_measure_policy_setup);
|
|||
|
||||
static bool ima_use_appraise_tcb __initdata;
|
||||
static bool ima_use_secure_boot __initdata;
|
||||
static bool ima_use_critical_data __initdata;
|
||||
static bool ima_fail_unverifiable_sigs __ro_after_init;
|
||||
static int __init policy_setup(char *str)
|
||||
{
|
||||
|
@ -242,6 +247,8 @@ static int __init policy_setup(char *str)
|
|||
ima_use_appraise_tcb = true;
|
||||
else if (strcmp(p, "secure_boot") == 0)
|
||||
ima_use_secure_boot = true;
|
||||
else if (strcmp(p, "critical_data") == 0)
|
||||
ima_use_critical_data = true;
|
||||
else if (strcmp(p, "fail_securely") == 0)
|
||||
ima_fail_unverifiable_sigs = true;
|
||||
else
|
||||
|
@ -871,6 +878,11 @@ void __init ima_init_policy(void)
|
|||
ARRAY_SIZE(default_appraise_rules),
|
||||
IMA_DEFAULT_POLICY);
|
||||
|
||||
if (ima_use_critical_data)
|
||||
add_rules(critical_data_rules,
|
||||
ARRAY_SIZE(critical_data_rules),
|
||||
IMA_DEFAULT_POLICY);
|
||||
|
||||
ima_update_policy_flag();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue