]> Gentwo Git Trees - linux/.git/commitdiff
mm: security: Allow default HARDENED_USERCOPY to be set at compile time
authorMel Gorman <mgorman@techsingularity.net>
Thu, 23 Jan 2025 22:11:13 +0000 (22:11 +0000)
committerKees Cook <kees@kernel.org>
Tue, 11 Feb 2025 00:40:15 +0000 (16:40 -0800)
HARDENED_USERCOPY defaults to on if enabled at compile time. Allow
hardened_usercopy= default to be set at compile time similar to
init_on_alloc= and init_on_free=. The intent is that hardening
options that can be disabled at runtime can set their default at
build time.

Signed-off-by: Mel Gorman <mgorman@techsingularity.net>
Link: https://lore.kernel.org/r/20250123221115.19722-3-mgorman@techsingularity.net
Signed-off-by: Kees Cook <kees@kernel.org>
Documentation/admin-guide/kernel-parameters.txt
mm/usercopy.c
security/Kconfig.hardening

index fb8752b42ec8582b8750d7e014c4d76166fa2fc1..41d4cf206ec1bf0ee2d776d088775364a3bd5c0a 100644 (file)
                        allocation boundaries as a proactive defense
                        against bounds-checking flaws in the kernel's
                        copy_to_user()/copy_from_user() interface.
-               on      Perform hardened usercopy checks (default).
+                       The default is determined by
+                       CONFIG_HARDENED_USERCOPY_DEFAULT_ON.
+               on      Perform hardened usercopy checks.
                off     Disable hardened usercopy checks.
 
        hardlockup_all_cpu_backtrace=
index 83c164aba6e0f697f6c7d34cd930cb67218e3194..4cf33305347a5bbfd3eedbbe36d5fe7cc2f37f3a 100644 (file)
@@ -255,7 +255,8 @@ void __check_object_size(const void *ptr, unsigned long n, bool to_user)
 }
 EXPORT_SYMBOL(__check_object_size);
 
-static bool enable_checks __initdata = true;
+static bool enable_checks __initdata =
+               IS_ENABLED(CONFIG_HARDENED_USERCOPY_DEFAULT_ON);
 
 static int __init parse_hardened_usercopy(char *str)
 {
index 9f1bea733523ed62a1443ef90343f9c7adf9581a..45748379f89635506be026d6a27e5ce991a0450c 100644 (file)
@@ -294,6 +294,14 @@ config HARDENED_USERCOPY
          or are part of the kernel text. This prevents entire classes
          of heap overflow exploits and similar kernel memory exposures.
 
+config HARDENED_USERCOPY_DEFAULT_ON
+       bool "Harden memory copies by default"
+       depends on HARDENED_USERCOPY
+       default HARDENED_USERCOPY
+       help
+         This has the effect of setting "hardened_usercopy=on" on the kernel
+         command line. This can be disabled with "hardened_usercopy=off".
+
 endmenu
 
 menu "Hardening of kernel data structures"