X-Git-Url: https://jxself.org/git/?a=blobdiff_plain;f=kconfig_hardened_check%2F__init__.py;h=a926402426c3eba4ba100a9fb0f17b4a81d4bcfa;hb=3f57717b4ec311b04fbc658616f835f1f3abbf51;hp=75659dc40677848ec8785eec046f81b64f60af3b;hpb=52bd20f0faf3cf5286816fe3652054cceb740f35;p=kconfig-hardened-check.git diff --git a/kconfig_hardened_check/__init__.py b/kconfig_hardened_check/__init__.py index 75659dc..a926402 100644 --- a/kconfig_hardened_check/__init__.py +++ b/kconfig_hardened_check/__init__.py @@ -16,8 +16,6 @@ # Mitigations of CPU vulnerabilities: # Аrch-independent: # X86: -# spec_store_bypass_disable=on -# l1tf=full,force # l1d_flush=on (a part of the l1tf option) # mds=full,nosmt # tsx=off @@ -732,8 +730,17 @@ def add_cmdline_checks(l, arch): l += [CmdlineCheck('self_protection', 'defconfig', 'nopti', 'is not set')] l += [CmdlineCheck('self_protection', 'defconfig', 'nospectre_v1', 'is not set')] l += [CmdlineCheck('self_protection', 'defconfig', 'nospectre_v2', 'is not set')] + l += [CmdlineCheck('self_protection', 'defconfig', 'nospec_store_bypass_disable', 'is not set')] l += [OR(CmdlineCheck('self_protection', 'defconfig', 'mitigations', 'is not off'), CmdlineCheck('self_protection', 'defconfig', 'mitigations', 'is not set'))] + l += [OR(CmdlineCheck('self_protection', 'defconfig', 'spectre_v2', 'is not off'), + CmdlineCheck('self_protection', 'defconfig', 'spectre_v2', 'is not set'))] + l += [OR(CmdlineCheck('self_protection', 'defconfig', 'spectre_v2_user', 'is not off'), + CmdlineCheck('self_protection', 'defconfig', 'spectre_v2_user', 'is not set'))] + l += [OR(CmdlineCheck('self_protection', 'defconfig', 'spec_store_bypass_disable', 'is not off'), + CmdlineCheck('self_protection', 'defconfig', 'spec_store_bypass_disable', 'is not set'))] + l += [OR(CmdlineCheck('self_protection', 'defconfig', 'l1tf', 'is not off'), + CmdlineCheck('self_protection', 'defconfig', 'l1tf', 'is not set'))] if arch == 'ARM64': l += [OR(CmdlineCheck('self_protection', 'defconfig', 'rodata', 'full'), AND(KconfigCheck('self_protection', 'defconfig', 'RODATA_FULL_DEFAULT_ENABLED', 'y'), @@ -780,9 +787,6 @@ def add_cmdline_checks(l, arch): # 'self_protection', 'clipos' l += [CmdlineCheck('self_protection', 'clipos', 'page_alloc.shuffle', '1')] - if arch in ('X86_64', 'X86_32'): - l += [AND(CmdlineCheck('self_protection', 'clipos', 'spectre_v2', 'on'), - CmdlineCheck('self_protection', 'defconfig', 'nospectre_v2', 'is not set'))] # 'cut_attack_surface', 'kspp' if arch == 'X86_64': @@ -939,17 +943,26 @@ def parse_kconfig_file(parsed_options, fname): def normalize_cmdline_options(option, value): # Don't normalize the cmdline option values if # the Linux kernel doesn't use kstrtobool() for them + if option == 'debugfs': + # See debugfs_kernel() in fs/debugfs/inode.c + return value + if option == 'mitigations': + # See mitigations_parse_cmdline() in kernel/cpu.c + return value if option == 'pti': - # See pti_check_boottime_disable() in linux/arch/x86/mm/pti.c + # See pti_check_boottime_disable() in arch/x86/mm/pti.c return value if option == 'spectre_v2': - # See spectre_v2_parse_cmdline() in linux/arch/x86/kernel/cpu/bugs.c + # See spectre_v2_parse_cmdline() in arch/x86/kernel/cpu/bugs.c return value - if option == 'debugfs': - # See debugfs_kernel() in fs/debugfs/inode.c + if option == 'spectre_v2_user': + # See spectre_v2_parse_user_cmdline() in arch/x86/kernel/cpu/bugs.c return value - if option == 'mitigations': - # See mitigations_parse_cmdline() in linux/kernel/cpu.c + if option == 'spec_store_bypass_disable': + # See ssb_parse_cmdline() in arch/x86/kernel/cpu/bugs.c + return value + if option == 'l1tf': + # See l1tf_cmdline() in arch/x86/kernel/cpu/bugs.c return value # Implement a limited part of the kstrtobool() logic