diff mbox series

[v1,1/1] Kernel Config to make randomize_va_space read-only.

Message ID FA94F19F-2AB2-4983-8CEC-D89287D91E20@cisco.com (mailing list archive)
State New, archived
Headers show
Series [v1,1/1] Kernel Config to make randomize_va_space read-only. | expand

Commit Message

Lan Zheng (lanzheng) Feb. 25, 2021, 4:42 a.m. UTC
From ba2ec52f170a8e69d6c44238bb578f9518a7e3b7 Mon Sep 17 00:00:00 2001
From: lanzheng <lanzheng@cisco.com>
Date: Tue, 23 Feb 2021 22:49:34 -0500
Subject: [PATCH] This patch adds a kernel build config knob that disallows
 changes to the sysctl variable randomize_va_space.It makes harder for
 attacker to disable ASLR and reduces security risks.
 
Signed-off-by: lanzheng <lanzheng@cisco.com>
Reviewed-by: Yongkui Han <yonhan@cisco.com>
Tested-by: Nirmala Arumugam <niarumug@cisco.com>
---
 kernel/sysctl.c  | 4 ++++
 security/Kconfig | 8 ++++++++
 2 files changed, 12 insertions(+)
 
--

Comments

Greg KH Feb. 25, 2021, 11:40 a.m. UTC | #1
On Thu, Feb 25, 2021 at 04:42:28AM +0000, Lan Zheng (lanzheng) wrote:
> From ba2ec52f170a8e69d6c44238bb578f9518a7e3b7 Mon Sep 17 00:00:00 2001
> From: lanzheng <lanzheng@cisco.com>
> Date: Tue, 23 Feb 2021 22:49:34 -0500

Why is this here?

> Subject: [PATCH] This patch adds a kernel build config knob that disallows
>  changes to the sysctl variable randomize_va_space.It makes harder for
>  attacker to disable ASLR and reduces security risks.

I think you need to read the documentation for how to write a good
changelog text.

>  
> Signed-off-by: lanzheng <lanzheng@cisco.com>
> Reviewed-by: Yongkui Han <yonhan@cisco.com>
> Tested-by: Nirmala Arumugam <niarumug@cisco.com>
> ---
>  kernel/sysctl.c  | 4 ++++
>  security/Kconfig | 8 ++++++++
>  2 files changed, 12 insertions(+)
>  
> diff --git a/kernel/sysctl.c b/kernel/sysctl.c
> index c9fbdd848138..2aa9bc8044c7 100644
> --- a/kernel/sysctl.c
> +++ b/kernel/sysctl.c
> @@ -2426,7 +2426,11 @@ static struct ctl_table kern_table[] = {
>                 .procname       = "randomize_va_space",
>                 .data           = &randomize_va_space,
>                 .maxlen         = sizeof(int),
> +#if defined(CONFIG_RANDOMIZE_VA_SPACE_READONLY)
> +               .mode           = 0444,
> +#else
>                 .mode           = 0644,
> +#endif
>                 .proc_handler   = proc_dointvec,
>         },
>  #endif
> diff --git a/security/Kconfig b/security/Kconfig
> index 7561f6f99f1d..18b9dff4648c 100644
> --- a/security/Kconfig
> +++ b/security/Kconfig
> @@ -7,6 +7,14 @@ menu "Security options"
>  
>  source "security/keys/Kconfig"
>  
> +config RANDOMIZE_VA_SPACE_READONLY
> +       bool "Disallow change of randomize_va_space"
> +       default y

This should only be "default y" if you can not boot here without this
option.

But why is this even needed to be an option at all?  What is causing
this to be turned off?  Can't you keep this from being changed by root
through other means today?

thanks,

greg k-h
diff mbox series

Patch

diff --git a/kernel/sysctl.c b/kernel/sysctl.c
index c9fbdd848138..2aa9bc8044c7 100644
--- a/kernel/sysctl.c
+++ b/kernel/sysctl.c
@@ -2426,7 +2426,11 @@  static struct ctl_table kern_table[] = {
                .procname       = "randomize_va_space",
                .data           = &randomize_va_space,
                .maxlen         = sizeof(int),
+#if defined(CONFIG_RANDOMIZE_VA_SPACE_READONLY)
+               .mode           = 0444,
+#else
                .mode           = 0644,
+#endif
                .proc_handler   = proc_dointvec,
        },
 #endif
diff --git a/security/Kconfig b/security/Kconfig
index 7561f6f99f1d..18b9dff4648c 100644
--- a/security/Kconfig
+++ b/security/Kconfig
@@ -7,6 +7,14 @@  menu "Security options"
 
 source "security/keys/Kconfig"
 
+config RANDOMIZE_VA_SPACE_READONLY
+       bool "Disallow change of randomize_va_space"
+       default y
+       help
+         If you say Y here, /proc/sys/kernel/randomize_va_space can not
+         be changed by any user, including root, this will help prevent
+         disablement of ASLR.
+
 config SECURITY_DMESG_RESTRICT
        bool "Restrict unprivileged access to the kernel syslog"
        default n