Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
kernel-hardening-checker
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
fact-depend
kernel-hardening-checker
Commits
5e9f4868
Commit
5e9f4868
authored
Jan 22, 2022
by
Alexander Popov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Introduce KconfigCheck class
parent
7ed482ba
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
210 additions
and
208 deletions
+210
-208
__init__.py
kconfig_hardened_check/__init__.py
+210
-208
No files found.
kconfig_hardened_check/__init__.py
View file @
5e9f4868
...
@@ -106,6 +106,8 @@ class OptCheck:
...
@@ -106,6 +106,8 @@ class OptCheck:
return
True
return
True
return
False
return
False
class
KconfigCheck
(
OptCheck
):
def
table_print
(
self
,
_mode
,
with_results
):
def
table_print
(
self
,
_mode
,
with_results
):
print
(
'CONFIG_{:<38}|{:^13}|{:^10}|{:^20}'
.
format
(
self
.
name
,
self
.
expected
,
self
.
decision
,
self
.
reason
),
end
=
''
)
print
(
'CONFIG_{:<38}|{:^13}|{:^10}|{:^20}'
.
format
(
self
.
name
,
self
.
expected
,
self
.
decision
,
self
.
reason
),
end
=
''
)
if
with_results
:
if
with_results
:
...
@@ -162,7 +164,7 @@ class ComplexOptCheck:
...
@@ -162,7 +164,7 @@ class ComplexOptCheck:
self
.
opts
=
opts
self
.
opts
=
opts
if
not
self
.
opts
:
if
not
self
.
opts
:
sys
.
exit
(
'[!] ERROR: empty {} check'
.
format
(
self
.
__class__
.
__name__
))
sys
.
exit
(
'[!] ERROR: empty {} check'
.
format
(
self
.
__class__
.
__name__
))
if
not
isinstance
(
opts
[
0
],
Opt
Check
):
if
not
isinstance
(
opts
[
0
],
Kconfig
Check
):
sys
.
exit
(
'[!] ERROR: invalid {} check: {}'
.
format
(
self
.
__class__
.
__name__
,
opts
))
sys
.
exit
(
'[!] ERROR: invalid {} check: {}'
.
format
(
self
.
__class__
.
__name__
,
opts
))
self
.
result
=
None
self
.
result
=
None
...
@@ -286,316 +288,316 @@ def detect_version(fname):
...
@@ -286,316 +288,316 @@ def detect_version(fname):
def
construct_checklist
(
l
,
arch
):
def
construct_checklist
(
l
,
arch
):
# Calling the
Opt
Check class constructor:
# Calling the
Kconfig
Check class constructor:
#
Opt
Check(reason, decision, name, expected)
#
Kconfig
Check(reason, decision, name, expected)
modules_not_set
=
Opt
Check
(
'cut_attack_surface'
,
'kspp'
,
'MODULES'
,
'is not set'
)
modules_not_set
=
Kconfig
Check
(
'cut_attack_surface'
,
'kspp'
,
'MODULES'
,
'is not set'
)
devmem_not_set
=
Opt
Check
(
'cut_attack_surface'
,
'kspp'
,
'DEVMEM'
,
'is not set'
)
# refers to LOCKDOWN
devmem_not_set
=
Kconfig
Check
(
'cut_attack_surface'
,
'kspp'
,
'DEVMEM'
,
'is not set'
)
# refers to LOCKDOWN
# 'self_protection', 'defconfig'
# 'self_protection', 'defconfig'
l
+=
[
Opt
Check
(
'self_protection'
,
'defconfig'
,
'BUG'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'BUG'
,
'y'
)]
l
+=
[
Opt
Check
(
'self_protection'
,
'defconfig'
,
'SLUB_DEBUG'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'SLUB_DEBUG'
,
'y'
)]
l
+=
[
Opt
Check
(
'self_protection'
,
'defconfig'
,
'GCC_PLUGINS'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'GCC_PLUGINS'
,
'y'
)]
l
+=
[
OR
(
Opt
Check
(
'self_protection'
,
'defconfig'
,
'STACKPROTECTOR_STRONG'
,
'y'
),
l
+=
[
OR
(
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'STACKPROTECTOR_STRONG'
,
'y'
),
Opt
Check
(
'self_protection'
,
'defconfig'
,
'CC_STACKPROTECTOR_STRONG'
,
'y'
))]
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'CC_STACKPROTECTOR_STRONG'
,
'y'
))]
l
+=
[
OR
(
Opt
Check
(
'self_protection'
,
'defconfig'
,
'STRICT_KERNEL_RWX'
,
'y'
),
l
+=
[
OR
(
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'STRICT_KERNEL_RWX'
,
'y'
),
Opt
Check
(
'self_protection'
,
'defconfig'
,
'DEBUG_RODATA'
,
'y'
))]
# before v4.11
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'DEBUG_RODATA'
,
'y'
))]
# before v4.11
l
+=
[
OR
(
Opt
Check
(
'self_protection'
,
'defconfig'
,
'STRICT_MODULE_RWX'
,
'y'
),
l
+=
[
OR
(
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'STRICT_MODULE_RWX'
,
'y'
),
Opt
Check
(
'self_protection'
,
'defconfig'
,
'DEBUG_SET_MODULE_RONX'
,
'y'
),
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'DEBUG_SET_MODULE_RONX'
,
'y'
),
modules_not_set
)]
# DEBUG_SET_MODULE_RONX was before v4.11
modules_not_set
)]
# DEBUG_SET_MODULE_RONX was before v4.11
l
+=
[
OR
(
Opt
Check
(
'self_protection'
,
'defconfig'
,
'REFCOUNT_FULL'
,
'y'
),
l
+=
[
OR
(
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'REFCOUNT_FULL'
,
'y'
),
VerCheck
((
5
,
5
)))]
# REFCOUNT_FULL is enabled by default since v5.5
VerCheck
((
5
,
5
)))]
# REFCOUNT_FULL is enabled by default since v5.5
iommu_support_is_set
=
Opt
Check
(
'self_protection'
,
'defconfig'
,
'IOMMU_SUPPORT'
,
'y'
)
iommu_support_is_set
=
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'IOMMU_SUPPORT'
,
'y'
)
l
+=
[
iommu_support_is_set
]
# is needed for mitigating DMA attacks
l
+=
[
iommu_support_is_set
]
# is needed for mitigating DMA attacks
if
arch
in
(
'X86_64'
,
'ARM64'
,
'X86_32'
):
if
arch
in
(
'X86_64'
,
'ARM64'
,
'X86_32'
):
l
+=
[
Opt
Check
(
'self_protection'
,
'defconfig'
,
'RANDOMIZE_BASE'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'RANDOMIZE_BASE'
,
'y'
)]
l
+=
[
Opt
Check
(
'self_protection'
,
'defconfig'
,
'THREAD_INFO_IN_TASK'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'THREAD_INFO_IN_TASK'
,
'y'
)]
if
arch
in
(
'X86_64'
,
'ARM64'
):
if
arch
in
(
'X86_64'
,
'ARM64'
):
l
+=
[
Opt
Check
(
'self_protection'
,
'defconfig'
,
'VMAP_STACK'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'VMAP_STACK'
,
'y'
)]
if
arch
in
(
'X86_64'
,
'X86_32'
):
if
arch
in
(
'X86_64'
,
'X86_32'
):
l
+=
[
Opt
Check
(
'self_protection'
,
'defconfig'
,
'MICROCODE'
,
'y'
)]
# is needed for mitigating CPU bugs
l
+=
[
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'MICROCODE'
,
'y'
)]
# is needed for mitigating CPU bugs
l
+=
[
Opt
Check
(
'self_protection'
,
'defconfig'
,
'RETPOLINE'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'RETPOLINE'
,
'y'
)]
l
+=
[
Opt
Check
(
'self_protection'
,
'defconfig'
,
'X86_SMAP'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'X86_SMAP'
,
'y'
)]
l
+=
[
Opt
Check
(
'self_protection'
,
'defconfig'
,
'SYN_COOKIES'
,
'y'
)]
# another reason?
l
+=
[
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'SYN_COOKIES'
,
'y'
)]
# another reason?
l
+=
[
OR
(
Opt
Check
(
'self_protection'
,
'defconfig'
,
'X86_UMIP'
,
'y'
),
l
+=
[
OR
(
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'X86_UMIP'
,
'y'
),
Opt
Check
(
'self_protection'
,
'defconfig'
,
'X86_INTEL_UMIP'
,
'y'
))]
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'X86_INTEL_UMIP'
,
'y'
))]
if
arch
in
(
'ARM64'
,
'ARM'
):
if
arch
in
(
'ARM64'
,
'ARM'
):
l
+=
[
Opt
Check
(
'self_protection'
,
'defconfig'
,
'STACKPROTECTOR_PER_TASK'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'STACKPROTECTOR_PER_TASK'
,
'y'
)]
if
arch
==
'X86_64'
:
if
arch
==
'X86_64'
:
l
+=
[
Opt
Check
(
'self_protection'
,
'defconfig'
,
'PAGE_TABLE_ISOLATION'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'PAGE_TABLE_ISOLATION'
,
'y'
)]
l
+=
[
Opt
Check
(
'self_protection'
,
'defconfig'
,
'RANDOMIZE_MEMORY'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'RANDOMIZE_MEMORY'
,
'y'
)]
l
+=
[
AND
(
Opt
Check
(
'self_protection'
,
'defconfig'
,
'INTEL_IOMMU'
,
'y'
),
l
+=
[
AND
(
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'INTEL_IOMMU'
,
'y'
),
iommu_support_is_set
)]
iommu_support_is_set
)]
l
+=
[
AND
(
Opt
Check
(
'self_protection'
,
'defconfig'
,
'AMD_IOMMU'
,
'y'
),
l
+=
[
AND
(
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'AMD_IOMMU'
,
'y'
),
iommu_support_is_set
)]
iommu_support_is_set
)]
if
arch
==
'ARM64'
:
if
arch
==
'ARM64'
:
l
+=
[
Opt
Check
(
'self_protection'
,
'defconfig'
,
'ARM64_PAN'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'ARM64_PAN'
,
'y'
)]
l
+=
[
Opt
Check
(
'self_protection'
,
'defconfig'
,
'ARM64_EPAN'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'ARM64_EPAN'
,
'y'
)]
l
+=
[
Opt
Check
(
'self_protection'
,
'defconfig'
,
'UNMAP_KERNEL_AT_EL0'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'UNMAP_KERNEL_AT_EL0'
,
'y'
)]
l
+=
[
OR
(
Opt
Check
(
'self_protection'
,
'defconfig'
,
'HARDEN_EL2_VECTORS'
,
'y'
),
l
+=
[
OR
(
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'HARDEN_EL2_VECTORS'
,
'y'
),
AND
(
Opt
Check
(
'self_protection'
,
'defconfig'
,
'RANDOMIZE_BASE'
,
'y'
),
AND
(
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'RANDOMIZE_BASE'
,
'y'
),
VerCheck
((
5
,
9
))))]
# HARDEN_EL2_VECTORS was included in RANDOMIZE_BASE in v5.9
VerCheck
((
5
,
9
))))]
# HARDEN_EL2_VECTORS was included in RANDOMIZE_BASE in v5.9
l
+=
[
Opt
Check
(
'self_protection'
,
'defconfig'
,
'RODATA_FULL_DEFAULT_ENABLED'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'RODATA_FULL_DEFAULT_ENABLED'
,
'y'
)]
l
+=
[
Opt
Check
(
'self_protection'
,
'defconfig'
,
'ARM64_PTR_AUTH_KERNEL'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'ARM64_PTR_AUTH_KERNEL'
,
'y'
)]
l
+=
[
Opt
Check
(
'self_protection'
,
'defconfig'
,
'ARM64_BTI_KERNEL'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'ARM64_BTI_KERNEL'
,
'y'
)]
l
+=
[
OR
(
Opt
Check
(
'self_protection'
,
'defconfig'
,
'HARDEN_BRANCH_PREDICTOR'
,
'y'
),
l
+=
[
OR
(
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'HARDEN_BRANCH_PREDICTOR'
,
'y'
),
VerCheck
((
5
,
10
)))]
# HARDEN_BRANCH_PREDICTOR is enabled by default since v5.10
VerCheck
((
5
,
10
)))]
# HARDEN_BRANCH_PREDICTOR is enabled by default since v5.10
l
+=
[
Opt
Check
(
'self_protection'
,
'defconfig'
,
'ARM64_MTE'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'ARM64_MTE'
,
'y'
)]
if
arch
==
'ARM'
:
if
arch
==
'ARM'
:
l
+=
[
Opt
Check
(
'self_protection'
,
'defconfig'
,
'CPU_SW_DOMAIN_PAN'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'CPU_SW_DOMAIN_PAN'
,
'y'
)]
l
+=
[
Opt
Check
(
'self_protection'
,
'defconfig'
,
'HARDEN_BRANCH_PREDICTOR'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'defconfig'
,
'HARDEN_BRANCH_PREDICTOR'
,
'y'
)]
# 'self_protection', 'kspp'
# 'self_protection', 'kspp'
l
+=
[
Opt
Check
(
'self_protection'
,
'kspp'
,
'SECURITY_DMESG_RESTRICT'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'kspp'
,
'SECURITY_DMESG_RESTRICT'
,
'y'
)]
l
+=
[
Opt
Check
(
'self_protection'
,
'kspp'
,
'BUG_ON_DATA_CORRUPTION'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'kspp'
,
'BUG_ON_DATA_CORRUPTION'
,
'y'
)]
l
+=
[
Opt
Check
(
'self_protection'
,
'kspp'
,
'DEBUG_WX'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'kspp'
,
'DEBUG_WX'
,
'y'
)]
l
+=
[
Opt
Check
(
'self_protection'
,
'kspp'
,
'SCHED_STACK_END_CHECK'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'kspp'
,
'SCHED_STACK_END_CHECK'
,
'y'
)]
l
+=
[
Opt
Check
(
'self_protection'
,
'kspp'
,
'SLAB_FREELIST_HARDENED'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'kspp'
,
'SLAB_FREELIST_HARDENED'
,
'y'
)]
l
+=
[
Opt
Check
(
'self_protection'
,
'kspp'
,
'SLAB_FREELIST_RANDOM'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'kspp'
,
'SLAB_FREELIST_RANDOM'
,
'y'
)]
l
+=
[
Opt
Check
(
'self_protection'
,
'kspp'
,
'SHUFFLE_PAGE_ALLOCATOR'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'kspp'
,
'SHUFFLE_PAGE_ALLOCATOR'
,
'y'
)]
l
+=
[
Opt
Check
(
'self_protection'
,
'kspp'
,
'FORTIFY_SOURCE'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'kspp'
,
'FORTIFY_SOURCE'
,
'y'
)]
l
+=
[
Opt
Check
(
'self_protection'
,
'kspp'
,
'DEBUG_LIST'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'kspp'
,
'DEBUG_LIST'
,
'y'
)]
l
+=
[
Opt
Check
(
'self_protection'
,
'kspp'
,
'DEBUG_SG'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'kspp'
,
'DEBUG_SG'
,
'y'
)]
l
+=
[
Opt
Check
(
'self_protection'
,
'kspp'
,
'DEBUG_CREDENTIALS'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'kspp'
,
'DEBUG_CREDENTIALS'
,
'y'
)]
l
+=
[
Opt
Check
(
'self_protection'
,
'kspp'
,
'DEBUG_NOTIFIERS'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'kspp'
,
'DEBUG_NOTIFIERS'
,
'y'
)]
l
+=
[
Opt
Check
(
'self_protection'
,
'kspp'
,
'INIT_ON_ALLOC_DEFAULT_ON'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'kspp'
,
'INIT_ON_ALLOC_DEFAULT_ON'
,
'y'
)]
l
+=
[
Opt
Check
(
'self_protection'
,
'kspp'
,
'GCC_PLUGIN_LATENT_ENTROPY'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'kspp'
,
'GCC_PLUGIN_LATENT_ENTROPY'
,
'y'
)]
randstruct_is_set
=
Opt
Check
(
'self_protection'
,
'kspp'
,
'GCC_PLUGIN_RANDSTRUCT'
,
'y'
)
randstruct_is_set
=
Kconfig
Check
(
'self_protection'
,
'kspp'
,
'GCC_PLUGIN_RANDSTRUCT'
,
'y'
)
l
+=
[
randstruct_is_set
]
l
+=
[
randstruct_is_set
]
hardened_usercopy_is_set
=
Opt
Check
(
'self_protection'
,
'kspp'
,
'HARDENED_USERCOPY'
,
'y'
)
hardened_usercopy_is_set
=
Kconfig
Check
(
'self_protection'
,
'kspp'
,
'HARDENED_USERCOPY'
,
'y'
)
l
+=
[
hardened_usercopy_is_set
]
l
+=
[
hardened_usercopy_is_set
]
l
+=
[
AND
(
Opt
Check
(
'self_protection'
,
'kspp'
,
'HARDENED_USERCOPY_FALLBACK'
,
'is not set'
),
l
+=
[
AND
(
Kconfig
Check
(
'self_protection'
,
'kspp'
,
'HARDENED_USERCOPY_FALLBACK'
,
'is not set'
),
hardened_usercopy_is_set
)]
hardened_usercopy_is_set
)]
l
+=
[
AND
(
Opt
Check
(
'self_protection'
,
'kspp'
,
'HARDENED_USERCOPY_PAGESPAN'
,
'is not set'
),
l
+=
[
AND
(
Kconfig
Check
(
'self_protection'
,
'kspp'
,
'HARDENED_USERCOPY_PAGESPAN'
,
'is not set'
),
hardened_usercopy_is_set
)]
hardened_usercopy_is_set
)]
l
+=
[
OR
(
Opt
Check
(
'self_protection'
,
'kspp'
,
'MODULE_SIG'
,
'y'
),
l
+=
[
OR
(
Kconfig
Check
(
'self_protection'
,
'kspp'
,
'MODULE_SIG'
,
'y'
),
modules_not_set
)]
modules_not_set
)]
l
+=
[
OR
(
Opt
Check
(
'self_protection'
,
'kspp'
,
'MODULE_SIG_ALL'
,
'y'
),
l
+=
[
OR
(
Kconfig
Check
(
'self_protection'
,
'kspp'
,
'MODULE_SIG_ALL'
,
'y'
),
modules_not_set
)]
modules_not_set
)]
l
+=
[
OR
(
Opt
Check
(
'self_protection'
,
'kspp'
,
'MODULE_SIG_SHA512'
,
'y'
),
l
+=
[
OR
(
Kconfig
Check
(
'self_protection'
,
'kspp'
,
'MODULE_SIG_SHA512'
,
'y'
),
modules_not_set
)]
modules_not_set
)]
l
+=
[
OR
(
Opt
Check
(
'self_protection'
,
'kspp'
,
'MODULE_SIG_FORCE'
,
'y'
),
l
+=
[
OR
(
Kconfig
Check
(
'self_protection'
,
'kspp'
,
'MODULE_SIG_FORCE'
,
'y'
),
modules_not_set
)]
# refers to LOCKDOWN
modules_not_set
)]
# refers to LOCKDOWN
l
+=
[
OR
(
Opt
Check
(
'self_protection'
,
'kspp'
,
'INIT_STACK_ALL_ZERO'
,
'y'
),
l
+=
[
OR
(
Kconfig
Check
(
'self_protection'
,
'kspp'
,
'INIT_STACK_ALL_ZERO'
,
'y'
),
Opt
Check
(
'self_protection'
,
'kspp'
,
'GCC_PLUGIN_STRUCTLEAK_BYREF_ALL'
,
'y'
))]
Kconfig
Check
(
'self_protection'
,
'kspp'
,
'GCC_PLUGIN_STRUCTLEAK_BYREF_ALL'
,
'y'
))]
l
+=
[
OR
(
Opt
Check
(
'self_protection'
,
'kspp'
,
'INIT_ON_FREE_DEFAULT_ON'
,
'y'
),
l
+=
[
OR
(
Kconfig
Check
(
'self_protection'
,
'kspp'
,
'INIT_ON_FREE_DEFAULT_ON'
,
'y'
),
Opt
Check
(
'self_protection'
,
'kspp'
,
'PAGE_POISONING_ZERO'
,
'y'
))]
Kconfig
Check
(
'self_protection'
,
'kspp'
,
'PAGE_POISONING_ZERO'
,
'y'
))]
# CONFIG_INIT_ON_FREE_DEFAULT_ON was added in v5.3.
# CONFIG_INIT_ON_FREE_DEFAULT_ON was added in v5.3.
# CONFIG_PAGE_POISONING_ZERO was removed in v5.11.
# CONFIG_PAGE_POISONING_ZERO was removed in v5.11.
# Starting from v5.11 CONFIG_PAGE_POISONING unconditionally checks
# Starting from v5.11 CONFIG_PAGE_POISONING unconditionally checks
# the 0xAA poison pattern on allocation.
# the 0xAA poison pattern on allocation.
# That brings higher performance penalty.
# That brings higher performance penalty.
if
arch
in
(
'X86_64'
,
'ARM64'
,
'X86_32'
):
if
arch
in
(
'X86_64'
,
'ARM64'
,
'X86_32'
):
stackleak_is_set
=
Opt
Check
(
'self_protection'
,
'kspp'
,
'GCC_PLUGIN_STACKLEAK'
,
'y'
)
stackleak_is_set
=
Kconfig
Check
(
'self_protection'
,
'kspp'
,
'GCC_PLUGIN_STACKLEAK'
,
'y'
)
l
+=
[
stackleak_is_set
]
l
+=
[
stackleak_is_set
]
l
+=
[
Opt
Check
(
'self_protection'
,
'kspp'
,
'RANDOMIZE_KSTACK_OFFSET_DEFAULT'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'kspp'
,
'RANDOMIZE_KSTACK_OFFSET_DEFAULT'
,
'y'
)]
if
arch
in
(
'X86_64'
,
'X86_32'
):
if
arch
in
(
'X86_64'
,
'X86_32'
):
l
+=
[
Opt
Check
(
'self_protection'
,
'kspp'
,
'DEFAULT_MMAP_MIN_ADDR'
,
'65536'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'kspp'
,
'DEFAULT_MMAP_MIN_ADDR'
,
'65536'
)]
if
arch
in
(
'ARM64'
,
'ARM'
):
if
arch
in
(
'ARM64'
,
'ARM'
):
l
+=
[
Opt
Check
(
'self_protection'
,
'kspp'
,
'DEFAULT_MMAP_MIN_ADDR'
,
'32768'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'kspp'
,
'DEFAULT_MMAP_MIN_ADDR'
,
'32768'
)]
l
+=
[
Opt
Check
(
'self_protection'
,
'kspp'
,
'SYN_COOKIES'
,
'y'
)]
# another reason?
l
+=
[
Kconfig
Check
(
'self_protection'
,
'kspp'
,
'SYN_COOKIES'
,
'y'
)]
# another reason?
if
arch
==
'ARM64'
:
if
arch
==
'ARM64'
:
l
+=
[
Opt
Check
(
'self_protection'
,
'kspp'
,
'ARM64_SW_TTBR0_PAN'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'kspp'
,
'ARM64_SW_TTBR0_PAN'
,
'y'
)]
if
arch
==
'X86_32'
:
if
arch
==
'X86_32'
:
l
+=
[
Opt
Check
(
'self_protection'
,
'kspp'
,
'PAGE_TABLE_ISOLATION'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'kspp'
,
'PAGE_TABLE_ISOLATION'
,
'y'
)]
l
+=
[
Opt
Check
(
'self_protection'
,
'kspp'
,
'HIGHMEM64G'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'kspp'
,
'HIGHMEM64G'
,
'y'
)]
l
+=
[
Opt
Check
(
'self_protection'
,
'kspp'
,
'X86_PAE'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'kspp'
,
'X86_PAE'
,
'y'
)]
# 'self_protection', 'maintainer'
# 'self_protection', 'maintainer'
ubsan_bounds_is_set
=
Opt
Check
(
'self_protection'
,
'maintainer'
,
'UBSAN_BOUNDS'
,
'y'
)
# only array index bounds checking
ubsan_bounds_is_set
=
Kconfig
Check
(
'self_protection'
,
'maintainer'
,
'UBSAN_BOUNDS'
,
'y'
)
# only array index bounds checking
l
+=
[
ubsan_bounds_is_set
]
# recommended by Kees Cook in /issues/53
l
+=
[
ubsan_bounds_is_set
]
# recommended by Kees Cook in /issues/53
l
+=
[
AND
(
Opt
Check
(
'self_protection'
,
'maintainer'
,
'UBSAN_SANITIZE_ALL'
,
'y'
),
l
+=
[
AND
(
Kconfig
Check
(
'self_protection'
,
'maintainer'
,
'UBSAN_SANITIZE_ALL'
,
'y'
),
ubsan_bounds_is_set
)]
# recommended by Kees Cook in /issues/53
ubsan_bounds_is_set
)]
# recommended by Kees Cook in /issues/53
l
+=
[
AND
(
Opt
Check
(
'self_protection'
,
'maintainer'
,
'UBSAN_TRAP'
,
'y'
),
l
+=
[
AND
(
Kconfig
Check
(
'self_protection'
,
'maintainer'
,
'UBSAN_TRAP'
,
'y'
),
ubsan_bounds_is_set
)]
# recommended by Kees Cook in /issues/53
ubsan_bounds_is_set
)]
# recommended by Kees Cook in /issues/53
# 'self_protection', 'clipos'
# 'self_protection', 'clipos'
l
+=
[
Opt
Check
(
'self_protection'
,
'clipos'
,
'DEBUG_VIRTUAL'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'clipos'
,
'DEBUG_VIRTUAL'
,
'y'
)]
l
+=
[
Opt
Check
(
'self_protection'
,
'clipos'
,
'STATIC_USERMODEHELPER'
,
'y'
)]
# needs userspace support
l
+=
[
Kconfig
Check
(
'self_protection'
,
'clipos'
,
'STATIC_USERMODEHELPER'
,
'y'
)]
# needs userspace support
l
+=
[
Opt
Check
(
'self_protection'
,
'clipos'
,
'EFI_DISABLE_PCI_DMA'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'clipos'
,
'EFI_DISABLE_PCI_DMA'
,
'y'
)]
l
+=
[
Opt
Check
(
'self_protection'
,
'clipos'
,
'SLAB_MERGE_DEFAULT'
,
'is not set'
)]
# slab_nomerge
l
+=
[
Kconfig
Check
(
'self_protection'
,
'clipos'
,
'SLAB_MERGE_DEFAULT'
,
'is not set'
)]
# slab_nomerge
l
+=
[
Opt
Check
(
'self_protection'
,
'clipos'
,
'RANDOM_TRUST_BOOTLOADER'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'clipos'
,
'RANDOM_TRUST_BOOTLOADER'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'self_protection'
,
'clipos'
,
'RANDOM_TRUST_CPU'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'clipos'
,
'RANDOM_TRUST_CPU'
,
'is not set'
)]
l
+=
[
AND
(
Opt
Check
(
'self_protection'
,
'clipos'
,
'GCC_PLUGIN_RANDSTRUCT_PERFORMANCE'
,
'is not set'
),
l
+=
[
AND
(
Kconfig
Check
(
'self_protection'
,
'clipos'
,
'GCC_PLUGIN_RANDSTRUCT_PERFORMANCE'
,
'is not set'
),
randstruct_is_set
)]
randstruct_is_set
)]
if
arch
in
(
'X86_64'
,
'ARM64'
,
'X86_32'
):
if
arch
in
(
'X86_64'
,
'ARM64'
,
'X86_32'
):
l
+=
[
AND
(
Opt
Check
(
'self_protection'
,
'clipos'
,
'STACKLEAK_METRICS'
,
'is not set'
),
l
+=
[
AND
(
Kconfig
Check
(
'self_protection'
,
'clipos'
,
'STACKLEAK_METRICS'
,
'is not set'
),
stackleak_is_set
)]
stackleak_is_set
)]
l
+=
[
AND
(
Opt
Check
(
'self_protection'
,
'clipos'
,
'STACKLEAK_RUNTIME_DISABLE'
,
'is not set'
),
l
+=
[
AND
(
Kconfig
Check
(
'self_protection'
,
'clipos'
,
'STACKLEAK_RUNTIME_DISABLE'
,
'is not set'
),
stackleak_is_set
)]
stackleak_is_set
)]
if
arch
in
(
'X86_64'
,
'X86_32'
):
if
arch
in
(
'X86_64'
,
'X86_32'
):
l
+=
[
AND
(
Opt
Check
(
'self_protection'
,
'clipos'
,
'INTEL_IOMMU_DEFAULT_ON'
,
'y'
),
l
+=
[
AND
(
Kconfig
Check
(
'self_protection'
,
'clipos'
,
'INTEL_IOMMU_DEFAULT_ON'
,
'y'
),
iommu_support_is_set
)]
iommu_support_is_set
)]
if
arch
==
'X86_64'
:
if
arch
==
'X86_64'
:
l
+=
[
AND
(
Opt
Check
(
'self_protection'
,
'clipos'
,
'INTEL_IOMMU_SVM'
,
'y'
),
l
+=
[
AND
(
Kconfig
Check
(
'self_protection'
,
'clipos'
,
'INTEL_IOMMU_SVM'
,
'y'
),
iommu_support_is_set
)]
iommu_support_is_set
)]
if
arch
==
'X86_32'
:
if
arch
==
'X86_32'
:
l
+=
[
AND
(
Opt
Check
(
'self_protection'
,
'clipos'
,
'INTEL_IOMMU'
,
'y'
),
l
+=
[
AND
(
Kconfig
Check
(
'self_protection'
,
'clipos'
,
'INTEL_IOMMU'
,
'y'
),
iommu_support_is_set
)]
iommu_support_is_set
)]
# 'self_protection', 'my'
# 'self_protection', 'my'
l
+=
[
Opt
Check
(
'self_protection'
,
'my'
,
'RESET_ATTACK_MITIGATION'
,
'y'
)]
# needs userspace support (systemd)
l
+=
[
Kconfig
Check
(
'self_protection'
,
'my'
,
'RESET_ATTACK_MITIGATION'
,
'y'
)]
# needs userspace support (systemd)
if
arch
==
'X86_64'
:
if
arch
==
'X86_64'
:
l
+=
[
AND
(
Opt
Check
(
'self_protection'
,
'my'
,
'AMD_IOMMU_V2'
,
'y'
),
l
+=
[
AND
(
Kconfig
Check
(
'self_protection'
,
'my'
,
'AMD_IOMMU_V2'
,
'y'
),
iommu_support_is_set
)]
iommu_support_is_set
)]
if
arch
==
'ARM64'
:
if
arch
==
'ARM64'
:
l
+=
[
Opt
Check
(
'self_protection'
,
'my'
,
'SHADOW_CALL_STACK'
,
'y'
)]
# depends on clang, maybe it's alternative to STACKPROTECTOR_STRONG
l
+=
[
Kconfig
Check
(
'self_protection'
,
'my'
,
'SHADOW_CALL_STACK'
,
'y'
)]
# depends on clang, maybe it's alternative to STACKPROTECTOR_STRONG
l
+=
[
Opt
Check
(
'self_protection'
,
'my'
,
'KASAN_HW_TAGS'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'self_protection'
,
'my'
,
'KASAN_HW_TAGS'
,
'y'
)]
cfi_clang_is_set
=
Opt
Check
(
'self_protection'
,
'my'
,
'CFI_CLANG'
,
'y'
)
cfi_clang_is_set
=
Kconfig
Check
(
'self_protection'
,
'my'
,
'CFI_CLANG'
,
'y'
)
l
+=
[
cfi_clang_is_set
]
l
+=
[
cfi_clang_is_set
]
l
+=
[
AND
(
Opt
Check
(
'self_protection'
,
'my'
,
'CFI_PERMISSIVE'
,
'is not set'
),
l
+=
[
AND
(
Kconfig
Check
(
'self_protection'
,
'my'
,
'CFI_PERMISSIVE'
,
'is not set'
),
cfi_clang_is_set
)]
cfi_clang_is_set
)]
# 'security_policy'
# 'security_policy'
if
arch
in
(
'X86_64'
,
'ARM64'
,
'X86_32'
):
if
arch
in
(
'X86_64'
,
'ARM64'
,
'X86_32'
):
l
+=
[
Opt
Check
(
'security_policy'
,
'defconfig'
,
'SECURITY'
,
'y'
)]
# and choose your favourite LSM
l
+=
[
Kconfig
Check
(
'security_policy'
,
'defconfig'
,
'SECURITY'
,
'y'
)]
# and choose your favourite LSM
if
arch
==
'ARM'
:
if
arch
==
'ARM'
:
l
+=
[
Opt
Check
(
'security_policy'
,
'kspp'
,
'SECURITY'
,
'y'
)]
# and choose your favourite LSM
l
+=
[
Kconfig
Check
(
'security_policy'
,
'kspp'
,
'SECURITY'
,
'y'
)]
# and choose your favourite LSM
l
+=
[
Opt
Check
(
'security_policy'
,
'kspp'
,
'SECURITY_YAMA'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'security_policy'
,
'kspp'
,
'SECURITY_YAMA'
,
'y'
)]
l
+=
[
OR
(
Opt
Check
(
'security_policy'
,
'my'
,
'SECURITY_WRITABLE_HOOKS'
,
'is not set'
),
l
+=
[
OR
(
Kconfig
Check
(
'security_policy'
,
'my'
,
'SECURITY_WRITABLE_HOOKS'
,
'is not set'
),
Opt
Check
(
'security_policy'
,
'kspp'
,
'SECURITY_SELINUX_DISABLE'
,
'is not set'
))]
Kconfig
Check
(
'security_policy'
,
'kspp'
,
'SECURITY_SELINUX_DISABLE'
,
'is not set'
))]
l
+=
[
Opt
Check
(
'security_policy'
,
'clipos'
,
'SECURITY_LOCKDOWN_LSM'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'security_policy'
,
'clipos'
,
'SECURITY_LOCKDOWN_LSM'
,
'y'
)]
l
+=
[
Opt
Check
(
'security_policy'
,
'clipos'
,
'SECURITY_LOCKDOWN_LSM_EARLY'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'security_policy'
,
'clipos'
,
'SECURITY_LOCKDOWN_LSM_EARLY'
,
'y'
)]
l
+=
[
Opt
Check
(
'security_policy'
,
'clipos'
,
'LOCK_DOWN_KERNEL_FORCE_CONFIDENTIALITY'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'security_policy'
,
'clipos'
,
'LOCK_DOWN_KERNEL_FORCE_CONFIDENTIALITY'
,
'y'
)]
l
+=
[
Opt
Check
(
'security_policy'
,
'my'
,
'SECURITY_SAFESETID'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'security_policy'
,
'my'
,
'SECURITY_SAFESETID'
,
'y'
)]
loadpin_is_set
=
Opt
Check
(
'security_policy'
,
'my'
,
'SECURITY_LOADPIN'
,
'y'
)
loadpin_is_set
=
Kconfig
Check
(
'security_policy'
,
'my'
,
'SECURITY_LOADPIN'
,
'y'
)
l
+=
[
loadpin_is_set
]
# needs userspace support
l
+=
[
loadpin_is_set
]
# needs userspace support
l
+=
[
AND
(
Opt
Check
(
'security_policy'
,
'my'
,
'SECURITY_LOADPIN_ENFORCE'
,
'y'
),
l
+=
[
AND
(
Kconfig
Check
(
'security_policy'
,
'my'
,
'SECURITY_LOADPIN_ENFORCE'
,
'y'
),
loadpin_is_set
)]
loadpin_is_set
)]
# 'cut_attack_surface', 'defconfig'
# 'cut_attack_surface', 'defconfig'
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'defconfig'
,
'SECCOMP'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'defconfig'
,
'SECCOMP'
,
'y'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'defconfig'
,
'SECCOMP_FILTER'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'defconfig'
,
'SECCOMP_FILTER'
,
'y'
)]
if
arch
in
(
'X86_64'
,
'ARM64'
,
'X86_32'
):
if
arch
in
(
'X86_64'
,
'ARM64'
,
'X86_32'
):
l
+=
[
OR
(
Opt
Check
(
'cut_attack_surface'
,
'defconfig'
,
'STRICT_DEVMEM'
,
'y'
),
l
+=
[
OR
(
Kconfig
Check
(
'cut_attack_surface'
,
'defconfig'
,
'STRICT_DEVMEM'
,
'y'
),
devmem_not_set
)]
# refers to LOCKDOWN
devmem_not_set
)]
# refers to LOCKDOWN
# 'cut_attack_surface', 'kspp'
# 'cut_attack_surface', 'kspp'
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'kspp'
,
'ACPI_CUSTOM_METHOD'
,
'is not set'
)]
# refers to LOCKDOWN
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'kspp'
,
'ACPI_CUSTOM_METHOD'
,
'is not set'
)]
# refers to LOCKDOWN
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'kspp'
,
'COMPAT_BRK'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'kspp'
,
'COMPAT_BRK'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'kspp'
,
'DEVKMEM'
,
'is not set'
)]
# refers to LOCKDOWN
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'kspp'
,
'DEVKMEM'
,
'is not set'
)]
# refers to LOCKDOWN
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'kspp'
,
'COMPAT_VDSO'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'kspp'
,
'COMPAT_VDSO'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'kspp'
,
'BINFMT_MISC'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'kspp'
,
'BINFMT_MISC'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'kspp'
,
'INET_DIAG'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'kspp'
,
'INET_DIAG'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'kspp'
,
'KEXEC'
,
'is not set'
)]
# refers to LOCKDOWN
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'kspp'
,
'KEXEC'
,
'is not set'
)]
# refers to LOCKDOWN
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'kspp'
,
'PROC_KCORE'
,
'is not set'
)]
# refers to LOCKDOWN
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'kspp'
,
'PROC_KCORE'
,
'is not set'
)]
# refers to LOCKDOWN
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'kspp'
,
'LEGACY_PTYS'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'kspp'
,
'LEGACY_PTYS'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'kspp'
,
'HIBERNATION'
,
'is not set'
)]
# refers to LOCKDOWN
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'kspp'
,
'HIBERNATION'
,
'is not set'
)]
# refers to LOCKDOWN
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'kspp'
,
'IA32_EMULATION'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'kspp'
,
'IA32_EMULATION'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'kspp'
,
'X86_X32'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'kspp'
,
'X86_X32'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'kspp'
,
'MODIFY_LDT_SYSCALL'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'kspp'
,
'MODIFY_LDT_SYSCALL'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'kspp'
,
'OABI_COMPAT'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'kspp'
,
'OABI_COMPAT'
,
'is not set'
)]
l
+=
[
modules_not_set
]
l
+=
[
modules_not_set
]
l
+=
[
devmem_not_set
]
l
+=
[
devmem_not_set
]
l
+=
[
OR
(
Opt
Check
(
'cut_attack_surface'
,
'kspp'
,
'IO_STRICT_DEVMEM'
,
'y'
),
l
+=
[
OR
(
Kconfig
Check
(
'cut_attack_surface'
,
'kspp'
,
'IO_STRICT_DEVMEM'
,
'y'
),
devmem_not_set
)]
# refers to LOCKDOWN
devmem_not_set
)]
# refers to LOCKDOWN
if
arch
==
'ARM'
:
if
arch
==
'ARM'
:
l
+=
[
OR
(
Opt
Check
(
'cut_attack_surface'
,
'kspp'
,
'STRICT_DEVMEM'
,
'y'
),
l
+=
[
OR
(
Kconfig
Check
(
'cut_attack_surface'
,
'kspp'
,
'STRICT_DEVMEM'
,
'y'
),
devmem_not_set
)]
# refers to LOCKDOWN
devmem_not_set
)]
# refers to LOCKDOWN
if
arch
==
'X86_64'
:
if
arch
==
'X86_64'
:
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'kspp'
,
'LEGACY_VSYSCALL_NONE'
,
'y'
)]
# 'vsyscall=none'
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'kspp'
,
'LEGACY_VSYSCALL_NONE'
,
'y'
)]
# 'vsyscall=none'
# 'cut_attack_surface', 'grsecurity'
# 'cut_attack_surface', 'grsecurity'
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'ZSMALLOC_STAT'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'ZSMALLOC_STAT'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'PAGE_OWNER'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'PAGE_OWNER'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'DEBUG_KMEMLEAK'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'DEBUG_KMEMLEAK'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'BINFMT_AOUT'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'BINFMT_AOUT'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'KPROBE_EVENTS'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'KPROBE_EVENTS'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'UPROBE_EVENTS'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'UPROBE_EVENTS'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'GENERIC_TRACER'
,
'is not set'
)]
# refers to LOCKDOWN
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'GENERIC_TRACER'
,
'is not set'
)]
# refers to LOCKDOWN
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'FUNCTION_TRACER'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'FUNCTION_TRACER'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'STACK_TRACER'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'STACK_TRACER'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'HIST_TRIGGERS'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'HIST_TRIGGERS'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'BLK_DEV_IO_TRACE'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'BLK_DEV_IO_TRACE'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'PROC_VMCORE'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'PROC_VMCORE'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'PROC_PAGE_MONITOR'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'PROC_PAGE_MONITOR'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'USELIB'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'USELIB'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'CHECKPOINT_RESTORE'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'CHECKPOINT_RESTORE'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'USERFAULTFD'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'USERFAULTFD'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'HWPOISON_INJECT'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'HWPOISON_INJECT'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'MEM_SOFT_DIRTY'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'MEM_SOFT_DIRTY'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'DEVPORT'
,
'is not set'
)]
# refers to LOCKDOWN
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'DEVPORT'
,
'is not set'
)]
# refers to LOCKDOWN
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'DEBUG_FS'
,
'is not set'
)]
# refers to LOCKDOWN
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'DEBUG_FS'
,
'is not set'
)]
# refers to LOCKDOWN
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'NOTIFIER_ERROR_INJECTION'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'NOTIFIER_ERROR_INJECTION'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'FAIL_FUTEX'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'FAIL_FUTEX'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'PUNIT_ATOM_DEBUG'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'PUNIT_ATOM_DEBUG'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'ACPI_CONFIGFS'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'ACPI_CONFIGFS'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'EDAC_DEBUG'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'EDAC_DEBUG'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'DRM_I915_DEBUG'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'DRM_I915_DEBUG'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'BCACHE_CLOSURES_DEBUG'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'BCACHE_CLOSURES_DEBUG'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'DVB_C8SECTPFE'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'DVB_C8SECTPFE'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'MTD_SLRAM'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'MTD_SLRAM'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'MTD_PHRAM'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'MTD_PHRAM'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'IO_URING'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'IO_URING'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'KCMP'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'KCMP'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'RSEQ'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'RSEQ'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'LATENCYTOP'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'LATENCYTOP'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'KCOV'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'KCOV'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'PROVIDE_OHCI1394_DMA_INIT'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'PROVIDE_OHCI1394_DMA_INIT'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'SUNRPC_DEBUG'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'SUNRPC_DEBUG'
,
'is not set'
)]
l
+=
[
AND
(
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'PTDUMP_DEBUGFS'
,
'is not set'
),
l
+=
[
AND
(
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'PTDUMP_DEBUGFS'
,
'is not set'
),
Opt
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'X86_PTDUMP'
,
'is not set'
))]
Kconfig
Check
(
'cut_attack_surface'
,
'grsecurity'
,
'X86_PTDUMP'
,
'is not set'
))]
# 'cut_attack_surface', 'maintainer'
# 'cut_attack_surface', 'maintainer'
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'maintainer'
,
'DRM_LEGACY'
,
'is not set'
)]
# recommended by Daniel Vetter in /issues/38
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'maintainer'
,
'DRM_LEGACY'
,
'is not set'
)]
# recommended by Daniel Vetter in /issues/38
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'maintainer'
,
'FB'
,
'is not set'
)]
# recommended by Daniel Vetter in /issues/38
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'maintainer'
,
'FB'
,
'is not set'
)]
# recommended by Daniel Vetter in /issues/38
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'maintainer'
,
'VT'
,
'is not set'
)]
# recommended by Daniel Vetter in /issues/38
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'maintainer'
,
'VT'
,
'is not set'
)]
# recommended by Daniel Vetter in /issues/38
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'maintainer'
,
'BLK_DEV_FD'
,
'is not set'
)]
# recommended by Denis Efremov in /pull/54
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'maintainer'
,
'BLK_DEV_FD'
,
'is not set'
)]
# recommended by Denis Efremov in /pull/54
# 'cut_attack_surface', 'grapheneos'
# 'cut_attack_surface', 'grapheneos'
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'grapheneos'
,
'AIO'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'grapheneos'
,
'AIO'
,
'is not set'
)]
# 'cut_attack_surface', 'clipos'
# 'cut_attack_surface', 'clipos'
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'clipos'
,
'STAGING'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'clipos'
,
'STAGING'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'clipos'
,
'KSM'
,
'is not set'
)]
# to prevent FLUSH+RELOAD attack
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'clipos'
,
'KSM'
,
'is not set'
)]
# to prevent FLUSH+RELOAD attack
# l += [
Opt
Check('cut_attack_surface', 'clipos', 'IKCONFIG', 'is not set')] # no, IKCONFIG is needed for this check :)
# l += [
Kconfig
Check('cut_attack_surface', 'clipos', 'IKCONFIG', 'is not set')] # no, IKCONFIG is needed for this check :)
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'clipos'
,
'KALLSYMS'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'clipos'
,
'KALLSYMS'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'clipos'
,
'X86_VSYSCALL_EMULATION'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'clipos'
,
'X86_VSYSCALL_EMULATION'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'clipos'
,
'MAGIC_SYSRQ'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'clipos'
,
'MAGIC_SYSRQ'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'clipos'
,
'KEXEC_FILE'
,
'is not set'
)]
# refers to LOCKDOWN (permissive)
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'clipos'
,
'KEXEC_FILE'
,
'is not set'
)]
# refers to LOCKDOWN (permissive)
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'clipos'
,
'USER_NS'
,
'is not set'
)]
# user.max_user_namespaces=0
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'clipos'
,
'USER_NS'
,
'is not set'
)]
# user.max_user_namespaces=0
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'clipos'
,
'X86_MSR'
,
'is not set'
)]
# refers to LOCKDOWN
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'clipos'
,
'X86_MSR'
,
'is not set'
)]
# refers to LOCKDOWN
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'clipos'
,
'X86_CPUID'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'clipos'
,
'X86_CPUID'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'clipos'
,
'X86_IOPL_IOPERM'
,
'is not set'
)]
# refers to LOCKDOWN
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'clipos'
,
'X86_IOPL_IOPERM'
,
'is not set'
)]
# refers to LOCKDOWN
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'clipos'
,
'ACPI_TABLE_UPGRADE'
,
'is not set'
)]
# refers to LOCKDOWN
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'clipos'
,
'ACPI_TABLE_UPGRADE'
,
'is not set'
)]
# refers to LOCKDOWN
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'clipos'
,
'EFI_CUSTOM_SSDT_OVERLAYS'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'clipos'
,
'EFI_CUSTOM_SSDT_OVERLAYS'
,
'is not set'
)]
l
+=
[
AND
(
Opt
Check
(
'cut_attack_surface'
,
'clipos'
,
'LDISC_AUTOLOAD'
,
'is not set'
),
l
+=
[
AND
(
Kconfig
Check
(
'cut_attack_surface'
,
'clipos'
,
'LDISC_AUTOLOAD'
,
'is not set'
),
PresenceCheck
(
'LDISC_AUTOLOAD'
))]
PresenceCheck
(
'LDISC_AUTOLOAD'
))]
if
arch
in
(
'X86_64'
,
'X86_32'
):
if
arch
in
(
'X86_64'
,
'X86_32'
):
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'clipos'
,
'X86_INTEL_TSX_MODE_OFF'
,
'y'
)]
# tsx=off
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'clipos'
,
'X86_INTEL_TSX_MODE_OFF'
,
'y'
)]
# tsx=off
# 'cut_attack_surface', 'lockdown'
# 'cut_attack_surface', 'lockdown'
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'lockdown'
,
'EFI_TEST'
,
'is not set'
)]
# refers to LOCKDOWN
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'lockdown'
,
'EFI_TEST'
,
'is not set'
)]
# refers to LOCKDOWN
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'lockdown'
,
'BPF_SYSCALL'
,
'is not set'
)]
# refers to LOCKDOWN
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'lockdown'
,
'BPF_SYSCALL'
,
'is not set'
)]
# refers to LOCKDOWN
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'lockdown'
,
'MMIOTRACE_TEST'
,
'is not set'
)]
# refers to LOCKDOWN
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'lockdown'
,
'MMIOTRACE_TEST'
,
'is not set'
)]
# refers to LOCKDOWN
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'lockdown'
,
'KPROBES'
,
'is not set'
)]
# refers to LOCKDOWN
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'lockdown'
,
'KPROBES'
,
'is not set'
)]
# refers to LOCKDOWN
# 'cut_attack_surface', 'my'
# 'cut_attack_surface', 'my'
l
+=
[
OR
(
Opt
Check
(
'cut_attack_surface'
,
'my'
,
'TRIM_UNUSED_KSYMS'
,
'y'
),
l
+=
[
OR
(
Kconfig
Check
(
'cut_attack_surface'
,
'my'
,
'TRIM_UNUSED_KSYMS'
,
'y'
),
modules_not_set
)]
modules_not_set
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'my'
,
'MMIOTRACE'
,
'is not set'
)]
# refers to LOCKDOWN (permissive)
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'my'
,
'MMIOTRACE'
,
'is not set'
)]
# refers to LOCKDOWN (permissive)
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'my'
,
'LIVEPATCH'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'my'
,
'LIVEPATCH'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'my'
,
'IP_DCCP'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'my'
,
'IP_DCCP'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'my'
,
'IP_SCTP'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'my'
,
'IP_SCTP'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'my'
,
'FTRACE'
,
'is not set'
)]
# refers to LOCKDOWN
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'my'
,
'FTRACE'
,
'is not set'
)]
# refers to LOCKDOWN
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'my'
,
'VIDEO_VIVID'
,
'is not set'
)]
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'my'
,
'VIDEO_VIVID'
,
'is not set'
)]
l
+=
[
Opt
Check
(
'cut_attack_surface'
,
'my'
,
'INPUT_EVBUG'
,
'is not set'
)]
# Can be used as a keylogger
l
+=
[
Kconfig
Check
(
'cut_attack_surface'
,
'my'
,
'INPUT_EVBUG'
,
'is not set'
)]
# Can be used as a keylogger
# 'userspace_hardening'
# 'userspace_hardening'
if
arch
in
(
'X86_64'
,
'ARM64'
,
'X86_32'
):
if
arch
in
(
'X86_64'
,
'ARM64'
,
'X86_32'
):
l
+=
[
Opt
Check
(
'userspace_hardening'
,
'defconfig'
,
'INTEGRITY'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'userspace_hardening'
,
'defconfig'
,
'INTEGRITY'
,
'y'
)]
if
arch
==
'ARM'
:
if
arch
==
'ARM'
:
l
+=
[
Opt
Check
(
'userspace_hardening'
,
'my'
,
'INTEGRITY'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'userspace_hardening'
,
'my'
,
'INTEGRITY'
,
'y'
)]
if
arch
==
'ARM64'
:
if
arch
==
'ARM64'
:
l
+=
[
Opt
Check
(
'userspace_hardening'
,
'defconfig'
,
'ARM64_MTE'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'userspace_hardening'
,
'defconfig'
,
'ARM64_MTE'
,
'y'
)]
if
arch
in
(
'ARM'
,
'X86_32'
):
if
arch
in
(
'ARM'
,
'X86_32'
):
l
+=
[
Opt
Check
(
'userspace_hardening'
,
'defconfig'
,
'VMSPLIT_3G'
,
'y'
)]
l
+=
[
Kconfig
Check
(
'userspace_hardening'
,
'defconfig'
,
'VMSPLIT_3G'
,
'y'
)]
if
arch
in
(
'X86_64'
,
'ARM64'
):
if
arch
in
(
'X86_64'
,
'ARM64'
):
l
+=
[
Opt
Check
(
'userspace_hardening'
,
'clipos'
,
'ARCH_MMAP_RND_BITS'
,
'32'
)]
l
+=
[
Kconfig
Check
(
'userspace_hardening'
,
'clipos'
,
'ARCH_MMAP_RND_BITS'
,
'32'
)]
if
arch
in
(
'X86_32'
,
'ARM'
):
if
arch
in
(
'X86_32'
,
'ARM'
):
l
+=
[
Opt
Check
(
'userspace_hardening'
,
'my'
,
'ARCH_MMAP_RND_BITS'
,
'16'
)]
l
+=
[
Kconfig
Check
(
'userspace_hardening'
,
'my'
,
'ARCH_MMAP_RND_BITS'
,
'16'
)]
# l += [
Opt
Check('feature_test', 'my', 'LKDTM', 'm')] # only for debugging!
# l += [
Kconfig
Check('feature_test', 'my', 'LKDTM', 'm')] # only for debugging!
def
print_unknown_options
(
checklist
,
parsed_options
):
def
print_unknown_options
(
checklist
,
parsed_options
):
...
@@ -628,7 +630,7 @@ def print_checklist(mode, checklist, with_results):
...
@@ -628,7 +630,7 @@ def print_checklist(mode, checklist, with_results):
if
with_results
:
if
with_results
:
sep_line_len
+=
30
sep_line_len
+=
30
print
(
'='
*
sep_line_len
)
print
(
'='
*
sep_line_len
)
print
(
'{:^45}|{:^13}|{:^10}|{:^20}'
.
format
(
'option name'
,
'desired val'
,
'decision'
,
'reason'
),
end
=
''
)
print
(
'{:^45}|{:^13}|{:^10}|{:^20}'
.
format
(
'
kconfig
option name'
,
'desired val'
,
'decision'
,
'reason'
),
end
=
''
)
if
with_results
:
if
with_results
:
print
(
'| {}'
.
format
(
'check result'
),
end
=
''
)
print
(
'| {}'
.
format
(
'check result'
),
end
=
''
)
print
()
print
()
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment