2020-06-11 11:24:52

by Mimi Zohar

[permalink] [raw]
Subject: [PATCH] ima: fix mprotect checking

Make sure IMA is enabled before checking mprotect change. Addresses
report of a 3.7% regression of boot-time.dhcp.

Fixes: 8eb613c0b8f1 ("ima: verify mprotect change is consistent with mmap policy")
Reported-by: kernel test robot <[email protected]>
Signed-off-by: Mimi Zohar <[email protected]>
---
security/integrity/ima/ima_main.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/security/integrity/ima/ima_main.c b/security/integrity/ima/ima_main.c
index 800fb3bba418..c1583d98c5e5 100644
--- a/security/integrity/ima/ima_main.c
+++ b/security/integrity/ima/ima_main.c
@@ -419,7 +419,8 @@ int ima_file_mprotect(struct vm_area_struct *vma, unsigned long prot)
int pcr;

/* Is mprotect making an mmap'ed file executable? */
- if (!vma->vm_file || !(prot & PROT_EXEC) || (vma->vm_flags & VM_EXEC))
+ if (!(ima_policy_flag & IMA_APPRAISE) || !vma->vm_file ||
+ !(prot & PROT_EXEC) || (vma->vm_flags & VM_EXEC))
return 0;

security_task_getsecid(current, &secid);
--
2.7.5


2020-06-11 14:15:15

by Lakshmi Ramasubramanian

[permalink] [raw]
Subject: Re: [PATCH] ima: fix mprotect checking

On 6/11/20 4:19 AM, Mimi Zohar wrote:

> Make sure IMA is enabled before checking mprotect change. Addresses
> report of a 3.7% regression of boot-time.dhcp.
>
> Fixes: 8eb613c0b8f1 ("ima: verify mprotect change is consistent with mmap policy")
> Reported-by: kernel test robot <[email protected]>
> Signed-off-by: Mimi Zohar <[email protected]>
> ---
> security/integrity/ima/ima_main.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/security/integrity/ima/ima_main.c b/security/integrity/ima/ima_main.c
> index 800fb3bba418..c1583d98c5e5 100644
> --- a/security/integrity/ima/ima_main.c
> +++ b/security/integrity/ima/ima_main.c
> @@ -419,7 +419,8 @@ int ima_file_mprotect(struct vm_area_struct *vma, unsigned long prot)
> int pcr;
>
> /* Is mprotect making an mmap'ed file executable? */
> - if (!vma->vm_file || !(prot & PROT_EXEC) || (vma->vm_flags & VM_EXEC))
> + if (!(ima_policy_flag & IMA_APPRAISE) || !vma->vm_file ||
> + !(prot & PROT_EXEC) || (vma->vm_flags & VM_EXEC))
> return 0;
>
> security_task_getsecid(current, &secid);
>

Reviewed-by: Lakshmi Ramasubramanian <[email protected]>