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
67945c65
Commit
67945c65
authored
Jul 25, 2018
by
Alexander Popov
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'OR-from-anthraxx'
parents
f662d0ed
6d7703f4
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
156 additions
and
104 deletions
+156
-104
README.md
README.md
+98
-98
kconfig-hardened-check.py
kconfig-hardened-check.py
+58
-6
No files found.
README.md
View file @
67945c65
...
...
@@ -34,104 +34,104 @@ optional arguments:
### Script output for `Ubuntu 18.04 (Bionic Beaver)` kernel config
```
./kconfig-hardened-check.py -c config_files/ubuntu-bionic-generic.config
[+] Checking "ubuntu-bionic-generic.config" against hardening preferences...
option name | desired val | decision | reason ||
check result
===========================================================================================================
CONFIG_BUG | y | ubuntu18 | self_protection ||
OK
CONFIG_PAGE_TABLE_ISOLATION | y | ubuntu18 | self_protection ||
OK
CONFIG_RETPOLINE | y | ubuntu18 | self_protection ||
OK
CONFIG_X86_64 | y | ubuntu18 | self_protection ||
OK
CONFIG_STRICT_KERNEL_RWX | y | ubuntu18 | self_protection ||
OK
CONFIG_STRICT_MODULE_RWX | y | ubuntu18 | self_protection ||
OK
CONFIG_DEBUG_WX | y | ubuntu18 | self_protection ||
OK
CONFIG_RANDOMIZE_BASE | y | ubuntu18 | self_protection ||
OK
CONFIG_RANDOMIZE_MEMORY | y | ubuntu18 | self_protection ||
OK
CONFIG_CC_STACKPROTECTOR | y | ubuntu18 | self_protection ||
OK
CONFIG_CC_STACKPROTECTOR_STRONG | y | ubuntu18 | self_protection ||
OK
CONFIG_VMAP_STACK | y | ubuntu18 | self_protection ||
OK
CONFIG_THREAD_INFO_IN_TASK | y | ubuntu18 | self_protection ||
OK
CONFIG_SCHED_STACK_END_CHECK | y | ubuntu18 | self_protection ||
OK
CONFIG_SLUB_DEBUG | y | ubuntu18 | self_protection ||
OK
CONFIG_SLAB_FREELIST_HARDENED | y | ubuntu18 | self_protection ||
OK
CONFIG_SLAB_FREELIST_RANDOM | y | ubuntu18 | self_protection ||
OK
CONFIG_HARDENED_USERCOPY | y | ubuntu18 | self_protection ||
OK
CONFIG_FORTIFY_SOURCE | y | ubuntu18 | self_protection ||
OK
CONFIG_MODULE_SIG | y | ubuntu18 | self_protection ||
OK
CONFIG_MODULE_SIG_ALL | y | ubuntu18 | self_protection ||
OK
CONFIG_MODULE_SIG_SHA512 | y | ubuntu18 | self_protection ||
OK
CONFIG_SYN_COOKIES | y | ubuntu18 | self_protection ||
OK
CONFIG_DEFAULT_MMAP_MIN_ADDR | 65536 | ubuntu18 | self_protection ||
OK
CONFIG_BUG_ON_DATA_CORRUPTION | y | kspp | self_protection ||
FAIL: "is not set"
CONFIG_PAGE_POISONING | y | kspp | self_protection ||
FAIL: "is not set"
CONFIG_GCC_PLUGINS | y | kspp | self_protection ||
FAIL: "is not set"
CONFIG_GCC_PLUGIN_RANDSTRUCT | y | kspp | self_protection ||
FAIL: not found
CONFIG_GCC_PLUGIN_STRUCTLEAK | y | kspp | self_protection ||
FAIL: not found
CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL | y | kspp | self_protection ||
FAIL: not found
CONFIG_GCC_PLUGIN_LATENT_ENTROPY | y | kspp | self_protection ||
FAIL: not found
CONFIG_REFCOUNT_FULL | y | kspp | self_protection ||
FAIL: "is not set"
CONFIG_DEBUG_LIST | y | kspp | self_protection ||
FAIL: "is not set"
CONFIG_DEBUG_SG | y | kspp | self_protection ||
FAIL: "is not set"
CONFIG_DEBUG_CREDENTIALS | y | kspp | self_protection ||
FAIL: "is not set"
CONFIG_DEBUG_NOTIFIERS | y | kspp | self_protection ||
FAIL: "is not set"
CONFIG_MODULE_SIG_FORCE | y | kspp | self_protection ||
FAIL: "is not set"
CONFIG_HARDENED_USERCOPY_FALLBACK | is not set | kspp | self_protection ||
OK: not found
CONFIG_GCC_PLUGIN_STACKLEAK | y | my | self_protection ||
FAIL: not found
CONFIG_SLUB_DEBUG_ON | y | my | self_protection ||
FAIL: "is not set"
CONFIG_SECURITY_DMESG_RESTRICT | y | my | self_protection ||
FAIL: "is not set"
CONFIG_STATIC_USERMODEHELPER | y | my | self_protection ||
FAIL: "is not set"
CONFIG_PAGE_POISONING_NO_SANITY | is not set | my | self_protection ||
OK: not found
CONFIG_PAGE_POISONING_ZERO | is not set | my | self_protection ||
OK: not found
CONFIG_SECURITY | y | ubuntu18 | security_policy ||
OK
CONFIG_SECURITY_YAMA | y | ubuntu18 | security_policy ||
OK
CONFIG_SECURITY_SELINUX_DISABLE | is not set | ubuntu18 | security_policy ||
OK
CONFIG_SECCOMP | y | ubuntu18 | cut_attack_surface ||
OK
CONFIG_SECCOMP_FILTER | y | ubuntu18 | cut_attack_surface ||
OK
CONFIG_STRICT_DEVMEM | y | ubuntu18 | cut_attack_surface ||
OK
CONFIG_ACPI_CUSTOM_METHOD | is not set | ubuntu18 | cut_attack_surface ||
OK
CONFIG_COMPAT_BRK | is not set | ubuntu18 | cut_attack_surface ||
OK
CONFIG_DEVKMEM | is not set | ubuntu18 | cut_attack_surface ||
OK
CONFIG_COMPAT_VDSO | is not set | ubuntu18 | cut_attack_surface ||
OK
CONFIG_X86_PTDUMP | is not set | ubuntu18 | cut_attack_surface ||
OK
CONFIG_ZSMALLOC_STAT | is not set | ubuntu18 | cut_attack_surface ||
OK
CONFIG_PAGE_OWNER | is not set | ubuntu18 | cut_attack_surface ||
OK
CONFIG_DEBUG_KMEMLEAK | is not set | ubuntu18 | cut_attack_surface ||
OK
CONFIG_BINFMT_AOUT | is not set | ubuntu18 | cut_attack_surface ||
OK: not found
CONFIG_IO_STRICT_DEVMEM | y | kspp | cut_attack_surface ||
FAIL: "is not set"
CONFIG_LEGACY_VSYSCALL_NONE | y | kspp | cut_attack_surface ||
FAIL: "is not set"
CONFIG_BINFMT_MISC | is not set | kspp | cut_attack_surface ||
FAIL: "m"
CONFIG_INET_DIAG | is not set | kspp | cut_attack_surface ||
FAIL: "m"
CONFIG_KEXEC | is not set | kspp | cut_attack_surface ||
FAIL: "y"
CONFIG_PROC_KCORE | is not set | kspp | cut_attack_surface ||
FAIL: "y"
CONFIG_LEGACY_PTYS | is not set | kspp | cut_attack_surface ||
FAIL: "y"
CONFIG_IA32_EMULATION | is not set | kspp | cut_attack_surface ||
FAIL: "y"
CONFIG_X86_X32 | is not set | kspp | cut_attack_surface ||
FAIL: "y"
CONFIG_MODIFY_LDT_SYSCALL | is not set | kspp | cut_attack_surface ||
FAIL: "y"
CONFIG_HIBERNATION | is not set | kspp | cut_attack_surface ||
FAIL: "y"
CONFIG_KPROBES | is not set |grsecurity| cut_attack_surface ||
FAIL: "y"
CONFIG_UPROBES | is not set |grsecurity| cut_attack_surface ||
FAIL: "y"
CONFIG_GENERIC_TRACER | is not set |grsecurity| cut_attack_surface ||
FAIL: "y"
CONFIG_PROC_VMCORE | is not set |grsecurity| cut_attack_surface ||
FAIL: "y"
CONFIG_PROC_PAGE_MONITOR | is not set |grsecurity| cut_attack_surface ||
FAIL: "y"
CONFIG_USELIB | is not set |grsecurity| cut_attack_surface ||
FAIL: "y"
CONFIG_CHECKPOINT_RESTORE | is not set |grsecurity| cut_attack_surface ||
FAIL: "y"
CONFIG_USERFAULTFD | is not set |grsecurity| cut_attack_surface ||
FAIL: "y"
CONFIG_HWPOISON_INJECT | is not set |grsecurity| cut_attack_surface ||
FAIL: "m"
CONFIG_MEM_SOFT_DIRTY | is not set |grsecurity| cut_attack_surface ||
FAIL: "y"
CONFIG_DEVPORT | is not set |grsecurity| cut_attack_surface ||
FAIL: "y"
CONFIG_DEBUG_FS | is not set |grsecurity| cut_attack_surface ||
FAIL: "y"
CONFIG_NOTIFIER_ERROR_INJECTION | is not set |grsecurity| cut_attack_surface ||
FAIL: "m"
CONFIG_KEXEC_FILE | is not set | my | cut_attack_surface ||
FAIL: "y"
CONFIG_LIVEPATCH | is not set | my | cut_attack_surface ||
FAIL: "y"
CONFIG_USER_NS | is not set | my | cut_attack_surface ||
FAIL: "y"
CONFIG_IP_DCCP | is not set | my | cut_attack_surface ||
FAIL: "m"
CONFIG_IP_SCTP | is not set | my | cut_attack_surface ||
FAIL: "m"
CONFIG_FTRACE | is not set | my | cut_attack_surface ||
FAIL: "y"
CONFIG_PROFILING | is not set | my | cut_attack_surface ||
FAIL: "y"
CONFIG_BPF_JIT | is not set | my | cut_attack_surface ||
FAIL: "y"
CONFIG_BPF_SYSCALL | is not set | my | cut_attack_surface ||
FAIL: "y"
CONFIG_ARCH_MMAP_RND_BITS | 32 | my |userspace_protection||
FAIL: "28"
CONFIG_LKDTM | m | my | feature_test ||
FAIL: "is not set"
#
./kconfig-hardened-check.py -c config_files/ubuntu-bionic-generic.config
[+] Checking "
config_files/
ubuntu-bionic-generic.config" against hardening preferences...
option name | desired val | decision | reason ||
check result
===========================================================================================================
========
CONFIG_BUG | y | ubuntu18 | self_protection ||
OK
CONFIG_PAGE_TABLE_ISOLATION | y | ubuntu18 | self_protection ||
OK
CONFIG_RETPOLINE | y | ubuntu18 | self_protection ||
OK
CONFIG_X86_64 | y | ubuntu18 | self_protection ||
OK
CONFIG_STRICT_KERNEL_RWX | y | ubuntu18 | self_protection ||
OK
CONFIG_STRICT_MODULE_RWX | y | ubuntu18 | self_protection ||
OK
CONFIG_DEBUG_WX | y | ubuntu18 | self_protection ||
OK
CONFIG_RANDOMIZE_BASE | y | ubuntu18 | self_protection ||
OK
CONFIG_RANDOMIZE_MEMORY | y | ubuntu18 | self_protection ||
OK
CONFIG_CC_STACKPROTECTOR | y | ubuntu18 | self_protection ||
OK
CONFIG_CC_STACKPROTECTOR_STRONG | y | ubuntu18 | self_protection ||
OK
CONFIG_VMAP_STACK | y | ubuntu18 | self_protection ||
OK
CONFIG_THREAD_INFO_IN_TASK | y | ubuntu18 | self_protection ||
OK
CONFIG_SCHED_STACK_END_CHECK | y | ubuntu18 | self_protection ||
OK
CONFIG_SLUB_DEBUG | y | ubuntu18 | self_protection ||
OK
CONFIG_SLAB_FREELIST_HARDENED | y | ubuntu18 | self_protection ||
OK
CONFIG_SLAB_FREELIST_RANDOM | y | ubuntu18 | self_protection ||
OK
CONFIG_HARDENED_USERCOPY | y | ubuntu18 | self_protection ||
OK
CONFIG_FORTIFY_SOURCE | y | ubuntu18 | self_protection ||
OK
CONFIG_MODULE_SIG | y | ubuntu18 | self_protection ||
OK
CONFIG_MODULE_SIG_ALL | y | ubuntu18 | self_protection ||
OK
CONFIG_MODULE_SIG_SHA512 | y | ubuntu18 | self_protection ||
OK
CONFIG_SYN_COOKIES | y | ubuntu18 | self_protection ||
OK
CONFIG_DEFAULT_MMAP_MIN_ADDR | 65536 | ubuntu18 | self_protection ||
OK
CONFIG_BUG_ON_DATA_CORRUPTION | y | kspp | self_protection ||
FAIL: "is not set"
CONFIG_PAGE_POISONING | y | kspp | self_protection ||
FAIL: "is not set"
CONFIG_GCC_PLUGINS | y | kspp | self_protection ||
FAIL: "is not set"
CONFIG_GCC_PLUGIN_RANDSTRUCT | y | kspp | self_protection ||
FAIL: not found
CONFIG_GCC_PLUGIN_STRUCTLEAK | y | kspp | self_protection ||
FAIL: not found
CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL | y | kspp | self_protection ||
FAIL: not found
CONFIG_GCC_PLUGIN_LATENT_ENTROPY | y | kspp | self_protection ||
FAIL: not found
CONFIG_REFCOUNT_FULL | y | kspp | self_protection ||
FAIL: "is not set"
CONFIG_DEBUG_LIST | y | kspp | self_protection ||
FAIL: "is not set"
CONFIG_DEBUG_SG | y | kspp | self_protection ||
FAIL: "is not set"
CONFIG_DEBUG_CREDENTIALS | y | kspp | self_protection ||
FAIL: "is not set"
CONFIG_DEBUG_NOTIFIERS | y | kspp | self_protection ||
FAIL: "is not set"
CONFIG_MODULE_SIG_FORCE | y | kspp | self_protection ||
FAIL: "is not set"
CONFIG_HARDENED_USERCOPY_FALLBACK | is not set | kspp | self_protection ||
OK: not found
CONFIG_GCC_PLUGIN_STACKLEAK | y | my | self_protection ||
FAIL: not found
CONFIG_SLUB_DEBUG_ON | y | my | self_protection ||
FAIL: "is not set"
CONFIG_SECURITY_DMESG_RESTRICT | y | my | self_protection ||
FAIL: "is not set"
CONFIG_STATIC_USERMODEHELPER | y | my | self_protection ||
FAIL: "is not set"
CONFIG_PAGE_POISONING_NO_SANITY | is not set | my | self_protection ||
OK: not found
CONFIG_PAGE_POISONING_ZERO | is not set | my | self_protection ||
OK: not found
CONFIG_SECURITY | y | ubuntu18 | security_policy ||
OK
CONFIG_SECURITY_YAMA | y | ubuntu18 | security_policy ||
OK
CONFIG_SECURITY_SELINUX_DISABLE | is not set | ubuntu18 | security_policy ||
OK
CONFIG_SECCOMP | y | ubuntu18 | cut_attack_surface ||
OK
CONFIG_SECCOMP_FILTER | y | ubuntu18 | cut_attack_surface ||
OK
CONFIG_STRICT_DEVMEM | y | ubuntu18 | cut_attack_surface ||
OK
CONFIG_ACPI_CUSTOM_METHOD | is not set | ubuntu18 | cut_attack_surface ||
OK
CONFIG_COMPAT_BRK | is not set | ubuntu18 | cut_attack_surface ||
OK
CONFIG_DEVKMEM | is not set | ubuntu18 | cut_attack_surface ||
OK
CONFIG_COMPAT_VDSO | is not set | ubuntu18 | cut_attack_surface ||
OK
CONFIG_X86_PTDUMP | is not set | ubuntu18 | cut_attack_surface ||
OK
CONFIG_ZSMALLOC_STAT | is not set | ubuntu18 | cut_attack_surface ||
OK
CONFIG_PAGE_OWNER | is not set | ubuntu18 | cut_attack_surface ||
OK
CONFIG_DEBUG_KMEMLEAK | is not set | ubuntu18 | cut_attack_surface ||
OK
CONFIG_BINFMT_AOUT | is not set | ubuntu18 | cut_attack_surface ||
OK: not found
CONFIG_IO_STRICT_DEVMEM | y | kspp | cut_attack_surface ||
FAIL: "is not set"
CONFIG_LEGACY_VSYSCALL_NONE | y | kspp | cut_attack_surface ||
FAIL: "is not set"
CONFIG_BINFMT_MISC | is not set | kspp | cut_attack_surface ||
FAIL: "m"
CONFIG_INET_DIAG | is not set | kspp | cut_attack_surface ||
FAIL: "m"
CONFIG_KEXEC | is not set | kspp | cut_attack_surface ||
FAIL: "y"
CONFIG_PROC_KCORE | is not set | kspp | cut_attack_surface ||
FAIL: "y"
CONFIG_LEGACY_PTYS | is not set | kspp | cut_attack_surface ||
FAIL: "y"
CONFIG_IA32_EMULATION | is not set | kspp | cut_attack_surface ||
FAIL: "y"
CONFIG_X86_X32 | is not set | kspp | cut_attack_surface ||
FAIL: "y"
CONFIG_MODIFY_LDT_SYSCALL | is not set | kspp | cut_attack_surface ||
FAIL: "y"
CONFIG_HIBERNATION | is not set | kspp | cut_attack_surface ||
FAIL: "y"
CONFIG_KPROBES | is not set |grsecurity| cut_attack_surface ||
FAIL: "y"
CONFIG_UPROBES | is not set |grsecurity| cut_attack_surface ||
FAIL: "y"
CONFIG_GENERIC_TRACER | is not set |grsecurity| cut_attack_surface ||
FAIL: "y"
CONFIG_PROC_VMCORE | is not set |grsecurity| cut_attack_surface ||
FAIL: "y"
CONFIG_PROC_PAGE_MONITOR | is not set |grsecurity| cut_attack_surface ||
FAIL: "y"
CONFIG_USELIB | is not set |grsecurity| cut_attack_surface ||
FAIL: "y"
CONFIG_CHECKPOINT_RESTORE | is not set |grsecurity| cut_attack_surface ||
FAIL: "y"
CONFIG_USERFAULTFD | is not set |grsecurity| cut_attack_surface ||
FAIL: "y"
CONFIG_HWPOISON_INJECT | is not set |grsecurity| cut_attack_surface ||
FAIL: "m"
CONFIG_MEM_SOFT_DIRTY | is not set |grsecurity| cut_attack_surface ||
FAIL: "y"
CONFIG_DEVPORT | is not set |grsecurity| cut_attack_surface ||
FAIL: "y"
CONFIG_DEBUG_FS | is not set |grsecurity| cut_attack_surface ||
FAIL: "y"
CONFIG_NOTIFIER_ERROR_INJECTION | is not set |grsecurity| cut_attack_surface ||
FAIL: "m"
CONFIG_KEXEC_FILE | is not set | my | cut_attack_surface ||
FAIL: "y"
CONFIG_LIVEPATCH | is not set | my | cut_attack_surface ||
FAIL: "y"
CONFIG_USER_NS | is not set | my | cut_attack_surface ||
FAIL: "y"
CONFIG_IP_DCCP | is not set | my | cut_attack_surface ||
FAIL: "m"
CONFIG_IP_SCTP | is not set | my | cut_attack_surface ||
FAIL: "m"
CONFIG_FTRACE | is not set | my | cut_attack_surface ||
FAIL: "y"
CONFIG_PROFILING | is not set | my | cut_attack_surface ||
FAIL: "y"
CONFIG_BPF_JIT | is not set | my | cut_attack_surface ||
FAIL: "y"
CONFIG_BPF_SYSCALL | is not set | my | cut_attack_surface ||
FAIL: "y"
CONFIG_ARCH_MMAP_RND_BITS | 32 | my |userspace_protection||
FAIL: "28"
CONFIG_LKDTM | m | my | feature_test ||
FAIL: "is not set"
[-] config check is NOT PASSED: 52 errors
```
...
...
kconfig-hardened-check.py
View file @
67945c65
...
...
@@ -45,11 +45,59 @@ class OptCheck:
else
:
self
.
result
=
'FAIL: "'
+
self
.
state
+
'"'
if
self
.
result
.
startswith
(
'OK'
):
return
True
,
self
.
result
else
:
return
False
,
self
.
result
def
__repr__
(
self
):
return
'{} = {}'
.
format
(
self
.
name
,
self
.
state
)
class
OR
:
def
__init__
(
self
,
*
opts
):
self
.
opts
=
opts
self
.
result
=
None
# self.opts[0] is the option which this OR-check is about.
# Use case: OR(<X_is_hardened>, <X_is_disabled>)
@property
def
name
(
self
):
return
self
.
opts
[
0
]
.
name
@property
def
expected
(
self
):
return
self
.
opts
[
0
]
.
expected
@property
def
state
(
self
):
return
self
.
opts
[
0
]
.
state
@property
def
decision
(
self
):
return
self
.
opts
[
0
]
.
decision
@property
def
reason
(
self
):
return
self
.
opts
[
0
]
.
reason
def
check
(
self
):
for
i
,
opt
in
enumerate
(
self
.
opts
):
result
,
msg
=
opt
.
check
()
if
result
:
if
i
==
0
:
self
.
result
=
opt
.
result
else
:
self
.
result
=
'CONFIG_{}: {} ("{}")'
.
format
(
opt
.
name
,
opt
.
result
,
opt
.
expected
)
return
True
,
self
.
result
self
.
result
=
self
.
opts
[
0
]
.
result
return
False
,
self
.
result
def
construct_opt_checks
():
devmem_not_set
=
OptCheck
(
'DEVMEM'
,
'is not set'
,
'kspp'
,
'cut_attack_surface'
)
checklist
.
append
(
OptCheck
(
'BUG'
,
'y'
,
'ubuntu18'
,
'self_protection'
))
checklist
.
append
(
OptCheck
(
'PAGE_TABLE_ISOLATION'
,
'y'
,
'ubuntu18'
,
'self_protection'
))
checklist
.
append
(
OptCheck
(
'RETPOLINE'
,
'y'
,
'ubuntu18'
,
'self_protection'
))
...
...
@@ -103,7 +151,7 @@ def construct_opt_checks():
checklist
.
append
(
OptCheck
(
'SECCOMP'
,
'y'
,
'ubuntu18'
,
'cut_attack_surface'
))
checklist
.
append
(
OptCheck
(
'SECCOMP_FILTER'
,
'y'
,
'ubuntu18'
,
'cut_attack_surface'
))
checklist
.
append
(
O
ptCheck
(
'STRICT_DEVMEM'
,
'y'
,
'ubuntu18'
,
'cut_attack_surface'
))
checklist
.
append
(
O
R
(
OptCheck
(
'STRICT_DEVMEM'
,
'y'
,
'ubuntu18'
,
'cut_attack_surface'
),
devmem_not_set
))
checklist
.
append
(
OptCheck
(
'ACPI_CUSTOM_METHOD'
,
'is not set'
,
'ubuntu18'
,
'cut_attack_surface'
))
checklist
.
append
(
OptCheck
(
'COMPAT_BRK'
,
'is not set'
,
'ubuntu18'
,
'cut_attack_surface'
))
checklist
.
append
(
OptCheck
(
'DEVKMEM'
,
'is not set'
,
'ubuntu18'
,
'cut_attack_surface'
))
...
...
@@ -114,7 +162,7 @@ def construct_opt_checks():
checklist
.
append
(
OptCheck
(
'DEBUG_KMEMLEAK'
,
'is not set'
,
'ubuntu18'
,
'cut_attack_surface'
))
checklist
.
append
(
OptCheck
(
'BINFMT_AOUT'
,
'is not set'
,
'ubuntu18'
,
'cut_attack_surface'
))
checklist
.
append
(
O
ptCheck
(
'IO_STRICT_DEVMEM'
,
'y'
,
'kspp'
,
'cut_attack_surface'
))
checklist
.
append
(
O
R
(
OptCheck
(
'IO_STRICT_DEVMEM'
,
'y'
,
'kspp'
,
'cut_attack_surface'
),
devmem_not_set
))
checklist
.
append
(
OptCheck
(
'LEGACY_VSYSCALL_NONE'
,
'y'
,
'kspp'
,
'cut_attack_surface'
))
# 'vsyscall=none'
checklist
.
append
(
OptCheck
(
'BINFMT_MISC'
,
'is not set'
,
'kspp'
,
'cut_attack_surface'
))
checklist
.
append
(
OptCheck
(
'INET_DIAG'
,
'is not set'
,
'kspp'
,
'cut_attack_surface'
))
...
...
@@ -165,10 +213,10 @@ def print_opt_checks():
def
print_check_results
():
print
(
' {:<39}|{:^13}|{:^10}|{:^20}||{:^2
0
}'
.
format
(
'option name'
,
'desired val'
,
'decision'
,
'reason'
,
'check result'
))
print
(
' ==========================================================================================================='
)
print
(
' {:<39}|{:^13}|{:^10}|{:^20}||{:^2
8
}'
.
format
(
'option name'
,
'desired val'
,
'decision'
,
'reason'
,
'check result'
))
print
(
' ===========================================================================================================
========
'
)
for
opt
in
checklist
:
print
(
' CONFIG_{:<32}|{:^13}|{:^10}|{:^20}||{:^2
0
}'
.
format
(
opt
.
name
,
opt
.
expected
,
opt
.
decision
,
opt
.
reason
,
opt
.
result
))
print
(
' CONFIG_{:<32}|{:^13}|{:^10}|{:^20}||{:^2
8
}'
.
format
(
opt
.
name
,
opt
.
expected
,
opt
.
decision
,
opt
.
reason
,
opt
.
result
))
print
()
...
...
@@ -178,7 +226,11 @@ def get_option_state(options, name):
def
perform_checks
(
parsed_options
):
for
opt
in
checklist
:
opt
.
state
=
get_option_state
(
parsed_options
,
opt
.
name
)
if
hasattr
(
opt
,
'opts'
):
for
o
in
opt
.
opts
:
o
.
state
=
get_option_state
(
parsed_options
,
o
.
name
)
else
:
opt
.
state
=
get_option_state
(
parsed_options
,
opt
.
name
)
opt
.
check
()
...
...
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