[PATCH 3/3] IMA: add support to measure duplicate buffer for critical data hook
Tushar Sugandhi
tusharsu at linux.microsoft.com
Tue Feb 9 18:31:43 UTC 2021
On 2021-02-08 12:24 p.m., Mimi Zohar wrote:
> Hi Tushar,
>
> On Fri, 2021-01-29 at 16:45 -0800, Tushar Sugandhi wrote:
>
>> diff --git a/security/integrity/ima/ima_queue.c b/security/integrity/ima/ima_queue.c
>>
>> index c096ef8945c7..fbf359495fa8 100644
>> --- a/security/integrity/ima/ima_queue.c
>> +++ b/security/integrity/ima/ima_queue.c
>> @@ -158,7 +158,7 @@ static int ima_pcr_extend(struct tpm_digest *digests_arg, int pcr)
>> */
>> int ima_add_template_entry(struct ima_template_entry *entry, int violation,
>> const char *op, struct inode *inode,
>> - const unsigned char *filename)
>> + const unsigned char *filename, bool allow_dup)
>> {
>> u8 *digest = entry->digests[ima_hash_algo_idx].digest;
>>
> struct tpm_digestate_entry(struct ima_template_entry *entry, int violation,
Not sure I understand this. Maybe a typo? Could you please explain?
>>
>> mutex_lock(&ima_extend_list_mutex);
>> if (!violation) {
>> - if (ima_lookup_digest_entry(digest, entry->pcr)) {
>> + if (!allow_dup &&
>> + ima_lookup_digest_entry(digest, entry->pcr)) {
>
> Can't this change be simplified to "if (!violation && !allow_dup)"?
>
Sure. Will do.
Earlier I wasn't sure if 'violation' would touch any other use-cases
inadvertently. That's why I localized the change as above.
But now since we are supporting other scenarios as well,
I believe "if (!violation && !allow_dup)" would be cleaner.
> Also perhaps instead of passing another variable "allow_dup" to each of
> these functions, pass a mask containing violation and allow_dup.
>
There were examples of both approaches in ima_match_policy().
- int *pcr/ima_template_desc **template_desc as an out-param;
- and various actions as flags in return int.
Earlier I couldn't decide one way or the other, so I picked the
out-param approach.
But since allow_dup is just a single bit info, returning it as a bit in
the action flag is a cleaner solution.
Will implement it with flag in the next iteration.
Thanks again for reviewing the series. Really appreciate it.
Thanks,
Tushar
>> audit_cause = "hash_exists";
>> result = -EEXIST;
>> goto out;
>
> thanks,
>
> Mimi
>
More information about the Linux-security-module-archive
mailing list