Hi, I was reading the function ima_write_policy in ima/ima_fs.c when I find the issue: > static ssize_t ima_write_policy(struct file *file, const char __user *buf, > size_t datalen, loff_t *ppos) > { > ... > > if (data[0] == '/') { > result = ima_read_policy(data); > } else if (ima_appraise & IMA_APPRAISE_POLICY) { > pr_err("signed policy file (specified as an absolute pathname) required\n"); > integrity_audit_msg(AUDIT_INTEGRITY_STATUS, NULL, NULL, > "policy_update", "signed policy required", > 1, 0); > ... > return result; > } For the absolute path written by the user, we only check the prefix "/". Actually, we can echo an illegal path to the /sys/kernel/security/ima/policy, e.g. "/\rtest: ddddddddddddddddddd" to inject some logs into dmesg. Then ima_read_policy is called to return error: > static ssize_t ima_read_policy(char *path) > { > ... > rc = kernel_read_file_from_path(path, 0, &data, INT_MAX, NULL, > READING_POLICY); > if (rc < 0) { > pr_err("Unable to open file: %s (%d)", path, rc); > return rc; > } > ... > } In ima_read_policy, the illegal path would be logged into dmesg like this: > ... > test: ddddddddddddddddddd (-2)/ > test: ddddddddddddddddddd (-2)/ > test: ddddddddddddddddddd (-2)/ > test: ddddddddddddddddddd (-2)/ I suggest that we should check the path in ima_write_policy to make sure it's a valid one, at least literally. thanks, Tianxing