1 Export of Github issues for [a13xp0p0v/kernel-hardening-checker](https://github.com/a13xp0p0v/kernel-hardening-checker).
3 # [\#103 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/103) `open`: add disabling CONFIG_AIO (legacy POSIX AIO) as a recommendation
5 #### <img src="https://avatars.githubusercontent.com/u/1505226?u=0edff17ad0c4acebbd8660dc1854229d526a6dc4&v=4" width="50">[thestinger](https://github.com/thestinger) opened issue at [2024-01-08 05:31](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/103):
7 POSIX AIO is a legacy feature and adds significant attack surface, albeit not nearly as much as IO_URING. POSIX AIO was poorly designed and hardly got any usage. The glibc and musl implementation doesn't use the kernel implementation and it requires a dedicated library, but is essentially obsolete now beyond it being used before io_uring was an option and still not being replaced in rare applications using it. Essentially everything using it can fall back to not using it via thread pools though, with little impact to most people. High performance software would be using io_uring anyway, not this legacy approach.
9 As an example, Android used AIO for implementing the fastboot, adb and mtp USB gadget protocols with fallback to synchronous IO but then moved to using io_uring for fastboot and also adopted it for snapuserd too. io_uring is limited to fastbootd/snapuserd via SELinux, but AIO was allowed for everything. It would be best if they moved adb and mtp to io_uring too and removed the AIO system calls from the seccomp-bpf whitelist. Apps can't use io_uring and none use AIO in practice, particularly since they provide no bindings for it for apps to use, only the base OS.
14 -------------------------------------------------------------------------------
16 # [\#102 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/102) `open`: drop check for dependency-only CONFIG_GCC_PLUGINS due to Clang
17 **Labels**: `enhancement`
20 #### <img src="https://avatars.githubusercontent.com/u/1505226?u=0edff17ad0c4acebbd8660dc1854229d526a6dc4&v=4" width="50">[thestinger](https://github.com/thestinger) opened issue at [2024-01-08 05:10](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/102):
22 It makes sense to check for the functionality provided by the plugins if there's no Clang alternative, but it doesn't make sense to fail from an irrelevant dependency for those features being unavailable. For example, using CONFIG_INIT_STACK_ALL_ZERO is more secure than the STRUCTLEAK plugin anyway, and has insignificant performance overhead. There are already checks for the latent entropy, RANDSTRUCT and STACKLEAK plugins, but there could be alternatives to those for Clang, and not having GCC_PLUGINS enabled is irrelevant.
24 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2024-01-16 21:52](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/102#issuecomment-1894574347):
26 @thestinger, I agree. I'll think and return with the solution.
29 -------------------------------------------------------------------------------
31 # [\#101 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/101) `closed`: CONFIG_ARCH_MMAP_RND_BITS check is wrong for arm64
32 **Labels**: `question`
35 #### <img src="https://avatars.githubusercontent.com/u/1505226?u=0edff17ad0c4acebbd8660dc1854229d526a6dc4&v=4" width="50">[thestinger](https://github.com/thestinger) opened issue at [2024-01-08 04:37](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/101):
37 The expected value on arm64 for a 48-bit address space (4 level page tables with 4k pages) is 33, not 32, which makes the check fail even though it's higher. arm64 has configurable page size and page table levels. Typical Linux devices have 4k pages and 3 level page tables resulting in a 39-bit address space, providing much less ASLR entropy as the maximum. A hardened kernel should use 4 level page tables resulting in a 48-bit address space and an expected value of 33 here. 4k pages also provide more granularity for guard pages, although it's much less important on ARMv9 devices supporting MTE such as the Pixel 8 where a reserved tag can be used for 16 byte granularity guards rather than using pages.
39 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2024-01-16 21:37](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/101#issuecomment-1894555189):
43 I agree with you, currently the code already does this.
45 Quoting [__init__.py#L328](https://github.com/a13xp0p0v/kernel-hardening-checker/blob/master/kernel_hardening_checker/__init__.py#L328):
47 # hackish refinement of the CONFIG_ARCH_MMAP_RND_BITS check
48 mmap_rnd_bits_max = parsed_kconfig_options.get('CONFIG_ARCH_MMAP_RND_BITS_MAX', None)
50 override_expected_value(config_checklist, 'CONFIG_ARCH_MMAP_RND_BITS', mmap_rnd_bits_max)
52 # remove the CONFIG_ARCH_MMAP_RND_BITS check to avoid false results
53 print('[-] Can\'t check CONFIG_ARCH_MMAP_RND_BITS without CONFIG_ARCH_MMAP_RND_BITS_MAX')
54 config_checklist[:] = [o for o in config_checklist if o.name != 'CONFIG_ARCH_MMAP_RND_BITS']
56 So `kernel-hardening-checker` creates this recommendation dynamically.
58 The example output for `arm64_defconfig_6.6.config`:
60 [+] Kconfig file to check: kernel_hardening_checker/config_files/defconfigs/arm64_defconfig_6.6.config
61 [+] Detected microarchitecture: ARM64
62 [+] Detected kernel version: 6.6
63 [+] Detected compiler: GCC 130001
65 CONFIG_ARCH_MMAP_RND_BITS |kconfig| 33 | my | harden_userspace | FAIL: "18"
67 I'll create a new tag very soon, and this will get into the new release of the tool.
69 #### <img src="https://avatars.githubusercontent.com/u/1505226?u=0edff17ad0c4acebbd8660dc1854229d526a6dc4&v=4" width="50">[thestinger](https://github.com/thestinger) commented at [2024-01-16 21:40](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/101#issuecomment-1894558946):
71 I can also start testing with the git revision now before making recommendations, it just didn't occur to me that it had been a long time since the last stable release and I didn't see recent commits for those things.
73 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2024-01-16 21:48](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/101#issuecomment-1894569310):
75 @thestinger, thank you for testing!
77 Preparing a release of the tool corresponding to the new kernel version takes a lot of effort.
79 I hope to find resources to do that more often.
82 -------------------------------------------------------------------------------
84 # [\#100 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/100) `closed`: CONFIG_COMPAT_VDSO has a completely different meaning for arm64 and recommending disabling it doesn't make sense there
85 **Labels**: `question`
88 #### <img src="https://avatars.githubusercontent.com/u/1505226?u=0edff17ad0c4acebbd8660dc1854229d526a6dc4&v=4" width="50">[thestinger](https://github.com/thestinger) opened issue at [2024-01-08 04:34](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/100):
90 On arm64, CONFIG_COMPAT_VDSO determines whether the vdso is mapped in 32-bit processes at all. It's not a compatibility hack with security implications like it is on x86 but rather has a completely different meaning.
92 It makes sense to recommend disabling 32-bit ARM support as a whole (CONFIG_COMPAT), but there's no reason to recommend disabling this particular option.
94 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2024-01-16 21:26](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/100#issuecomment-1894537837):
98 Yes, the code already describes the same thing.
99 Quoting [checks.py#L298](https://github.com/a13xp0p0v/kernel-hardening-checker/blob/master/kernel_hardening_checker/checks.py#L298):
101 if arch in ('X86_64', 'X86_32'):
102 l += [KconfigCheck('cut_attack_surface', 'kspp', 'COMPAT_VDSO', 'is not set')]
103 # CONFIG_COMPAT_VDSO disabled ASLR of vDSO only on X86_64 and X86_32;
104 # on ARM64 this option has different meaning
107 #### <img src="https://avatars.githubusercontent.com/u/1505226?u=0edff17ad0c4acebbd8660dc1854229d526a6dc4&v=4" width="50">[thestinger](https://github.com/thestinger) commented at [2024-01-16 21:30](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/100#issuecomment-1894543152):
109 Ah, it's because https://github.com/a13xp0p0v/kernel-hardening-checker/commit/22728555223c98630180c2f642cc7e369424bd8a isn't in a stable tag yet and I was using the Arch Linux package instead of the latest revision.
111 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2024-01-16 21:31](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/100#issuecomment-1894544028):
114 I'll create a new tag very soon, and this will get into the new release of the tool.
117 -------------------------------------------------------------------------------
119 # [\#99 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/99) `open`: skip CONFIG_DEBUG_NOTIFIERS requirement when CONFIG_CFI_CLANG is set with CONFIG_CFI_PERMISSIVE disabled
120 **Labels**: `enhancement`
123 #### <img src="https://avatars.githubusercontent.com/u/1505226?u=0edff17ad0c4acebbd8660dc1854229d526a6dc4&v=4" width="50">[thestinger](https://github.com/thestinger) opened issue at [2024-01-08 04:30](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/99):
125 CONFIG_DEBUG_NOTIFIERS only checks that the notifier function pointer is in kernel text. CFI already does that for everything that's not excluded from it. CONFIG_DEBUG_NOTIFIERS is obsolete when using CFI, and there should be no clear reason to enable it.
127 #### <img src="https://avatars.githubusercontent.com/u/1505226?u=0edff17ad0c4acebbd8660dc1854229d526a6dc4&v=4" width="50">[thestinger](https://github.com/thestinger) commented at [2024-01-16 20:27](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/99#issuecomment-1894462962):
129 This is partly motivated by CONFIG_DEBUG_NOTIFIERS being buggy on some architectures. It works properly on x86 but we had issues with it on arm64 previously. It's the only user of `func_ptr_is_kernel_text` so there's little motivation for that function to work universally for such a niche feature that's no longer even useful if you use CFI. The whole feature is this:
132 #ifdef CONFIG_DEBUG_NOTIFIERS
133 if (unlikely(!func_ptr_is_kernel_text(nb->notifier_call))) {
134 WARN(1, "Invalid notifier called!");
141 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2024-01-16 20:40](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/99#issuecomment-1894479180):
143 @thestinger, thanks for the idea!
145 Added the commit https://github.com/a13xp0p0v/kernel-hardening-checker/commit/cd5bb8a0364e6a28b2d03a8ac0d7520194a9f07a.
147 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2024-01-16 20:42](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/99#issuecomment-1894481143):
149 One moment, you are right, CFI_PERMISSIVE should be disabled as well.
151 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2024-01-16 21:20](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/99#issuecomment-1894530696):
153 Added the commit https://github.com/a13xp0p0v/kernel-hardening-checker/commit/65ff79dbe2c36347283d71d3fa1959030bf6838f.
155 Now the verbose result for checking this config ...
157 # CONFIG_DEBUG_NOTIFIERS is not set
159 CONFIG_CFI_PERMISSIVE=y
163 -------------------------------------------------------------------------------------------------------------------------
164 <<< OR >>> | FAIL: "is not set"
165 CONFIG_DEBUG_NOTIFIERS |kconfig| y | kspp | self_protection | FAIL: "is not set"
166 <<< AND >>> | FAIL: CONFIG_CFI_PERMISSIVE is not "is not set"
167 CONFIG_CFI_CLANG |kconfig| y | kspp | self_protection | OK
168 CONFIG_CFI_PERMISSIVE |kconfig| is not set | kspp | self_protection | FAIL: "y"
169 -------------------------------------------------------------------------------------------------------------------------
171 And the verbose result of checking this config...
173 # CONFIG_DEBUG_NOTIFIERS is not set
175 # CONFIG_CFI_PERMISSIVE is not set
179 -------------------------------------------------------------------------------------------------------------------------
180 <<< OR >>> | OK: CONFIG_CFI_CLANG is "y"
181 CONFIG_DEBUG_NOTIFIERS |kconfig| y | kspp | self_protection | FAIL: "is not set"
183 CONFIG_CFI_CLANG |kconfig| y | kspp | self_protection | OK
184 CONFIG_CFI_PERMISSIVE |kconfig| is not set | kspp | self_protection | OK
185 -------------------------------------------------------------------------------------------------------------------------
189 -------------------------------------------------------------------------------
191 # [\#98 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/98) `closed`: skip CONFIG_SCHED_STACK_END_CHECK requirement when CONFIG_VMAP_STACK is set
192 **Labels**: `enhancement`
195 #### <img src="https://avatars.githubusercontent.com/u/1505226?u=0edff17ad0c4acebbd8660dc1854229d526a6dc4&v=4" width="50">[thestinger](https://github.com/thestinger) opened issue at [2024-01-08 04:20](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/98):
197 CONFIG_SCHED_STACK_END_CHECK only provides stack exhaustion detection after it's already too late and it can be bypassed. CONFIG_VMAP_STACK provides reliable detection of stack exhaustion and there shouldn't be any need for CONFIG_SCHED_STACK_END_CHECK with it.
199 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2024-01-16 20:08](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/98#issuecomment-1894435929):
203 As I remember, SCHED_STACK_END_CHECK checks the magic value at the end of the kernel thread stack, and VMAP_STACK adds guard pages near it. So they do a bit different things, but VMAP_STACK is more reliable.
205 I agree with your point.
207 Added the commit https://github.com/a13xp0p0v/kernel-hardening-checker/commit/c0fc9e89d7a21dfd734bc6c3b946f835493502ca.
209 #### <img src="https://avatars.githubusercontent.com/u/1505226?u=0edff17ad0c4acebbd8660dc1854229d526a6dc4&v=4" width="50">[thestinger](https://github.com/thestinger) commented at [2024-01-16 20:24](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/98#issuecomment-1894458928):
211 > As I remember, SCHED_STACK_END_CHECK checks the magic value at the end of the kernel thread stack, and VMAP_STACK adds guard pages near it. So they do a bit different things, but VMAP_STACK is more reliable.
213 Yes, SCHED_STACK_END_CHECK checks a magic value at certain times such as exiting the kernel back to userspace, at which point the exploit can already have succeeded. The attacker may also have been able to clobber the value so that it's not detected. VMAP_STACK directly detects it with memory protection, which combined with making sure no large stack frames or VLAs exist prevents an overflow past the guard.
216 -------------------------------------------------------------------------------
218 # [\#97 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/97) `open`: Get rid of CONFIG_DEBUG_CREDENTIALS
219 **Labels**: `enhancement`
222 #### <img src="https://avatars.githubusercontent.com/u/23581360?v=4" width="50">[Sporif](https://github.com/Sporif) opened issue at [2023-12-22 15:37](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/97):
224 This config has been removed recently.
226 [master](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ae1914174a63a558113e80d24ccac2773f9f7b2b)
228 [stable](https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-6.6.y&id=207f135d819344c03333246f784f6666e652e081)
230 #### <img src="https://avatars.githubusercontent.com/u/1505226?u=0edff17ad0c4acebbd8660dc1854229d526a6dc4&v=4" width="50">[thestinger](https://github.com/thestinger) commented at [2024-01-08 04:14](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/97#issuecomment-1880362163):
232 The checking tool isn't only for the most recent kernel versions, and this was a mildly useful hardening feature despite not being designed as one. It would be possible to do a much better job, but people use what's available upstream.
234 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2024-01-16 19:27](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/97#issuecomment-1894377361):
238 Later, I'll add the dependency on the kernel version for the CONFIG_DEBUG_CREDENTIALS check.
241 -------------------------------------------------------------------------------
243 # [\#96 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/96) `open`: new tag?
244 **Labels**: `question`
247 #### <img src="https://avatars.githubusercontent.com/u/4741819?v=4" width="50">[asarubbo](https://github.com/asarubbo) opened issue at [2023-12-07 12:04](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/96):
251 [kernel-hardening-checker](https://github.com/a13xp0p0v/kernel-hardening-checker) it's really a great work!
253 I have recently added it into the [Gentoo tree](https://github.com/gentoo/gentoo/commit/151491904fa748c04cdff48a3884d52e18da9c0a) and I noticed that a lot of commits have been done after the last tag. Would you mind to issue a new minor release?
256 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-12-09 05:54](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/96#issuecomment-1848252596):
258 Hello @asarubbo, thanks for kind words!
260 I'm currently preparing a new release of the tool. A new tag will appear soon.
263 -------------------------------------------------------------------------------
265 # [\#95 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/95) `closed`: Check for module force loading?
266 **Labels**: `enhancement`
269 #### <img src="https://avatars.githubusercontent.com/u/89150207?v=4" width="50">[vobst](https://github.com/vobst) opened issue at [2023-12-07 08:30](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/95):
271 Would it make sense to check for `CONFIG_MODULE_FORCE_LOAD`? It could prevent attackers from loading slightly mismatching kernel modules. However, but it seems kind of redundant given that you already recommend disabling modules or enforcing signatures. Maybe it could be checked as a fall back if both stronger measures are disabled.
273 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-12-09 05:51](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/95#issuecomment-1848251810):
275 Hello @vobst, thanks for the idea.
277 Added [e5f804e](https://github.com/a13xp0p0v/kernel-hardening-checker/commit/e5f804ede6ea7f66f674c2825396c15c216c718d).
280 -------------------------------------------------------------------------------
282 # [\#94 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/94) `merged`: add --kernel-version option
284 #### <img src="https://avatars.githubusercontent.com/u/1485263?v=4" width="50">[ffontaine](https://github.com/ffontaine) opened issue at [2023-11-29 16:46](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/94):
286 `--kernel-version` option will extract the version in `/proc/version`. This is especially useful on embedded systems where `config.gz` doesn't always contain the kernel version
288 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-12-01 13:38](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/94#issuecomment-1836135013):
294 I would ask for some small changes.
297 -------------------------------------------------------------------------------
299 # [\#93 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/93) `open`: added wsl config
300 **Labels**: `enhancement`
303 #### <img src="https://avatars.githubusercontent.com/u/8870284?u=ec42118bfcab2ddd30e7fb094422d250164c3150&v=4" width="50">[mrkoykang](https://github.com/mrkoykang) opened issue at [2023-11-15 01:58](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/93):
305 added wsl config files
307 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-11-22 09:33](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/93#issuecomment-1822409439):
311 Thanks for the pull request.
313 1) These two kconfig files are mostly identical. How about adding only the more recent one?
315 2) Could you please add a link to this kconfig in [this file](https://github.com/a13xp0p0v/kernel-hardening-checker/blob/master/kernel_hardening_checker/config_files/links.txt)?
320 -------------------------------------------------------------------------------
322 # [\#92 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/92) `open`: new make hardening.config available
323 **Labels**: `question`
326 #### <img src="https://avatars.githubusercontent.com/u/77795961?v=4" width="50">[osevan](https://github.com/osevan) opened issue at [2023-11-06 00:09](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/92):
328 https://github.com/torvalds/linux/blob/master/kernel/configs/hardening.config
330 https://www.phoronix.com/news/Linux-6.7-Hardening
332 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-11-22 10:07](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/92#issuecomment-1822464512):
336 Thanks for the links.
338 Need your opinion: how should `kernel-hardening-checker` use this new `make` target?
340 #### <img src="https://avatars.githubusercontent.com/u/4741819?v=4" width="50">[asarubbo](https://github.com/asarubbo) commented at [2023-12-19 07:51](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/92#issuecomment-1862276038):
342 > Need your opinion: how should `kernel-hardening-checker` use this new `make` target?
344 Not sure I have understood at all the question, but just port these option into `kernel-hardening-checker` and update them from time to time is an option?
346 I mean to just monitor changes like this https://github.com/torvalds/linux/commits/master/kernel/configs/hardening.config
349 -------------------------------------------------------------------------------
351 # [\#91 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/91) `open`: Modify requirements for Android configs
352 **Labels**: `enhancement`
355 #### <img src="https://avatars.githubusercontent.com/u/65050545?u=3d095cc7726e6bbf544ea4857c4223033ea90921&v=4" width="50">[petervanvugt](https://github.com/petervanvugt) opened issue at [2023-10-30 19:27](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/91):
357 Android configs require various things that are currently disallowed in this tool. We can use CONFIG_ANDROID to detect Android configs and generate reports with fewer positives that cannot/should not be changed.
360 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-11-22 09:35](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/91#issuecomment-1822411251):
366 Let's discuss some details.
369 -------------------------------------------------------------------------------
371 # [\#90 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/90) `merged`: Use /usr/bin/env in shebangs
373 #### <img src="https://avatars.githubusercontent.com/u/7258858?u=c524720e2844ffa8a2aa67944fde5af54031e06d&v=4" width="50">[SuperSandro2000](https://github.com/SuperSandro2000) opened issue at [2023-10-05 22:41](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/90):
375 This is guaranteed to work everything including NixOS
377 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-10-16 04:34](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/90#issuecomment-1763710410):
379 Merged. Thanks, @SuperSandro2000!
382 -------------------------------------------------------------------------------
384 # [\#89 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/89) `open`: Fix a false positive in REFCOUNT_FULL in recent 5.4.x
386 #### <img src="https://avatars.githubusercontent.com/u/4372440?v=4" width="50">[hlein](https://github.com/hlein) opened issue at [2023-09-22 03:41](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/89):
388 Extend VersionCheck to be able to take a three-tuple, x.y.z kernel version in order to properly recognise 5.4.208 as when this became the default behavior and thus CONFIG_REFCOUNT_FULL disappeared.
391 Closes: https://github.com/a13xp0p0v/kernel-hardening-checker/issues/88
393 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-10-04 18:13](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/89#issuecomment-1747405606):
395 @hlein, thanks for your pull request.
397 I think you need to adapt `detect_kernel_version()` to get the third number of the kernel version from the kconfig file.
399 One more aspect: you need to compare this number in the `check()` method of the `VersionCheck` class. Otherwise it will return wrong results.
401 #### <img src="https://avatars.githubusercontent.com/u/4372440?v=4" width="50">[hlein](https://github.com/hlein) commented at [2023-10-04 18:29](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/89#issuecomment-1747427507):
403 > @hlein, thanks for your pull request.
405 > I think you need to adapt `detect_kernel_version()` to get the third number of the kernel version from the kconfig file.
407 Oh, you are probably right. I didn't have access to the box or config in question any more, so fabricated some data I was testing against; my tests must have been incomplete / accidentally-successful.
409 > One more aspect: you need to compare this number in the `check()` method of the `VersionCheck` class. Otherwise it will return wrong results.
411 Oof, you're right. I think I had done things a different way before refactoring the `self.ver_expected_print` out, but then lost the check against `self.ver_expected[2]` when cleaning up. Ugh!
414 -------------------------------------------------------------------------------
416 # [\#88 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/88) `open`: False positive on CONFIG_REFCOUNT_FULL in recent 5.4.x kernels
418 #### <img src="https://avatars.githubusercontent.com/u/4372440?v=4" width="50">[hlein](https://github.com/hlein) opened issue at [2023-09-22 03:07](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/88):
420 Similar to https://github.com/a13xp0p0v/kernel-hardening-checker/issues/30, `CONFIG_REFCOUNT_FULL` was removed from 5.4.x kernels starting with v5.4.208, because full refcount became always-on, in this commit:
422 https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-5.4.y&id=d0d583484d2ed9f5903edbbfa7e2a68f78b950b0
424 Currently we complain when it is not found, like:
425 `CONFIG_REFCOUNT_FULL |kconfig| y |defconfig | self_protection | FAIL: is not found`
427 I don't know an easier way to find which kernel first included that commit other than:
430 $ egrep url .git/config
431 url = https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
432 $ git tag --contains d0d583484d2ed9f5903edbbfa7e2a68f78b950b0 | head -n2
436 I think the fix is to return OK for 5.4.x where x >= 208.
438 Except... that's done via `VersionCheck` in `engine.py` which, if I'm reading it right, takes only major and minor versions, no third parameter:
442 def __init__(self, ver_expected):
443 assert(ver_expected and isinstance(ver_expected, tuple) and len(ver_expected) == 2), \
444 f'invalid version "{ver_expected}" for VersionCheck'
446 So that function would have to be made a bit more flexible.
448 I don't know if other `CONFIG_*` knobs disappeared / became defaults in the middle of a given major.minor kernel version, but it would not surprise me.
451 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-10-04 17:58](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/88#issuecomment-1747385253):
455 Thanks for your comment!
457 The REFCOUNT_FULL config option was removed from the mainline in the commit [fb041bb7c0a918b95c6889fc965cdc4a75b4c0ca](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?h=v6.6-rc4&id=fb041bb7c0a918b95c6889fc965cdc4a75b4c0ca)
459 This commit appeared in the mainline kernel v5.5-rc1:
462 $ git describe --match 'v*' --contains fb041bb7c0a918b95c6889fc965cdc4a75b4c0ca
466 The commit [d0d583484d2ed9f5903edbbfa7e2a68f78b950b0](https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-5.4.y&id=d0d583484d2ed9f5903edbbfa7e2a68f78b950b0) is the backport of the upstream commit to the stable branch:
469 $ git describe --match 'v*' --contains d0d583484d2ed9f5903edbbfa7e2a68f78b950b0
473 I didn't find backports of this commit to other stable branches.
475 So, technically, it's not wrong to say that REFCOUNT_FULL was removed in v5.4.208 :)
477 I'll take a look at your pull request. Thanks a lot!
480 -------------------------------------------------------------------------------
482 # [\#87 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/87) `open`: Add a check for IA32_EMULATION
483 **Labels**: `enhancement`
486 #### <img src="https://avatars.githubusercontent.com/u/325724?u=4446b76c0f4ebcbecb2678759f8d13817a67f85d&v=4" width="50">[jvoisin](https://github.com/jvoisin) opened issue at [2023-09-14 12:36](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/87):
488 As [reported by phoronix](https://www.phoronix.com/news/Linux-6.7-ia32_emulation-Boot), it's now possible to disable 32b support on amd64, to reduce attack surface.
490 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-11-22 10:09](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/87#issuecomment-1822468556):
494 This will be added in the next release of `kernel-hardening-checker`.
496 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-12-17 10:23](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/87#issuecomment-1859129322):
500 The `ia32_emulation` boot param was introduced in Linux v6.7.
502 I'm currently preparing the `kernel-hardening-checker` release corresponding to the kernel v6.6.
504 So this boot option and `IA32_EMULATION_DEFAULT_DISABLED` will be added in the next release.
509 -------------------------------------------------------------------------------
511 # [\#86 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/86) `merged`: Add colors to output
513 #### <img src="https://avatars.githubusercontent.com/u/5826484?u=2cc3ddef5824379423495733759ef362d0600078&v=4" width="50">[frakman1](https://github.com/frakman1) opened issue at [2023-09-10 17:49](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/86):
515 Shows OK in green and FAIL in red
517 <img width="1047" alt="image" src="https://github.com/a13xp0p0v/kconfig-hardened-check/assets/5826484/d098d14f-2e1a-4569-af22-54ef2bc0eecb">
521 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-09-10 19:25](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/86#issuecomment-1712916729):
523 @frakman1, thanks for the pull request!
525 There are some small mistakes that break the tests.
527 Looking forward to your fixes.
529 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-09-11 18:25](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/86#issuecomment-1714376333):
531 Hello @frakman1, the CI tests are broken again.
533 Please see, the argument of `colorize_result()` may be None in the verbose mode of the tool.
534 So we need to add something like that at the beginning of the function:
540 Also please fix two pylint warnings added by this PR:
542 1) W0311: Bad indentation. Found 17 spaces, expected 16 (bad-indentation)
544 2) W0622: Redefining built-in 'input' (redefined-builtin).
545 To fix this, you need to rename the argument of the function.
548 Looking forward to the fixes.
550 #### <img src="https://avatars.githubusercontent.com/u/65553080?u=1e9e0de760ac0083c86dab588f627a0468cd714e&v=4" width="50">[codecov-commenter](https://github.com/codecov-commenter) commented at [2023-09-11 23:05](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/86#issuecomment-1714703072):
552 ## [Codecov](https://app.codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/86?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) Report
553 > Merging [#86](https://app.codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/86?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) (374aee3) into [master](https://app.codecov.io/gh/a13xp0p0v/kconfig-hardened-check/commit/108eb7374967b0f66e70b68cca60a0548f12844c?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) (108eb73) will **decrease** coverage by `1.32%`.
554 > The diff coverage is `87.50%`.
556 :exclamation: Your organization needs to install the [Codecov GitHub app](https://github.com/apps/codecov/installations/select_target) to enable full functionality.
561 ===========================================
562 - Coverage 100.00% 98.68% -1.32%
563 ===========================================
567 ===========================================
573 | [Flag](https://app.codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/86/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) | Coverage Δ | |
575 | [engine_unit-test](https://app.codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/86/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) | `?` | |
576 | [functional_test](https://app.codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/86/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) | `98.68% <87.50%> (-0.23%)` | :arrow_down: |
578 Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov#carryforward-flags-in-the-pull-request-comment) to find out more.
580 | [Files Changed](https://app.codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/86?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) | Coverage Δ | |
582 | [kconfig\_hardened\_check/engine.py](https://app.codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/86?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov#diff-a2NvbmZpZ19oYXJkZW5lZF9jaGVjay9lbmdpbmUucHk=) | `94.58% <87.50%> (-5.42%)` | :arrow_down: |
584 ... and [1 file with indirect coverage changes](https://app.codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/86/indirect-changes?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov)
586 :mega: We’re building smart automated test selection to slash your CI/CD build times. [Learn more](https://about.codecov.io/iterative-testing/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov)
588 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-09-12 17:40](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/86#issuecomment-1716159903):
590 @frakman1, thanks for the fixes!
592 I think we should better add colors to the `stdout_result` in the unit tests instead of filtering them out before `assertEqual()`.
594 That would allow to test that `colorize_result()` works as expected.
596 #### <img src="https://avatars.githubusercontent.com/u/5826484?u=2cc3ddef5824379423495733759ef362d0600078&v=4" width="50">[frakman1](https://github.com/frakman1) commented at [2023-09-12 22:12](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/86#issuecomment-1716580970):
598 I'm sorry, this is outside the scope of my knowledge or effort. Not intersted in re-writing test cases.
600 #### <img src="https://avatars.githubusercontent.com/u/5826484?u=2cc3ddef5824379423495733759ef362d0600078&v=4" width="50">[frakman1](https://github.com/frakman1) commented at [2023-09-13 22:14](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/86#issuecomment-1718385583):
604 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-09-13 22:50](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/86#issuecomment-1718412639):
608 Thanks for you contribution, @frakman1!
611 -------------------------------------------------------------------------------
613 # [\#85 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/85) `merged`: Rename kconfig-hardened-check into kernel-hardening-checker
615 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) opened issue at [2023-09-10 12:18](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/85):
617 **kconfig-hardened-check** is a tool for checking the security hardening options of the Linux kernel.
619 In addition to Kconfig options, it now can check kernel cmdline arguments and sysctl parameters.
621 It's time to give this project a new name that describes it better: **kernel-hardening-checker**.
623 #### <img src="https://avatars.githubusercontent.com/u/65553080?u=1e9e0de760ac0083c86dab588f627a0468cd714e&v=4" width="50">[codecov-commenter](https://github.com/codecov-commenter) commented at [2023-09-10 12:19](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/85#issuecomment-1712799348):
625 ## [Codecov](https://app.codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/85?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) Report
626 > Merging [#85](https://app.codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/85?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) (032f67f) into [master](https://app.codecov.io/gh/a13xp0p0v/kconfig-hardened-check/commit/f8e47e12ddf6b5c7b7562af6b85b8f65481e4b07?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) (f8e47e1) will **decrease** coverage by `0.04%`.
627 > The diff coverage is `n/a`.
629 :exclamation: Your organization needs to install the [Codecov GitHub app](https://github.com/apps/codecov/installations/select_target) to enable full functionality.
634 ==========================================
635 - Coverage 99.81% 99.77% -0.04%
636 ==========================================
640 ==========================================
646 | [Flag](https://app.codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/85/flags?src=pr&el=flags&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) | Coverage Δ | |
648 | [engine_unit-test](https://app.codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/85/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) | `99.77% <ø> (ø)` | |
649 | [functional_test](https://app.codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/85/flags?src=pr&el=flag&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) | `?` | |
651 Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov#carryforward-flags-in-the-pull-request-comment) to find out more.
653 | [Files Changed](https://app.codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/85?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) | Coverage Δ | |
655 | [kernel\_hardening\_checker/engine.py](https://app.codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/85?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov#diff-a2VybmVsX2hhcmRlbmluZ19jaGVja2VyL2VuZ2luZS5weQ==) | `99.50% <ø> (ø)` | |
656 | [kernel\_hardening\_checker/test\_engine.py](https://app.codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/85?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov#diff-a2VybmVsX2hhcmRlbmluZ19jaGVja2VyL3Rlc3RfZW5naW5lLnB5) | `100.00% <ø> (ø)` | |
658 ... and [4 files with indirect coverage changes](https://app.codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/85/indirect-changes?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov)
660 :mega: We’re building smart automated test selection to slash your CI/CD build times. [Learn more](https://about.codecov.io/iterative-testing/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov)
663 -------------------------------------------------------------------------------
665 # [\#84 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/84) `open`: Add RDK Linux Hardening specification flags
666 **Labels**: `question`
669 #### <img src="https://avatars.githubusercontent.com/u/5826484?u=2cc3ddef5824379423495733759ef362d0600078&v=4" width="50">[frakman1](https://github.com/frakman1) opened issue at [2023-09-01 12:48](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/84):
671 The [RDK Linux Hardening specification](https://developer.rdkcentral.com/documentation/documentation/licensee_specific_subsystems/rdk_security_concepts/rdk_software_security_specifications/rdk_linux_hardening_specification/) lists many flags that are not checked in this tool. The first five I looked for were not there: `CONFIG_DEBUG_KERNEL` `CONFIG_MARKERS` `CONFIG_DEBUG_MEMLEAK` and `CONFIG_ELF_CORE`
673 Perhaps these can be added as part of a new 'RDK security policy' check for the 'decision' column
675 #### <img src="https://avatars.githubusercontent.com/u/5826484?u=2cc3ddef5824379423495733759ef362d0600078&v=4" width="50">[frakman1](https://github.com/frakman1) commented at [2023-09-05 14:23](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/84#issuecomment-1706723756):
677 Link no longer appears to be up. I saved a cache for reference:
681 RDK Linux Hardening specification
682 Created on June 21, 2022
683 1. Ensure no hard-coded credentials are present in the clear
684 2. Ensure compliance with Comcast specifications for crypto and TLS
685 o All STB connections to servers must be secured using TLS 1.2 or above, and verified to be correctly performing server certificate chain validation
686 3. Build with stack-smashing (at least for modules implementing security)
687 o Enable CONFIG_CC_STACKPROTECTOR, -fstack-protector-all, -Wstack-protector
688 o Libc function buffer overrun checks: _FORTIFY_SOURCE=2
689 o Initial requirement would be to enable this for all security sensitive modules with follow up to enable for the entire build.
690 4. Scan all non-OSS sources with static analyzer
691 5. Network port blocking
692 o All ports not specifically used must be blocked by ipTables rules
693 6. Disable all unused devices (USB, Bluetooth, etc)
694 7. Implement multiuser/sandbox strategy (Restrict Linux process privileges)
695 o No applications/utilities within a sandbox should run as root or have any means to achieve root privileges. Sandbox shall not contains hard links to outside files. Every sandbox connected to external network shall contain its own firewall and shall be configured using a whitelist.
696 o Configure processes to the minimum capabilities and resources required for their operation. Have unique user and group own service components/applications that need to be isolated. Users have permissions to access the required device files only. Shared files are access controlled using group permissions. Default permissions for newly created files include read/write/exec permissions for the owner only. Always use setresuid() and setresgid() functions to change the current user and group. Always confirm the change with getresuid() and getresgid() function. Users and groups must have unique ID’s
697 o In progress, containerization via LXC is being implemented for subset of RDK processes. OEM may choose to use a technology other than LXC to sandbox their processes.
698 8. Vet all open source
699 o Currently being done using Whitesource tool
700 9. Disable kernel module load
701 o Making modules statically linked to the kernel would be a significant effort.
702 o Disable module load after boot using /proc/sys/kernel/module_disabled
703 10. Disable kernel module unload
704 o Set CONFIG_MODULE_UNLOAD
705 11. Kernel module parameters must be R/O or trusted
706 o Audit boot scripts to ensure loadable kernel module parameters are hard coded and don’t rely on data from persistent storage or other writable source
707 12. Remove kernel debugging and profiling options
708 o CONFIG_DEBUG_KERNEL CONFIG_MARKERS CONFIG_DEBUG_MEMLEAK CONFIG_KPROBES
709 o CONFIG_SLUB_DEBUG CONFIG_PROFILING CONFIG_DEBUG_FS CONFIG_KPTRACE
710 o CONFIG_KALLSYMS CONFIG_LTT CONFIG_UNUSED_SYMBOLS CONFIG_TRACE_IRQFLAGS_SUPPORT
711 o CONFIG_RELAY CONFIG_MAGIC_SYSRQ CONFIG_VM_EVENT_COUNTERS CONFIGU_UNWIND_INFO
712 o CONFIG_BPA2_ALLOC_TRACE CONFIG_PRINTK
713 o CONFIG_CRASH_DUMP CONFIG_BUG CONFIG_SCSI_LOGGING CONFIG_ELF_CORE CONFIG_FULL_PANIC
714 o CONFIG_TASKSTATUS CONFIG_AUDIT CONFIG_BSD_PROCESS_ACCT CONFIG_KEXEC
715 o CONFIG_EARLY_PRINTK CONFIG_IKCONFIG CONFIG_NETFILTER_DEBUG
716 o CONFIG_MTD_UBI_DEBUG CONFIG_B43_DEBUG CONFIG_SSB_DEBUG CONFIG_FB_INTEL_DEBUG
717 o CONFIG_TRACING CONFIG_PERF_EVENTS
718 13. Disable unused file system and block device support
719 14. Enable heap protection and pointer obfuscation features.
720 o Enabled by default in glibc. Protects heap from buffer overflows. Available in glibc 2.3.4 or above, Enabled using environment variable malloc_check_
721 15. Restrict /dev/mem to minimal regions of memory required
722 16. Remove support for /dev/kmem
723 17. Remove support for /dev/kcore
724 o Kernel core dumping should be disabled in production
725 18. Enable format, buffer, and object size checks
726 19. Restrict /proc to process owners (except for IDS)
727 20. Disable kernel configfs
728 o Allows modification of kernel objects
729 21. Remove ldconfig from target filesystem and [ld.so](http://ld.so/).conf and [ld.so](http://ld.so/).cache should be empty
730 o Removes caching of symbolic links. Will cause a performance hit.
731 o Impact: glibc changes. Would allow loading libraries from a non-standard library path even if we don’t use LD_LIBRARY_PATH.
732 22. Security critical software are compiled as PIE (Position Independent Executable), if supported
733 23. Kernel boots with “ro” in command line
734 o Mount filesystem as readonly.
735 24. Mount filesystems with minimal privileges. For example, filesystem containing no executable code shall have “noexec” option specified.
736 25. Mount temporary storage (/tmp) shall in dedicated filesystem (eg. tmpfs) and its contents does not survive reboots
737 26. Flush cache after accessing sensitive data
738 27. No overlay of writable mounts on read-only data
739 28. system directories such as /proc or /dev shall not be writable within a sandbox
740 29. Applications and utilities shall not have the setgid or setuid bit set
741 30. Configure default shell to /dev/null
742 31. Remove all unused executables and libraries
743 32. Disable PTRACE, General restriction on PTRACE should be applied at kernel level with Yama LSM
744 o http://linux-audit.com/protect-ptrace-processes-kernel-yama-ptrace_scope/
745 o PTRACE is used by GDB. Disable only for production builds. Both compile time and runtime changes required (can restrict PTRACE to root if required)
746 33. Don’t use LD_LIBRARY_PATH (loads libraries from default locations only)
747 34. Full runtime path for non-standard libraries included in code image
748 o Use -rpath and -rpath-link
749 35. Mount filesystems with ro option and change permission temporarily when needed
750 36. Kernel init parameters / command line must be R/O and trusted
751 37. Restrict kernel syslog (dmesg) to root user only
752 38. Disable kernel debugfs
753 o Part of sysfs used to enable kernel debug messaging. If printk is disabled this becomes irrelevant
754 39. Use ELF format only
755 o May break scripts like Python
756 40. Dynamic linker configuration changes
757 o Remove LD_DEBUG support from dynamic linker
758 o Remove LD_PRELOAD support from dynamic linker
759 o Remove LD_PROFILE support from the dynamic linker
760 o Remove LD_AUDIT support from the dynamic linker
761 o Remove LD_SHOW_AUXV support from the dynamic linker
762 o Remove LD_TRACE_LOADED_OBJECTS support from the dynamic linker
763 o Link dynamic programs with -z now and -z relro options
764 41. Hide restricted kernel pointers
765 o Restricted pointers replaced with 0’s.
766 o Relates to printk handling of printing pointer values. This is a runtime setting, enable/disable via /proc/sys/kernel/kptr_restrict
767 42. Review use of SYSFS, disable it if possible
768 43. Mark unchanging files in writable partition with “immutable”
769 44. Use all compiler security features
770 o Compile -wall, -Werror and fail on warnings (and possibly -Wextra)
771 45. Replace strcpy with strncpy
772 o All code should use safer, bounds checking versions of string library functions (such as strncpy instead of strcpy) to avoid potential buffer overruns.
773 46. Prevent file races, open temp files with O_CREAT | O_EXCL
774 o Makes check for file existence and creation atomic. Prevents multiple threads creating same file.
775 47. Set sticky bit for temporary directories to prevent acc
777 o Only owner and root can delete directory
778 48. Restrict kernel network settings to be the most restrictive possible
779 49. Limit temporary storage (tmpfs) memory size
780 50. Enable kernel ABI Version Check
781 51. Disable kernel symbol resolution
782 o Disable CONFIG_KALLSYMS
783 o Limits our ability to debug kernel crash dumps
784 52. Disable kernel crashdump
785 o Disable CONFIG_CRASH_DUMP
786 53. Minimum MMAPable address set to 4K min.
787 o This prevents mapping NULL address
789 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-11-22 10:16](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/84#issuecomment-1822479661):
791 Need to compare these recommendations with the current `kernel-hardening-checker` rules.
793 Gonna do that after preparing the next release of the tool.
796 -------------------------------------------------------------------------------
798 # [\#83 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/83) `closed`: Enhancement add kmalloc hardening
799 **Labels**: `enhancement`
802 #### <img src="https://avatars.githubusercontent.com/u/77795961?v=4" width="50">[osevan](https://github.com/osevan) opened issue at [2023-08-29 23:53](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/83):
804 https://www.phoronix.com/news/Linux-Randomize-Kmalloc-Cache
809 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-09-03 15:45](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/83#issuecomment-1704338755):
812 I'll consider it during preparing the next release of the tool.
814 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-12-16 23:42](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/83#issuecomment-1858987573):
816 Done! Thanks @osevan.
819 -------------------------------------------------------------------------------
821 # [\#82 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/82) `closed`: Consider removing/not recommending CONFIG_ZERO_CALL_USED_REGS
822 **Labels**: `question`
825 #### <img src="https://avatars.githubusercontent.com/u/325724?u=4446b76c0f4ebcbecb2678759f8d13817a67f85d&v=4" width="50">[jvoisin](https://github.com/jvoisin) opened issue at [2023-05-08 12:38](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/82):
827 CONFIG_ZERO_CALL_USED_REGS is [useless at best](https://dustri.org/b/paper-notes-clean-the-scratch-registers-a-way-to-mitigate-return-oriented-programming-attacks.html), with a **significant** performance impact.
829 This is a security theatre knob, and the performance budget would be better spent elsewhere.
831 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-09-03 15:52](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/82#issuecomment-1704340181):
833 @jvoisin, thanks for the article!
834 It looks reasonable, we'll discuss it.
837 -------------------------------------------------------------------------------
839 # [\#81 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/81) `closed`: Color indicators for "check result" column
840 **Labels**: `enhancement`
843 #### <img src="https://avatars.githubusercontent.com/u/4941656?v=4" width="50">[harisphnx](https://github.com/harisphnx) opened issue at [2023-04-27 13:16](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/81):
845 Would the maintainers be open to adding colors to the output of the "check result" column? For example, the output would be red for FAIL, and green for OK?
847 #### <img src="https://avatars.githubusercontent.com/u/4941656?v=4" width="50">[harisphnx](https://github.com/harisphnx) commented at [2023-04-27 13:17](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/81#issuecomment-1525681451):
849 If so, I can make the change and create a PR
851 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-05-07 16:41](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/81#issuecomment-1537488610):
853 Yes, it would be nice.
854 Looking forward to your PR.
856 #### <img src="https://avatars.githubusercontent.com/u/5826484?u=2cc3ddef5824379423495733759ef362d0600078&v=4" width="50">[frakman1](https://github.com/frakman1) commented at [2023-09-01 17:04](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/81#issuecomment-1703069739):
858 Has anyone done this yet?
859 I made a hacky attempt of this last year before the `sysctl` support was added. I added different colors for the two sections too:
861 <img width="1282" alt="image" src="https://github.com/a13xp0p0v/kconfig-hardened-check/assets/5826484/e880006a-5f1d-4580-b3e2-dcc0b104b089">
863 I just tried to overlay it onto the latest code but it's too different now. My changes were in `kconfig_hardened_check/__init__.py` but everything has moved since then. Unfortunately, not an easy merge.
865 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-09-03 15:40](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/81#issuecomment-1704337689):
867 @frakman1 thanks, it looks nice.
868 Could you give a link to your commit? I'll help to rebase it.
870 #### <img src="https://avatars.githubusercontent.com/u/5826484?u=2cc3ddef5824379423495733759ef362d0600078&v=4" width="50">[frakman1](https://github.com/frakman1) commented at [2023-09-03 16:16](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/81#issuecomment-1704345063):
872 Thank you @a13xp0p0v.
873 I just checked and my changes were based on [this](https://github.com/a13xp0p0v/kconfig-hardened-check/blob/899752c13f4d1260d1a33985672b72b3a9cb60ec/kconfig_hardened_check/__init__.py) commit:
875 * 899752c - (Sun Oct 2 21:45:13 2022 +0300) Also check 'nospectre_v2' with 'spectre_v2' - <Alexander Popov> (HEAD -> master, origin/master, origin/HEAD)
877 Unfortunately, I never commited it and just stashed it before doing a `git pull`
879 Original File (rename to .py):
880 [__init__.txt](https://github.com/a13xp0p0v/kconfig-hardened-check/files/12506520/__init__.txt)
883 Colored File (rename to .py):
884 [__init__.color.txt](https://github.com/a13xp0p0v/kconfig-hardened-check/files/12506521/__init__.color.txt)
886 I created a patch file using:
888 git diff --no-index --patch --output=color.diff __init__.py __init__.color.py
891 patch file (optionally rename to .diff):
892 [color.txt](https://github.com/a13xp0p0v/kconfig-hardened-check/files/12506530/color.txt)
894 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-09-03 19:51](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/81#issuecomment-1704387355):
896 Thanks, I see the approach.
898 Let's print OK results in green and FAIL results in red.
900 We need to modify the `table_print()` method of classes in [engine.py](https://github.com/a13xp0p0v/kconfig-hardened-check/blob/master/kconfig_hardened_check/engine.py).
902 I would recommend something like that:
904 1) defining ANSI escape sequences at the beginning of the file:
906 GREEN_COLOR = '\x1b[32m'
907 RED_COLOR = '\x1b[31m'
908 COLOR_END = '\x1b[0m'
911 2) modify printing methods this way:
914 if self.result.startswith('OK'):
916 elif self.result.startswith('FAIL:'):
919 assert(False), f'unexpected result "{self.result}"'
920 colored_result = f'{color}{self.result}{COLOR_END}'
921 print(f'| {colored_result}', end='')
925 Would you like to prepare a pull request?
929 #### <img src="https://avatars.githubusercontent.com/u/141440559?u=a2256f43745996b332a33cc986eb796c084caed2&v=4" width="50">[trclst](https://github.com/trclst) commented at [2023-09-03 23:34](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/81#issuecomment-1704435599):
931 I would only going to color `OK `and `FAIL` not full line.
932 Besides, I don't know if there aren't more important things a `| grep FAIL` can do.
933 Maybe it is better to keep the code small, the information is still there whether in color or not.
934 Anyway hope it looks fancy.
936 #### <img src="https://avatars.githubusercontent.com/u/5826484?u=2cc3ddef5824379423495733759ef362d0600078&v=4" width="50">[frakman1](https://github.com/frakman1) commented at [2023-09-04 05:16](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/81#issuecomment-1704624719):
938 If you only want to see the failures, you can use the `-m show_fail` option
940 #### <img src="https://avatars.githubusercontent.com/u/5826484?u=2cc3ddef5824379423495733759ef362d0600078&v=4" width="50">[frakman1](https://github.com/frakman1) commented at [2023-09-04 18:33](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/81#issuecomment-1705607069):
942 > What do you think? Would you like to prepare a pull request?
944 I like it. Thank you for the guidance. I just attempted it and it seems I have to repeat that logic in three places before I could get all the prints.
948 <img width="1047" alt="image" src="https://github.com/a13xp0p0v/kconfig-hardened-check/assets/5826484/d098d14f-2e1a-4569-af22-54ef2bc0eecb">
950 Diffs located in my fork ~~[here](https://github.com/frakman1/kconfig-hardened-check/compare/108eb7374967b0f66e70b68cca60a0548f12844c...71c8e35842b805e8e6b819bf599b07fdd0d48479)~~
952 @a13xp0p0v Let me know if that looks good. If so, I will issue a pull request.
954 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-09-09 16:56](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/81#issuecomment-1712554168):
958 I would propose creating a function `colorize_result()` and call several times to avoid copying the code.
960 #### <img src="https://avatars.githubusercontent.com/u/5826484?u=2cc3ddef5824379423495733759ef362d0600078&v=4" width="50">[frakman1](https://github.com/frakman1) commented at [2023-09-09 18:20](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/81#issuecomment-1712570988):
962 I've updated the code with your recommendations. See changes [here](https://github.com/frakman1/kconfig-hardened-check/commit/fb9aeb5392762c6ea3aa67096a18e163e63ec6ea)
964 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-09-09 19:17](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/81#issuecomment-1712582213):
966 I've left some comments. The main point: it's better to leave printing inside of the `table_print()` method. The `colorize_result()` function should only return the colored string.
968 #### <img src="https://avatars.githubusercontent.com/u/5826484?u=2cc3ddef5824379423495733759ef362d0600078&v=4" width="50">[frakman1](https://github.com/frakman1) commented at [2023-09-09 21:12](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/81#issuecomment-1712623127):
970 Changes applied [here](https://github.com/frakman1/kconfig-hardened-check/compare/108eb7374967b0f66e70b68cca60a0548f12844c..b317b9f)
972 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-09-10 11:04](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/81#issuecomment-1712783879):
976 Please remove the unneeded whitespaces and send the pull request.
978 Looking forward to it.
980 #### <img src="https://avatars.githubusercontent.com/u/5826484?u=2cc3ddef5824379423495733759ef362d0600078&v=4" width="50">[frakman1](https://github.com/frakman1) commented at [2023-09-10 17:49](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/81#issuecomment-1712896232):
983 https://github.com/a13xp0p0v/kconfig-hardened-check/pull/86
986 -------------------------------------------------------------------------------
988 # [\#80 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/80) `merged`: Added support for gzipped config (eg. /proc/config.gz)
990 #### <img src="https://avatars.githubusercontent.com/u/3389586?u=71aa9a963297407bb515b073245e398e8049d582&v=4" width="50">[nE0sIghT](https://github.com/nE0sIghT) opened issue at [2023-03-25 09:41](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/80):
994 #### <img src="https://avatars.githubusercontent.com/u/65553080?u=1e9e0de760ac0083c86dab588f627a0468cd714e&v=4" width="50">[codecov-commenter](https://github.com/codecov-commenter) commented at [2023-03-26 15:02](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/80#issuecomment-1484123415):
996 ## [Codecov](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/80?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) Report
997 > Merging [#80](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/80?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) (8def541) into [master](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/commit/b65af76d6e84b4cd80f4fb4c72799bdd49237024?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) (b65af76) will **decrease** coverage by `0.24%`.
998 > The diff coverage is `80.00%`.
1000 :mega: This organization is not using Codecov’s [GitHub App Integration](https://github.com/apps/codecov). We recommend you install it so Codecov can continue to function properly for your repositories. [Learn more](https://about.codecov.io/blog/codecov-is-updating-its-github-integration/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov)
1004 ## master #80 +/- ##
1005 ==========================================
1006 - Coverage 98.39% 98.16% -0.24%
1007 ==========================================
1011 ==========================================
1017 | Flag | Coverage Δ | |
1019 | engine_unit-test | `76.80% <ø> (ø)` | |
1020 | functional_test | `97.97% <80.00%> (-0.26%)` | :arrow_down: |
1022 Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov#carryforward-flags-in-the-pull-request-comment) to find out more.
1024 | [Impacted Files](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/80?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) | Coverage Δ | |
1026 | [kconfig\_hardened\_check/\_\_init\_\_.py](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/80?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov#diff-a2NvbmZpZ19oYXJkZW5lZF9jaGVjay9fX2luaXRfXy5weQ==) | `99.10% <80.00%> (-0.90%)` | :arrow_down: |
1028 :mega: We’re building smart automated test selection to slash your CI/CD build times. [Learn more](https://about.codecov.io/iterative-testing/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov)
1030 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-03-26 16:01](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/80#issuecomment-1484141857):
1034 I've merged your pull request and added:
1035 - informing about supporting *.gz kconfig files,
1036 - functional testing of this feature.
1042 -------------------------------------------------------------------------------
1044 # [\#79 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/79) `closed`: Create unit-tests for the engine checking the correctness
1045 **Labels**: `enhancement`
1048 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) opened issue at [2023-03-06 08:03](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/79):
1050 That would prevent the bug in cb779a71bf57d95b. See the fix d006bfa48e87.
1052 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-04-02 12:51](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/79#issuecomment-1493323795):
1054 Good. This task is completed.
1056 Unit-tests for the `kconfig-hardened-check` engine are created:
1057 [kconfig_hardened_check/test_engine.py](https://github.com/a13xp0p0v/kconfig-hardened-check/blob/master/kconfig_hardened_check/test_engine.py)
1059 CI performs unit-testing on each repository push:
1060 https://github.com/a13xp0p0v/kconfig-hardened-check/actions/workflows/engine_unit-test.yml
1062 These unit-tests check the correctness of the engine results and cover 100% of the engine code.
1064 Reverting the aforementioned fix https://github.com/a13xp0p0v/kconfig-hardened-check/commit/d006bfa48e87600e70aae1a696ede3182f6c1cbd is detected by these unit-tests:
1066 ======================================================================
1067 FAIL: test_simple_kconfig (kconfig_hardened_check.test_engine.TestEngine)
1068 ----------------------------------------------------------------------
1069 Traceback (most recent call last):
1070 File "/home/a13x/land/Develop/Linux_Kernel/kconfig-hardened-check/kconfig_hardened_check/test_engine.py", line 130, in test_simple_kconfig
1072 AssertionError: Lists differ: [['CO[701 chars]8', 'OK: is not off, "off"'], ['CONFIG_NAME_9'[169 chars]nd']] != [['CO[701 chars]8', 'FAIL: is off'], ['CONFIG_NAME_9', 'kconfi[160 chars]nd']]
1074 First differing element 7:
1075 ['CON[25 chars]is not off', 'decision_8', 'reason_8', 'OK: is not off, "off"']
1076 ['CON[25 chars]is not off', 'decision_8', 'reason_8', 'FAIL: is off']
1080 -------------------------------------------------------------------------------
1082 # [\#78 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/78) `closed`: Fix nixos integration
1084 #### <img src="https://avatars.githubusercontent.com/u/96200?u=9ed15c85825694d00e996d605d728179b830c4fa&v=4" width="50">[Mic92](https://github.com/Mic92) opened issue at [2022-12-29 10:00](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/78):
1088 #### <img src="https://avatars.githubusercontent.com/u/65553080?u=1e9e0de760ac0083c86dab588f627a0468cd714e&v=4" width="50">[codecov-commenter](https://github.com/codecov-commenter) commented at [2022-12-29 10:02](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/78#issuecomment-1367203889):
1090 # [Codecov](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/78?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) Report
1091 > Merging [#78](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/78?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) (6fde9d6) into [master](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/commit/6211b6852b6b35f6f5d18ec2f0e713d2afea5a87?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) (6211b68) will **increase** coverage by `0.40%`.
1092 > The diff coverage is `n/a`.
1096 ## master #78 +/- ##
1097 ==========================================
1098 + Coverage 92.79% 93.20% +0.40%
1099 ==========================================
1103 ==========================================
1109 | Flag | Coverage Δ | |
1111 | functional_test | `93.20% <ø> (+0.40%)` | :arrow_up: |
1113 Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov#carryforward-flags-in-the-pull-request-comment) to find out more.
1115 | [Impacted Files](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/78?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) | Coverage Δ | |
1117 | [kconfig\_hardened\_check/\_\_init\_\_.py](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/78/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov#diff-a2NvbmZpZ19oYXJkZW5lZF9jaGVjay9fX2luaXRfXy5weQ==) | `93.25% <0.00%> (+0.41%)` | :arrow_up: |
1119 :mega: We’re building smart automated test selection to slash your CI/CD build times. [Learn more](https://about.codecov.io/iterative-testing/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov)
1121 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-01-19 19:58](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/78#issuecomment-1397525515):
1125 Closing, this issue has been fixed in https://github.com/a13xp0p0v/kconfig-hardened-check/pull/77.
1130 -------------------------------------------------------------------------------
1132 # [\#77 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/77) `merged`: add get-nixos-kconfig nix script
1134 #### <img src="https://avatars.githubusercontent.com/u/106462796?v=4" width="50">[o8opi](https://github.com/o8opi) opened issue at [2022-12-29 09:15](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/77):
1138 This nix script, when run with `nix-build get-nixos-kconfig.nix` will output 3 kernel configuration files (linux_latest, linux_hardened, and the linux_lts) for NixOS
1140 Has been tested on Ubuntu 20.04
1144 #### <img src="https://avatars.githubusercontent.com/u/65553080?u=1e9e0de760ac0083c86dab588f627a0468cd714e&v=4" width="50">[codecov-commenter](https://github.com/codecov-commenter) commented at [2023-01-19 15:00](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/77#issuecomment-1397110519):
1146 # [Codecov](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/77?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) Report
1147 > Merging [#77](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/77?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) (6149a3e) into [master](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/commit/6211b6852b6b35f6f5d18ec2f0e713d2afea5a87?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) (6211b68) will **not change** coverage.
1148 > The diff coverage is `n/a`.
1152 ## master #77 +/- ##
1153 =======================================
1154 Coverage 92.79% 92.79%
1155 =======================================
1159 =======================================
1165 | Flag | Coverage Δ | |
1167 | functional_test | `92.79% <ø> (ø)` | |
1169 Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov#carryforward-flags-in-the-pull-request-comment) to find out more.
1172 :mega: We’re building smart automated test selection to slash your CI/CD build times. [Learn more](https://about.codecov.io/iterative-testing/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov)
1174 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-01-19 16:06](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/77#issuecomment-1397219216):
1176 Thanks a lot, @o8opi!
1180 I also generated the NixOS kernel configs using `nix-build get-nixos-kconfig.nix`: https://github.com/a13xp0p0v/kconfig-hardened-check/commit/0267c39d10364e2afb0779f2ce271539eff6f4e1
1183 -------------------------------------------------------------------------------
1185 # [\#76 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/76) `closed`: iommu=force
1187 #### <img src="https://avatars.githubusercontent.com/u/74207682?u=fc82f6c725c4a6a1e0e8786b3ecee80b18118c92&v=4" width="50">[d4rklynk](https://github.com/d4rklynk) opened issue at [2022-12-13 17:58](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/76):
1189 It seems it helps indirectly from DMA attacks (from what I understand). It is recommended by ANSSI.
1191 From this [PDF](https://www.ssi.gouv.fr/uploads/2019/02/fr_np_linux_configuration-v2.0.pdf) (in french) at the chapter "**5.2.1 Configuration de la mémoire**"
1193 Or from this [older version](https://www.ssi.gouv.fr/uploads/2019/03/linux_configuration-en-v1.2.pdf) of the same PDF but in english : chapter "**4.3 IOMMU Service (input/output virtualization)**"
1195 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-01-21 22:03](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/76#issuecomment-1399341218):
1197 Added this check in https://github.com/a13xp0p0v/kconfig-hardened-check/commit/4e0065c8baf8d40c733f7f4c5c920c07b93c55b6
1202 -------------------------------------------------------------------------------
1204 # [\#75 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/75) `closed`: Integrity Measurement Architecture
1205 **Labels**: `question`
1208 #### <img src="https://avatars.githubusercontent.com/u/97197406?u=3fc2e7c1b9d9f1b9b1c8e7268aaa11204944694e&v=4" width="50">[JohnVengert](https://github.com/JohnVengert) opened issue at [2022-11-14 04:40](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/75):
1210 The Integrity Measurement Architecture is a subsystem that is responsible
1211 for calculating file hashes. this allows greater security . This option would be ideal
1218 CONFIG_IMA_MEASURE_PCR_IDX=10
1219 CONFIG_IMA_LSM_RULES=y
1220 CONFIG_IMA_NG_TEMPLATE=y
1221 # CONFIG_IMA_SIG_TEMPLATE is not set
1222 CONFIG_IMA_DEFAULT_TEMPLATE="ima-ng"
1223 # CONFIG_IMA_DEFAULT_HASH_SHA1 is not set
1224 # CONFIG_IMA_DEFAULT_HASH_SHA256 is not set
1225 CONFIG_IMA_DEFAULT_HASH_SHA512=y
1226 CONFIG_IMA_DEFAULT_HASH="sha512"
1227 CONFIG_IMA_WRITE_POLICY=y
1228 CONFIG_IMA_READ_POLICY=y
1229 CONFIG_IMA_APPRAISE=y
1230 CONFIG_IMA_ARCH_POLICY=y
1231 CONFIG_IMA_APPRAISE_BUILD_POLICY=y
1232 CONFIG_IMA_APPRAISE_REQUIRE_FIRMWARE_SIGS=y
1233 CONFIG_IMA_APPRAISE_REQUIRE_KEXEC_SIGS=y
1234 CONFIG_IMA_APPRAISE_REQUIRE_MODULE_SIGS=y
1235 CONFIG_IMA_APPRAISE_REQUIRE_POLICY_SIGS=y
1236 CONFIG_IMA_APPRAISE_BOOTPARAM=y
1237 CONFIG_IMA_APPRAISE_MODSIG=y
1238 CONFIG_IMA_TRUSTED_KEYRING=y
1239 CONFIG_IMA_KEYRINGS_PERMIT_SIGNED_BY_BUILTIN_OR_SECONDARY=y
1240 CONFIG_IMA_BLACKLIST_KEYRING=y
1241 CONFIG_IMA_LOAD_X509=y
1242 CONFIG_IMA_X509_PATH="/etc/keys/x509_ima.der"
1243 CONFIG_IMA_APPRAISE_SIGNED_INIT is not set (This option breaks memory, do not select)
1244 CONFIG_IMA_MEASURE_ASYMMETRIC_KEYS=y
1245 CONFIG_IMA_QUEUE_EARLY_BOOT_KEYS=y
1246 CONFIG_IMA_SECURE_AND_OR_TRUSTED_BOOT=y
1247 CONFIG_IMA_DISABLE_HTABLE=y
1249 CONFIG_EVM_ATTR_FSUUID=y
1250 CONFIG_EVM_EXTRA_SMACK_XATTRS=y
1251 CONFIG_EVM_ADD_XATTRS=y
1252 CONFIG_EVM_LOAD_X509=y
1253 CONFIG_EVM_X509_PATH="/etc/keys/x509_evm.der"
1256 My system integrates this security
1257 https://sourceforge.net/projects/anti-ransomware/
1263 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2022-12-08 13:29](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/75#issuecomment-1342739444):
1267 1. As I understand, IMA doesn't have direct influence on Linux **kernel** security.
1268 It's important for the userspace security, isn't it?
1270 2. Does this functionality require any userspace support or actions to work?
1272 3. You've provided a large list of options. Could you create a shortlist with the most important of them?
1277 -------------------------------------------------------------------------------
1279 # [\#74 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/74) `closed`: Add disabling compatibility mode.
1281 #### <img src="https://avatars.githubusercontent.com/u/7232674?u=dba600128b18073a4e3c33b76f5c601591d8f613&v=4" width="50">[Manouchehri](https://github.com/Manouchehri) opened issue at [2022-10-20 22:00](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/74):
1283 I'm not a kernel maintainer, so I added myself a new category. I don't think I'm wrong about this one though, here's a few public examples I found within a minute of searching:
1285 https://google.github.io/security-research/pocs/linux/cve-2021-22555/writeup.html
1286 https://bugs.chromium.org/p/project-zero/issues/detail?id=1574
1287 https://outflux.net/blog/archives/2010/10/19/cve-2010-2963-v4l-compat-exploit/
1288 http://inertiawar.com/compat1/
1289 http://inertiawar.com/compat2/
1291 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2022-10-22 18:57](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/74#issuecomment-1287883856):
1295 Thanks for your pull request and the idea.
1297 I looked up. That's how `CONFIG_COMPAT` is currently implemented:
1301 depends on IA32_EMULATION || X86_X32_ABI
1303 So we can't enable/disable it in the menuconfig directly.
1305 The KSPP project already recommends disabling `IA32_EMULATION` and `X86_X32`:
1307 CONFIG_IA32_EMULATION |kconfig| is not set | kspp |cut_attack_surface
1308 CONFIG_X86_X32 |kconfig| is not set | kspp |cut_attack_surface
1311 So maybe adding a separate check for `COMPAT` is not needed.
1313 But wait, `COMPAT` depends on `X86_X32_ABI` and not `X86_X32`.
1315 There is a Linux kernel commit `83a44a4f47ad20997aebb311fc678a13cde391d7` (Mar 14 2022)
1316 that renamed this config option. I will ask to update it at the KSPP wiki.
1317 Then I will add a new check for `X86_X32_ABI`.
1319 Thank you very much!
1321 This case shows that from time to time we need to look up all config options that should be disabled.
1322 Maybe some of them have been renamed in the Linux kernel.
1324 #### <img src="https://avatars.githubusercontent.com/u/7232674?u=dba600128b18073a4e3c33b76f5c601591d8f613&v=4" width="50">[Manouchehri](https://github.com/Manouchehri) commented at [2022-10-22 19:02](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/74#issuecomment-1287884800):
1326 CONFIG_COMPAT depends on the arch too. For example, neither `X86_X32_ABI` or `X86_X32` will cover arm64 systems.
1330 bool "Kernel support for 32-bit EL0"
1331 depends on ARM64_4K_PAGES || EXPERT
1334 https://github.com/torvalds/linux/blob/master/arch/arm64/Kconfig#L1526-L1542
1336 I don't see the harm in a separate check for `COMPAT`. That flag has been around for years and not changed across architectures IIRC.
1338 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2022-10-22 19:06](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/74#issuecomment-1287885578):
1340 That's a good point!
1341 I'll return with the results.
1343 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-01-14 18:01](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/74#issuecomment-1382873066):
1347 I contacted KSPP. Now their recommendations [contain](https://kernsec.org/wiki/index.php?title=Kernel_Self_Protection_Project%2FRecommended_Settings&action=historysubmit&type=revision&diff=4064&oldid=4060) disabling `CONFIG_COMPAT` and `CONFIG_X86_X32_ABI`.
1349 Please see the commit https://github.com/a13xp0p0v/kconfig-hardened-check/commit/f3ba594b3acbc154eeade43d87a76b90352ab1d1, where I added these KSPP recommendations.
1351 Thank you for the idea!
1355 -------------------------------------------------------------------------------
1357 # [\#73 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/73) `closed`: ERORR?
1359 #### <img src="https://avatars.githubusercontent.com/u/77776927?v=4" width="50">[alpahca](https://github.com/alpahca) opened issue at [2022-09-24 15:03](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/73):
1361 i was try to some book(Billimoria, Kaiwan N. Linux Kernel Debugging: Leverage proven tools and advanced techniques to effectively debug Linux kernels and kernel modules (p. 61). Packt Publishing. Kindle Edition. ).
1365 $ bin/kconfig-hardened-check -p X86_64 -c ~/lkd_kernels/kconfig.prod01/.config
1366 [!] ERROR: --config and --print can't be used together
1370 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2022-09-24 21:18](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/73#issuecomment-1257066908):
1374 Quoting `kconfig-hardened-check --help`:
1376 -p {X86_64,X86_32,ARM64,ARM}, --print {X86_64,X86_32,ARM64,ARM}
1377 print security hardening preferences for the selected architecture
1378 -c CONFIG, --config CONFIG
1379 check the kernel kconfig file against these preferences
1382 So for checking your kernel config simply do this:
1384 $ bin/kconfig-hardened-check -c ~/lkd_kernels/kconfig.prod01/.config
1387 #### <img src="https://avatars.githubusercontent.com/u/77776927?v=4" width="50">[alpahca](https://github.com/alpahca) commented at [2022-10-11 07:42](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/73#issuecomment-1274233073):
1391 VirtualBox:~/lkd_kernels/kconfig_prod01$ '/home/ked/kconfig-hardened-check/bin/kconfig-hardened-check' -c '/home/ked/lkd_kernels/kconfig_prod01'
1392 [+] Kconfig file to check: /home/ked/lkd_kernels/kconfig_prod01
1393 Traceback (most recent call last):
1394 File "/home/ked/kconfig-hardened-check/bin/kconfig-hardened-check", line 16, in
1395 kconfig_hardened_check.main()
1396 File "/home/ked/kconfig-hardened-check/kconfig_hardened_check/init.py", line 976, in main
1397 arch, msg = detect_arch(args.config, supported_archs)
1398 File "/home/ked/kconfig-hardened-check/kconfig_hardened_check/init.py", line 275, in detect_arch
1399 with open(fname, 'r') as f:
1400 IsADirectoryError: [Errno 21] Is a directory: '/home/ked/lkd_kernels/kconfig_prod01'
1402 Uhm... that should be my problem?
1404 -----Original Message-----
1405 From: "Alexander ***@***.***>
1407 Cc: ***@***.***>; ***@***.***>;
1408 Sent: 2022-09-25 (일) 06:18:44 (GMT+09:00)
1409 Subject: Re: [a13xp0p0v/kconfig-hardened-check] ERORR? (Issue #73)
1412 Quoting kconfig-hardened-check --help:
1413 -p {X86_64,X86_32,ARM64,ARM}, --print {X86_64,X86_32,ARM64,ARM} print security hardening preferences for the selected architecture -c CONFIG, --config CONFIG check the kernel kconfig file against these preferences
1414 So for checking your kernel config simply do this:
1415 $ bin/kconfig-hardened-check -c ~/lkd_kernels/kconfig.prod01/.config
1417 Reply to this email directly, view it on GitHub, or unsubscribe.
1418 You are receiving this because you were mentioned.Message ID: ***@***.***>
1421 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2022-10-22 19:27](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/73#issuecomment-1287890539):
1425 Please try to use `-c` with the path to the kconfig file, not a directory.
1431 -------------------------------------------------------------------------------
1433 # [\#71 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/71) `closed`: Config change in 5.19.X
1435 #### <img src="https://avatars.githubusercontent.com/u/11868071?u=d7a5841263276e1f323827fc21b04345df594a60&v=4" width="50">[Churam](https://github.com/Churam) opened issue at [2022-08-31 08:18](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/71):
1439 The X86_SMAP option is no longer present in 5.19.X kernels. It is now enforced.
1440 ( [commit](https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.19.5&id=c5a3d3c01e90e74166f95eec9db6fcc3ba72a9d6) )
1442 Since it has been removed, the script mark the entry as failed.
1444 [+] Special report mode: show_fail
1445 [+] Kconfig file to check: /opt/KERNEL/linux-5.19.5/.config
1446 [+] Detected architecture: X86_64
1447 [+] Detected kernel version: 5.19
1448 =========================================================================================================================
1449 option name | type |desired val | decision | reason | check result
1450 =========================================================================================================================
1451 CONFIG_X86_SMAP |kconfig| y |defconfig | self_protection | FAIL: not found
1456 The GCC_PLUGIN_RANDSTRUCT and GCC_PLUGIN_RANDSTRUCT_PERFORMANCE have changed now that CLANG has the feature. ( [commit](https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=linux-5.19.y&id=595b893e2087de306d0781795fb8ec47873596a6) ). They are now nammed RANDSTRUCT_FULL and RANDSTRUCT_PERFORMANCE respectively.
1458 At the moment they don't fail but the new entries should be added in the script I think.
1460 grep RANDSTRUCT ./.config
1461 # CONFIG_RANDSTRUCT_NONE is not set
1462 CONFIG_RANDSTRUCT_FULL=y
1463 # CONFIG_RANDSTRUCT_PERFORMANCE is not set
1465 CONFIG_GCC_PLUGIN_RANDSTRUCT=y
1470 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2022-09-02 11:42](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/71#issuecomment-1235396338):
1474 Thanks for your report!
1476 I've improved the checks, please have a look.
1478 #### <img src="https://avatars.githubusercontent.com/u/203012?u=939d6d3b5ff0b9e46e911d8792a40c20408574e2&v=4" width="50">[anthraxx](https://github.com/anthraxx) commented at [2022-09-06 19:29](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/71#issuecomment-1238566204):
1480 maybe it would make sense to tag a new release after :cat:
1482 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2022-09-09 08:23](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/71#issuecomment-1241663085):
1486 I have a complex and time-consuming procedure for preparing the kconfig-hardened-check releases.
1488 I’m planning to do this work for the next Linux kernel release.
1491 -------------------------------------------------------------------------------
1493 # [\#70 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/70) `closed`: COPR repo with built kernel with suggested recommendations
1495 #### <img src="https://avatars.githubusercontent.com/u/75043245?u=6d29ec5975073ebb1af663a8bf866715b525d50e&v=4" width="50">[krishjainx](https://github.com/krishjainx) opened issue at [2022-07-21 15:19](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/70):
1497 Hi. This repository has been incredibly useful to me as of late. I’m trying to do the following: create a COPR repository for example such that it takes the kernel configuration from Fedora’s latest kernel build for say 36 and then applies the recommended options here, handles setting everything on/off etc for everything that depends on that option and everything setting that option depends on while blacklisting certain recommendations such that it doesn’t break certain apps etc. Post doing this it would grab the source code for that kernel versions and build it with those configs and then one would just install the kernel normally.
1499 How would one go about implementing this? Thank you!
1501 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2022-07-21 19:48](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/70#issuecomment-1191870587):
1505 This approach can be called "creating a kernel flavour". Some distros do that.
1508 - Ubuntu kernel flavours: https://wiki.ubuntu.com/Kernel/Dev/Flavours
1509 - Suse kernel flavours: https://www.suse.com/support/kb/doc/?id=000017133
1510 - The discussion about NixOS hardened kernel: https://github.com/NixOS/nixpkgs/issues/76850
1512 #### <img src="https://avatars.githubusercontent.com/u/75043245?u=6d29ec5975073ebb1af663a8bf866715b525d50e&v=4" width="50">[krishjainx](https://github.com/krishjainx) commented at [2022-07-21 22:18](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/70#issuecomment-1191988714):
1514 Yes, thank you I understand that but how would I have your script/tool change the .config to be more hardened and then have that grab new kernel sources and automatically build like if I was to hold a COPR?
1516 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2022-07-22 21:00](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/70#issuecomment-1192931275):
1518 Thanks Krish, now I see what you mean.
1520 There is an enhancement #67. Maybe it would help to solve your task.
1522 Create a tool that changes kconfig options according the recommendations
1524 It should use the JSON output of `kconfig-hardened-check` and work with kconfig with [kconfiglib](https://pypi.org/project/kconfiglib/).
1528 #### <img src="https://avatars.githubusercontent.com/u/75043245?u=6d29ec5975073ebb1af663a8bf866715b525d50e&v=4" width="50">[krishjainx](https://github.com/krishjainx) commented at [2022-07-23 03:10](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/70#issuecomment-1193047106):
1530 For sure, this project is perhaps one of the best and most usable for kernel hardening and I would definitely be able to help if you can get started or others with implementing this. Thank you!
1532 #### <img src="https://avatars.githubusercontent.com/u/75043245?u=6d29ec5975073ebb1af663a8bf866715b525d50e&v=4" width="50">[krishjainx](https://github.com/krishjainx) commented at [2022-07-23 03:12](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/70#issuecomment-1193047378):
1534 It would be incredibly useful to instead of being developing sideways independent projects like linux-hardened or grsecurity to be working more close with upstream like you are - getting all the performance improvements, bug fixes and applying all available "vanilla" security fixes and pushing this to distributions using that tool. Then people can work off it. Even if it's not "revolutionary" I definitely believe in the long term it would help make Linux even better!
1536 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2022-07-24 15:44](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/70#issuecomment-1193343924):
1538 I can't comment about `grsecurity`. This topic is complex... Anyway, they are pioneers in kernel security hardening.
1540 The goal of `KSPP` is to develop kernel self-protection features for the mainline kernel. I hope my `kconfig-hardened-check` project also promotes these security features among Linux distros.
1543 -------------------------------------------------------------------------------
1545 # [\#69 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/69) `open`: Create documentation describing Linux kernel security options
1546 **Labels**: `enhancement`
1549 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) opened issue at [2022-07-04 10:43](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/69):
1553 #### <img src="https://avatars.githubusercontent.com/u/106462796?v=4" width="50">[o8opi](https://github.com/o8opi) commented at [2023-04-09 20:27](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/69#issuecomment-1501206810):
1555 Would love to see this, even if it's just a list of links and pointers to other resources :)
1558 -------------------------------------------------------------------------------
1560 # [\#68 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/68) `closed`: Create a tool reporting mainline kernel versions that support a recommended option
1561 **Labels**: `enhancement`
1564 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) opened issue at [2022-07-04 00:34](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/68):
1568 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2022-07-17 15:25](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/68#issuecomment-1186547339):
1570 The LKDDb project solves this task. Added info to the README.
1572 Good. Closing the issue.
1575 -------------------------------------------------------------------------------
1577 # [\#67 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/67) `closed`: Create a tool that changes kconfig options according to the recommendations
1578 **Labels**: `enhancement`
1581 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) opened issue at [2022-07-04 00:25](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/67):
1583 It should use the JSON output of kconfig-hardened-check.
1585 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2022-07-17 13:43](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/67#issuecomment-1186522515):
1587 See https://pypi.org/project/kconfiglib/
1589 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-02-17 16:06](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/67#issuecomment-1434854140):
1591 That tool would also help to filter out the kconfig options that can't be enabled for the given kernel version.
1593 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-06-12 15:32](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/67#issuecomment-1587577476):
1595 This feature is implemented as a part of the `kconfig-hardened-check` tool.
1597 With the `-g` argument, the tool generates a Kconfig fragment with the security hardening options for the selected microarchitecture.
1599 This Kconfig fragment can be merged with the existing Linux kernel config:
1602 $ ./bin/kconfig-hardened-check -g X86_64 > /tmp/fragment
1604 $ ./scripts/kconfig/merge_config.sh .config /tmp/fragment
1605 Using .config as base
1606 Merging /tmp/fragment
1607 Value of CONFIG_BUG_ON_DATA_CORRUPTION is redefined by fragment /tmp/fragment:
1608 Previous value: # CONFIG_BUG_ON_DATA_CORRUPTION is not set
1609 New value: CONFIG_BUG_ON_DATA_CORRUPTION=y
1614 -------------------------------------------------------------------------------
1616 # [\#66 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/66) `open`: Evaluate performance penalty of the recommended kernel options
1617 **Labels**: `enhancement`
1620 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) opened issue at [2022-07-03 09:57](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/66):
1622 As the first step, @BlackIkeEagle made some performance tests and described the results in [this article](https://blog.herecura.eu/blog/2020-05-30-kconfig-hardening-tests/).
1624 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2022-12-08 14:46](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/66#issuecomment-1342846087):
1626 Create a solution for automating this process:
1627 1. Take defconfig as a basic kernel configuration.
1628 2. Build the Linux kernel.
1629 3. Start test system with this kernel (a hardware machine may give more consistent results than a virtual machine). If the system doesn't boot, go to step 6.
1630 4. Run the chosen performance tests (hackbench, kernel compilation, network throughput evaluation, etc).
1631 5. Save the test results.
1632 6. Set another kernel option from the kconfig-hardened-check json output and go to step 2 (see #67). If all recommendations are already tested, then proceed to step 7.
1633 7. Analyze the results of the performance testing.
1635 That approach would save us from plenty of boring manual routine.
1637 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2022-12-08 18:58](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/66#issuecomment-1343190811):
1639 Similar performance testing of a group of security hardening options may give interesting results as well.
1642 -------------------------------------------------------------------------------
1644 # [\#65 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/65) `closed`: Support checking sysctl security options
1645 **Labels**: `enhancement`
1648 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) opened issue at [2022-07-03 09:50](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/65):
1650 The `OptCheck` class inheritance now allows to implement this feature.
1652 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-08-14 12:36](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/65#issuecomment-1677237521):
1654 Checking sysctl parameters is supported now:
1656 $ ./bin/kconfig-hardened-check
1657 usage: kconfig-hardened-check [-h] [--version] [-m {verbose,json,show_ok,show_fail}]
1658 [-c CONFIG] [-l CMDLINE] [-s SYSCTL]
1659 [-p {X86_64,X86_32,ARM64,ARM}]
1660 [-g {X86_64,X86_32,ARM64,ARM}]
1662 A tool for checking the security hardening options of the Linux kernel
1665 -h, --help show this help message and exit
1666 --version show program's version number and exit
1667 -m {verbose,json,show_ok,show_fail}, --mode {verbose,json,show_ok,show_fail}
1668 choose the report mode
1669 -c CONFIG, --config CONFIG
1670 check the security hardening options in the kernel Kconfig file
1671 (also supports *.gz files)
1672 -l CMDLINE, --cmdline CMDLINE
1673 check the security hardening options in the kernel cmdline file
1674 (contents of /proc/cmdline)
1675 -s SYSCTL, --sysctl SYSCTL
1676 check the security hardening options in the sysctl output file
1677 (`sudo sysctl -a > file`)
1678 -p {X86_64,X86_32,ARM64,ARM}, --print {X86_64,X86_32,ARM64,ARM}
1679 print the security hardening recommendations for the selected
1681 -g {X86_64,X86_32,ARM64,ARM}, --generate {X86_64,X86_32,ARM64,ARM}
1682 generate a Kconfig fragment with the security hardening options
1683 for the selected microarchitecture
1687 -------------------------------------------------------------------------------
1689 # [\#64 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/64) `closed`: script fetch configs from different kernel images for current architecture
1691 #### <img src="https://avatars.githubusercontent.com/u/106462796?v=4" width="50">[o8opi](https://github.com/o8opi) opened issue at [2022-06-01 06:34](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/64):
1693 This script now tries to fetch and/or build the different kernel images for current architecture and derive the kernel configs from them
1695 #### <img src="https://avatars.githubusercontent.com/u/106462796?v=4" width="50">[o8opi](https://github.com/o8opi) commented at [2022-06-01 06:36](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/64#issuecomment-1143174866):
1697 This might resolve #63
1699 #### <img src="https://avatars.githubusercontent.com/u/65553080?u=1e9e0de760ac0083c86dab588f627a0468cd714e&v=4" width="50">[codecov-commenter](https://github.com/codecov-commenter) commented at [2022-06-08 15:30](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/64#issuecomment-1150072367):
1701 # [Codecov](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/64?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) Report
1702 > Merging [#64](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/64?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) (86b6b08) into [master](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/commit/0d5c56f297fca50a48dfc602a5b4118b8ebdbceb?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) (0d5c56f) will **not change** coverage.
1703 > The diff coverage is `n/a`.
1707 ## master #64 +/- ##
1708 =======================================
1709 Coverage 98.08% 98.08%
1710 =======================================
1714 =======================================
1720 | Flag | Coverage Δ | |
1722 | functional_test | `98.08% <ø> (ø)` | |
1724 Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov#carryforward-flags-in-the-pull-request-comment) to find out more.
1726 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2022-06-10 16:49](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/64#issuecomment-1152552051):
1730 I tried your version of this script in a Docker container with Ubuntu 20.04.2.
1732 It failed with the error:
1735 copying path '/nix/store/l920bx9bw37jd681pk98dfra0j3lanva-libarchive-3.6.1-lib' from 'https://cache.nixos.org'...
1736 copying path '/nix/store/km0c80plib16fp76prmhcdwbag9iqnvf-nix-2.9.1' from 'https://cache.nixos.org'...
1737 copying path '/nix/store/0szyscpg632p7vlj9if5gadwlvwcb91d-nix-2.9.1-dev' from 'https://cache.nixos.org'...
1738 building '/nix/store/yz1y19d71lp53jymd51h4qw9c2663x6a-builder.pl.drv'...
1739 building '/nix/store/c539pzdghlrfcik2qymswm30ycbdj3yz-python3-3.9.13-env.drv'...
1740 created 226 symlinks in user environment
1741 Traceback (most recent call last):
1742 File "/home/a13x/src/kconfig-hardened-check/contrib/./get-nix-kconfig.py", line 61, in <module>
1744 File "/home/a13x/src/kconfig-hardened-check/contrib/./get-nix-kconfig.py", line 16, in main
1745 data = json.loads(proc.stdout)
1746 File "/nix/store/553d7c4xcwp9j1a1gb9cb1s9ry3x1pi9-python3-3.9.13/lib/python3.9/json/__init__.py", line 346, in loads
1747 return _default_decoder.decode(s)
1748 File "/nix/store/553d7c4xcwp9j1a1gb9cb1s9ry3x1pi9-python3-3.9.13/lib/python3.9/json/decoder.py", line 337, in decode
1749 obj, end = self.raw_decode(s, idx=_w(s, 0).end())
1750 File "/nix/store/553d7c4xcwp9j1a1gb9cb1s9ry3x1pi9-python3-3.9.13/lib/python3.9/json/decoder.py", line 355, in raw_decode
1751 raise JSONDecodeError("Expecting value", s, err.value) from None
1752 json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
1755 It looks like ` json.loads()` didn't manage to handle the output of `nix search`.
1757 #### <img src="https://avatars.githubusercontent.com/u/106462796?v=4" width="50">[o8opi](https://github.com/o8opi) commented at [2022-07-16 11:53](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/64#issuecomment-1186164603):
1759 this should work better now
1761 #### <img src="https://avatars.githubusercontent.com/u/106462796?v=4" width="50">[o8opi](https://github.com/o8opi) commented at [2022-07-17 21:53](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/64#issuecomment-1186613685):
1763 I have tested in an Ubuntu-20.04 container and it worked for me, can share Dockerfile if needed :)
1765 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2022-07-21 19:38](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/64#issuecomment-1191862516):
1769 Now it works better, but gives a bunch of other errors:
1771 created 223 symlinks in user environment
1772 extract-vmlinux: Cannot find vmlinux.
1773 Usage: extract-ikconfig <kernel-image>
1774 failed to extract config from legacyPackages.x86_64-linux.linuxPackages_5_10_hardened.kernel
1775 extract-vmlinux: Cannot find vmlinux.
1776 Usage: extract-ikconfig <kernel-image>
1777 failed to extract config from legacyPackages.x86_64-linux.linuxPackages_5_15_hardened.kernel
1778 extract-vmlinux: Cannot find vmlinux.
1779 Usage: extract-ikconfig <kernel-image>
1780 failed to extract config from legacyPackages.x86_64-linux.linuxPackages_5_18_hardened.kernel
1781 extract-vmlinux: Cannot find vmlinux.
1782 Usage: extract-ikconfig <kernel-image>
1783 failed to extract config from legacyPackages.x86_64-linux.linuxPackages_hardened.kernel
1784 error: Package ‘linux-4.14.180-176’ in /nix/store/xcba8ikxvdzw7ycg5ncnfq37w9491cn9-source/pkgs/os-specific/linux/kernel/linux-hardkernel-4.14.nix:4 is not supported on ‘x86_64-linux’, refusing to evaluate.
1786 a) To temporarily allow packages that are unsupported for this system, you can use an environment variable
1787 for a single invocation of the nix tools.
1789 $ export NIXPKGS_ALLOW_UNSUPPORTED_SYSTEM=1
1791 Note: For `nix shell`, `nix build`, `nix develop` or any other Nix 2.4+
1792 (Flake) command, `--impure` must be passed in order to read this
1793 environment variable.
1795 b) For `nixos-rebuild` you can set
1796 { nixpkgs.config.allowUnsupportedSystem = true; }
1797 in configuration.nix to override this.
1799 c) For `nix-env`, `nix-build`, `nix-shell` or any other Nix command you can add
1800 { allowUnsupportedSystem = true; }
1801 to ~/.config/nixpkgs/config.nix.
1802 (use '--show-trace' to show detailed location information)
1803 failed to build legacyPackages.x86_64-linux.linuxPackages_hardkernel_latest.kernel
1804 extract-vmlinux: Cannot find vmlinux.
1805 Usage: extract-ikconfig <kernel-image>
1806 failed to extract config from legacyPackages.x86_64-linux.linuxPackages_latest.kernel
1807 extract-vmlinux: Cannot find vmlinux.
1808 Usage: extract-ikconfig <kernel-image>
1809 failed to extract config from legacyPackages.x86_64-linux.linuxPackages_latest-libre.kernel
1810 extract-vmlinux: Cannot find vmlinux.
1811 Usage: extract-ikconfig <kernel-image>
1812 failed to extract config from legacyPackages.x86_64-linux.linuxPackages_lqx.kernel
1813 error: Package ‘linux-5.18.12-bcachefs-unstable-2022-04-25’ in /nix/store/xcba8ikxvdzw7ycg5ncnfq37w9491cn9-source/pkgs/os-specific/linux/kernel/linux-testing-bcachefs.nix:15 is marked as broken, refusing to evaluate.
1815 a) To temporarily allow broken packages, you can use an environment variable
1816 for a single invocation of the nix tools.
1818 $ export NIXPKGS_ALLOW_BROKEN=1
1820 Note: For `nix shell`, `nix build`, `nix develop` or any other Nix 2.4+
1821 (Flake) command, `--impure` must be passed in order to read this
1822 environment variable.
1824 b) For `nixos-rebuild` you can set
1825 { nixpkgs.config.allowBroken = true; }
1826 in configuration.nix to override this.
1828 c) For `nix-env`, `nix-build`, `nix-shell` or any other Nix command you can add
1829 { allowBroken = true; }
1830 to ~/.config/nixpkgs/config.nix.
1831 (use '--show-trace' to show detailed location information)
1832 failed to build legacyPackages.x86_64-linux.linuxPackages_testing_bcachefs.kernel
1833 extract-vmlinux: Cannot find vmlinux.
1834 Usage: extract-ikconfig <kernel-image>
1835 failed to extract config from legacyPackages.x86_64-linux.linuxPackages_xanmod.kernel
1836 extract-vmlinux: Cannot find vmlinux.
1837 Usage: extract-ikconfig <kernel-image>
1838 failed to extract config from legacyPackages.x86_64-linux.linuxPackages_xanmod_latest.kernel
1839 extract-vmlinux: Cannot find vmlinux.
1840 Usage: extract-ikconfig <kernel-image>
1841 failed to extract config from legacyPackages.x86_64-linux.linuxPackages_zen.kernel
1844 I see at least three different kinds of errors here.
1845 Could you have a look?
1847 I would also ask you to rebase your branch over `origin/master`.
1852 -------------------------------------------------------------------------------
1854 # [\#63 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/63) `closed`: Fix getting Nix kconfig (contrib)
1858 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) opened issue at [2022-04-27 23:30](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/63):
1860 Hello @Mic92, could you help with this Nix problem?
1862 I tested the installation of `kconfig-hardened-check` in a Docker container with Ubuntu 20.04.4 LTS.
1864 It failed with the following error:
1867 a13x@dc92d9d74557:~/src/1/kconfig-hardened-check/contrib$ ./get-nix-kconfig.py
1868 these 50 paths will be fetched (94.58 MiB download, 374.80 MiB unpacked):
1869 /nix/store/058drky7qcyd04rzqcmxh86xmifw96dx-glibc-2.34-115-bin
1870 /nix/store/1442kn5q9ah0bhhqm99f8nr76diczqgm-gnused-4.8
1871 /nix/store/19xbyxc31snlk60cil7cx6l4xw126ids-gcc-11.2.0
1872 /nix/store/4r26nvzfa1qfjaqgr2bpw2fz8c6qnk3s-gnutar-1.34
1873 /nix/store/58pwclg9yr437h0pfgrnbd0jis8fqasd-gcc-wrapper-11.2.0
1874 /nix/store/5h6q8cmqjd8iqpd99566hrg2a56pwdkc-acl-2.3.1
1875 /nix/store/6rbwy3mf0w8z119bwqs7dcrc2vyql9sf-expand-response-params
1876 /nix/store/7b2vmi7cq7lzw8g6kaihzg2kyilj4slm-bash-interactive-5.1-p16-dev
1877 /nix/store/87xq1difvspida4391y23vylkjdcgllf-linux-headers-5.16
1878 /nix/store/9l06npv9sp8avdraahzi4kqhcp607d8p-tzdata-2022a
1879 /nix/store/9pxskbhf92x9cxvg87nbzw2q1kmkrym6-bash-interactive-5.1-p16-info
1880 /nix/store/9wq21cbqsxpdx4dk0q6gab00fcir04d1-gzip-1.12
1881 /nix/store/a0k6rfn47h9f69p15pg415x6pfpxhsl5-gdbm-1.23
1882 /nix/store/a5xpjds3mlln26469h72v1jmd00jq6lv-xz-5.2.5
1883 /nix/store/ayrsyv7npr0lcbann4k9lxr19x813f0z-glibc-2.34-115
1884 /nix/store/b36ilvc5hhfpcp7kv1kvrkgcxxpmxfsd-zlib-1.2.12
1885 /nix/store/bavmqg7c4366hbiccpsdawbilh68dajy-xz-5.2.5-bin
1886 /nix/store/bndvc0y3v4djij152wiqbyn13zs2xivy-pcre-8.45
1887 /nix/store/bqkx3pi50phcglv0l551jhp96bq8njl0-gnugrep-3.7
1888 /nix/store/c7062r0rh84w3v77pqwdcggrsdlvy1df-findutils-4.9.0
1889 /nix/store/clkdigybx5w29rjxnwnsk76q49gb12k7-ncurses-6.3
1890 /nix/store/d60gkg5dkw4y5kc055n4m0xyvcjz65im-bash-interactive-5.1-p16
1891 /nix/store/dgic5ks4yixhh0havidjwd02rskmqlgp-binutils-wrapper-2.38
1892 /nix/store/dxj6b99zh4fh5z65rqirmcfvffxx5ig0-readline-8.1p2
1893 /nix/store/f2fnhhjanmxganm3xa5inwgvi6wj2ran-bash-interactive-5.1-p16-doc
1894 /nix/store/fcd0m68c331j7nkdxvnnpb8ggwsaiqac-bash-5.1-p16
1895 /nix/store/gm6q7jmajjmnwd29wgbq2jm3x37vsw3h-libffi-3.4.2
1896 /nix/store/hgl0ydlkgs6y6hx9h7k209shw3v7z77j-coreutils-9.0
1897 /nix/store/hym1n0ygqp9wcm7pxn4sfrql3fg7xa09-python3-3.9.12
1898 /nix/store/ik4qlj53grwmg7avzrfrn34bjf6a30ch-libunistring-1.0
1899 /nix/store/jm3nxvmxcm5nvalbv28acvygismcykvj-gnumake-4.3
1900 /nix/store/k3wp5kdxwa4ysb6nh5y9yll5n30cja5m-patch-2.7.6
1901 /nix/store/m2vh2ny7bqpwij1gpmvl5gxj7y4dgr4f-binutils-2.38
1902 /nix/store/n239ln3v669s5fkir2fd8niqawyg6qrv-attr-2.5.1
1903 /nix/store/pmyiksh5sgqzakbr84qsfxqy8fgirmic-stdenv-linux
1904 /nix/store/psijdi9190zgbp053y6dj3ax4y2l70gk-gcc-11.2.0-lib
1905 /nix/store/pvn23vycg674bj6nypjcfyhqbr85rqxa-glibc-2.34-115-dev
1906 /nix/store/qd3g8rk5hx5zkb70idjh6fa12sh6bipg-mailcap-2.1.53
1907 /nix/store/qvs678k05yrv566dmqdnxfbzi4s6ir1n-sqlite-3.38.2
1908 /nix/store/rf3j3p8cvn0dr5wdl65ns9f8wnlca8h6-readline-6.3p08
1909 /nix/store/sj2plsn7wz94dkwvg1wlb11pjch6r70v-diffutils-3.8
1910 /nix/store/v8vpzh3slc5hm4d9id5bim4dsb4d2ndh-openssl-1.1.1n
1911 /nix/store/v990x4cib4dssspn4778rlz46jmm3a9k-expat-2.4.7
1912 /nix/store/vz05jxs509mgp5i5jbrgvgvg4a2p3a3m-ed-1.18
1913 /nix/store/w3zngkrag7vnm7v1q8vnqb71q6a1w8gn-libidn2-2.3.2
1914 /nix/store/wcj03nlvxsjrc1cmpl2nhpn80l5wvf8j-gawk-5.1.1
1915 /nix/store/x6jr3j9hxs8ld8cy69gy9aykrm3iz8rv-patchelf-0.14.5
1916 /nix/store/yjndwl7872iqhw7m97gv7kwgwd5d66s5-bzip2-1.0.6.0.2-bin
1917 /nix/store/zf03nlnk9h724gz7qzzbrzyqif8gbwhq-bzip2-1.0.6.0.2
1918 /nix/store/zghsxxqb2gyz460q4r7jfdc2lpg3rgjw-bash-interactive-5.1-p16-man
1919 copying path '/nix/store/f2fnhhjanmxganm3xa5inwgvi6wj2ran-bash-interactive-5.1-p16-doc' from 'https://cache.nixos.org'...
1920 copying path '/nix/store/9pxskbhf92x9cxvg87nbzw2q1kmkrym6-bash-interactive-5.1-p16-info' from 'https://cache.nixos.org'...
1921 copying path '/nix/store/zghsxxqb2gyz460q4r7jfdc2lpg3rgjw-bash-interactive-5.1-p16-man' from 'https://cache.nixos.org'...
1922 copying path '/nix/store/ik4qlj53grwmg7avzrfrn34bjf6a30ch-libunistring-1.0' from 'https://cache.nixos.org'...
1923 copying path '/nix/store/87xq1difvspida4391y23vylkjdcgllf-linux-headers-5.16' from 'https://cache.nixos.org'...
1924 copying path '/nix/store/w3zngkrag7vnm7v1q8vnqb71q6a1w8gn-libidn2-2.3.2' from 'https://cache.nixos.org'...
1925 copying path '/nix/store/qd3g8rk5hx5zkb70idjh6fa12sh6bipg-mailcap-2.1.53' from 'https://cache.nixos.org'...
1926 copying path '/nix/store/ayrsyv7npr0lcbann4k9lxr19x813f0z-glibc-2.34-115' from 'https://cache.nixos.org'...
1927 copying path '/nix/store/9l06npv9sp8avdraahzi4kqhcp607d8p-tzdata-2022a' from 'https://cache.nixos.org'...
1928 copying path '/nix/store/n239ln3v669s5fkir2fd8niqawyg6qrv-attr-2.5.1' from 'https://cache.nixos.org'...
1929 copying path '/nix/store/fcd0m68c331j7nkdxvnnpb8ggwsaiqac-bash-5.1-p16' from 'https://cache.nixos.org'...
1930 copying path '/nix/store/5h6q8cmqjd8iqpd99566hrg2a56pwdkc-acl-2.3.1' from 'https://cache.nixos.org'...
1931 copying path '/nix/store/zf03nlnk9h724gz7qzzbrzyqif8gbwhq-bzip2-1.0.6.0.2' from 'https://cache.nixos.org'...
1932 copying path '/nix/store/hgl0ydlkgs6y6hx9h7k209shw3v7z77j-coreutils-9.0' from 'https://cache.nixos.org'...
1933 copying path '/nix/store/yjndwl7872iqhw7m97gv7kwgwd5d66s5-bzip2-1.0.6.0.2-bin' from 'https://cache.nixos.org'...
1934 copying path '/nix/store/sj2plsn7wz94dkwvg1wlb11pjch6r70v-diffutils-3.8' from 'https://cache.nixos.org'...
1935 copying path '/nix/store/vz05jxs509mgp5i5jbrgvgvg4a2p3a3m-ed-1.18' from 'https://cache.nixos.org'...
1936 copying path '/nix/store/6rbwy3mf0w8z119bwqs7dcrc2vyql9sf-expand-response-params' from 'https://cache.nixos.org'...
1937 copying path '/nix/store/v990x4cib4dssspn4778rlz46jmm3a9k-expat-2.4.7' from 'https://cache.nixos.org'...
1938 copying path '/nix/store/c7062r0rh84w3v77pqwdcggrsdlvy1df-findutils-4.9.0' from 'https://cache.nixos.org'...
1939 copying path '/nix/store/wcj03nlvxsjrc1cmpl2nhpn80l5wvf8j-gawk-5.1.1' from 'https://cache.nixos.org'...
1940 copying path '/nix/store/psijdi9190zgbp053y6dj3ax4y2l70gk-gcc-11.2.0-lib' from 'https://cache.nixos.org'...
1941 copying path '/nix/store/a0k6rfn47h9f69p15pg415x6pfpxhsl5-gdbm-1.23' from 'https://cache.nixos.org'...
1942 copying path '/nix/store/058drky7qcyd04rzqcmxh86xmifw96dx-glibc-2.34-115-bin' from 'https://cache.nixos.org'...
1943 copying path '/nix/store/jm3nxvmxcm5nvalbv28acvygismcykvj-gnumake-4.3' from 'https://cache.nixos.org'...
1944 copying path '/nix/store/pvn23vycg674bj6nypjcfyhqbr85rqxa-glibc-2.34-115-dev' from 'https://cache.nixos.org'...
1945 copying path '/nix/store/1442kn5q9ah0bhhqm99f8nr76diczqgm-gnused-4.8' from 'https://cache.nixos.org'...
1946 copying path '/nix/store/4r26nvzfa1qfjaqgr2bpw2fz8c6qnk3s-gnutar-1.34' from 'https://cache.nixos.org'...
1947 copying path '/nix/store/9wq21cbqsxpdx4dk0q6gab00fcir04d1-gzip-1.12' from 'https://cache.nixos.org'...
1948 copying path '/nix/store/gm6q7jmajjmnwd29wgbq2jm3x37vsw3h-libffi-3.4.2' from 'https://cache.nixos.org'...
1949 copying path '/nix/store/clkdigybx5w29rjxnwnsk76q49gb12k7-ncurses-6.3' from 'https://cache.nixos.org'...
1950 copying path '/nix/store/v8vpzh3slc5hm4d9id5bim4dsb4d2ndh-openssl-1.1.1n' from 'https://cache.nixos.org'...
1951 copying path '/nix/store/k3wp5kdxwa4ysb6nh5y9yll5n30cja5m-patch-2.7.6' from 'https://cache.nixos.org'...
1952 copying path '/nix/store/x6jr3j9hxs8ld8cy69gy9aykrm3iz8rv-patchelf-0.14.5' from 'https://cache.nixos.org'...
1953 copying path '/nix/store/bndvc0y3v4djij152wiqbyn13zs2xivy-pcre-8.45' from 'https://cache.nixos.org'...
1954 copying path '/nix/store/rf3j3p8cvn0dr5wdl65ns9f8wnlca8h6-readline-6.3p08' from 'https://cache.nixos.org'...
1955 copying path '/nix/store/bqkx3pi50phcglv0l551jhp96bq8njl0-gnugrep-3.7' from 'https://cache.nixos.org'...
1956 copying path '/nix/store/dxj6b99zh4fh5z65rqirmcfvffxx5ig0-readline-8.1p2' from 'https://cache.nixos.org'...
1957 copying path '/nix/store/a5xpjds3mlln26469h72v1jmd00jq6lv-xz-5.2.5' from 'https://cache.nixos.org'...
1958 copying path '/nix/store/d60gkg5dkw4y5kc055n4m0xyvcjz65im-bash-interactive-5.1-p16' from 'https://cache.nixos.org'...
1959 copying path '/nix/store/bavmqg7c4366hbiccpsdawbilh68dajy-xz-5.2.5-bin' from 'https://cache.nixos.org'...
1960 copying path '/nix/store/7b2vmi7cq7lzw8g6kaihzg2kyilj4slm-bash-interactive-5.1-p16-dev' from 'https://cache.nixos.org'...
1961 copying path '/nix/store/b36ilvc5hhfpcp7kv1kvrkgcxxpmxfsd-zlib-1.2.12' from 'https://cache.nixos.org'...
1962 copying path '/nix/store/m2vh2ny7bqpwij1gpmvl5gxj7y4dgr4f-binutils-2.38' from 'https://cache.nixos.org'...
1963 copying path '/nix/store/19xbyxc31snlk60cil7cx6l4xw126ids-gcc-11.2.0' from 'https://cache.nixos.org'...
1964 copying path '/nix/store/dgic5ks4yixhh0havidjwd02rskmqlgp-binutils-wrapper-2.38' from 'https://cache.nixos.org'...
1965 copying path '/nix/store/qvs678k05yrv566dmqdnxfbzi4s6ir1n-sqlite-3.38.2' from 'https://cache.nixos.org'...
1966 copying path '/nix/store/58pwclg9yr437h0pfgrnbd0jis8fqasd-gcc-wrapper-11.2.0' from 'https://cache.nixos.org'...
1967 copying path '/nix/store/hym1n0ygqp9wcm7pxn4sfrql3fg7xa09-python3-3.9.12' from 'https://cache.nixos.org'...
1969 copying path '/nix/store/pmyiksh5sgqzakbr84qsfxqy8fgirmic-stdenv-linux' from 'https://cache.nixos.org'...
1970 Traceback (most recent call last):
1971 File "/home/a13x/src/1/kconfig-hardened-check/contrib/./get-nix-kconfig.py", line 30, in <module>
1973 File "/home/a13x/src/1/kconfig-hardened-check/contrib/./get-nix-kconfig.py", line 16, in main
1974 data = json.loads(proc.stdout)
1975 File "/nix/store/hym1n0ygqp9wcm7pxn4sfrql3fg7xa09-python3-3.9.12/lib/python3.9/json/__init__.py", line 346, in loads
1976 return _default_decoder.decode(s)
1977 File "/nix/store/hym1n0ygqp9wcm7pxn4sfrql3fg7xa09-python3-3.9.12/lib/python3.9/json/decoder.py", line 337, in decode
1978 obj, end = self.raw_decode(s, idx=_w(s, 0).end())
1979 File "/nix/store/hym1n0ygqp9wcm7pxn4sfrql3fg7xa09-python3-3.9.12/lib/python3.9/json/decoder.py", line 355, in raw_decode
1980 raise JSONDecodeError("Expecting value", s, err.value) from None
1981 json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
1984 Hoping for your help with Nix, @Mic92!
1986 #### <img src="https://avatars.githubusercontent.com/u/106462796?v=4" width="50">[o8opi](https://github.com/o8opi) commented at [2022-12-28 21:16](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/63#issuecomment-1366920764):
1988 Hello, is this still relevant ?
1990 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2022-12-28 22:11](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/63#issuecomment-1366954405):
1994 It would be nice to fix this script or remove it.
1996 Is it possible to get a Nix kernel config somewhere without building the Linux kernel for NixOS?
2000 #### <img src="https://avatars.githubusercontent.com/u/96200?u=9ed15c85825694d00e996d605d728179b830c4fa&v=4" width="50">[Mic92](https://github.com/Mic92) commented at [2022-12-29 10:00](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/63#issuecomment-1367202486):
2002 The script was fixed in https://github.com/a13xp0p0v/kconfig-hardened-check/pull/78
2004 #### <img src="https://avatars.githubusercontent.com/u/96200?u=9ed15c85825694d00e996d605d728179b830c4fa&v=4" width="50">[Mic92](https://github.com/Mic92) commented at [2022-12-29 10:01](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/63#issuecomment-1367203173):
2006 I don't think the kernel config can be easily get otherwise. It is generated by nix code depending on enabled features and kernel versions.
2008 #### <img src="https://avatars.githubusercontent.com/u/96200?u=9ed15c85825694d00e996d605d728179b830c4fa&v=4" width="50">[Mic92](https://github.com/Mic92) commented at [2022-12-29 10:02](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/63#issuecomment-1367204327):
2010 However there is https://github.com/cachix/install-nix-action combined https://github.com/marketplace/actions/create-pull-request could automatically keep this up-to-date.
2012 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-01-19 16:15](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/63#issuecomment-1397233625):
2016 Closing, this issue has been fixed in https://github.com/a13xp0p0v/kconfig-hardened-check/pull/77.
2021 -------------------------------------------------------------------------------
2023 # [\#62 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/62) `merged`: Add BLK_DEV_FD_RAWCMD
2024 **Labels**: `kernel_maintainer_feedback`
2027 #### <img src="https://avatars.githubusercontent.com/u/150761?u=f98bb82be5009ecefd6ee9bc3d60fcf082f8cf49&v=4" width="50">[evdenis](https://github.com/evdenis) opened issue at [2022-04-27 18:15](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/62):
2029 See commit torvalds/linux@233087ca0636 ("floppy: disable FDRAWCMD by default")
2031 Signed-off-by: Denis Efremov <efremov@linux.com>
2033 #### <img src="https://avatars.githubusercontent.com/u/65553080?u=1e9e0de760ac0083c86dab588f627a0468cd714e&v=4" width="50">[codecov-commenter](https://github.com/codecov-commenter) commented at [2022-04-27 18:16](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/62#issuecomment-1111331853):
2035 # [Codecov](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/62?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) Report
2036 > Merging [#62](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/62?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) (bbe60e7) into [master](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/commit/61bfef8931bcefc1abb6d3d46e169c8372ce729b?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) (61bfef8) will **increase** coverage by `0.01%`.
2037 > The diff coverage is `100.00%`.
2041 ## master #62 +/- ##
2042 ==========================================
2043 + Coverage 90.32% 90.33% +0.01%
2044 ==========================================
2048 ==========================================
2054 | Flag | Coverage Δ | |
2056 | functional_test | `90.33% <100.00%> (+0.01%)` | :arrow_up: |
2058 Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov#carryforward-flags-in-the-pull-request-comment) to find out more.
2060 | [Impacted Files](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/62?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) | Coverage Δ | |
2062 | [kconfig\_hardened\_check/\_\_init\_\_.py](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/62/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov#diff-a2NvbmZpZ19oYXJkZW5lZF9jaGVjay9fX2luaXRfXy5weQ==) | `90.34% <100.00%> (+0.01%)` | :arrow_up: |
2066 [Continue to review full report at Codecov](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/62?src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov).
2067 > **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov)
2068 > `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
2069 > Powered by [Codecov](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/62?src=pr&el=footer&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov). Last update [61bfef8...bbe60e7](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/62?src=pr&el=lastupdated&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov).
2071 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2022-04-28 11:41](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/62#issuecomment-1112102364):
2077 -------------------------------------------------------------------------------
2079 # [\#61 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/61) `closed`: Let user select configs without absolute path
2081 #### <img src="https://avatars.githubusercontent.com/u/29118926?v=4" width="50">[dmknght](https://github.com/dmknght) opened issue at [2022-03-26 15:15](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/61):
2084 Parrot OS 5.0, python 3
2085 kconfig-hardened-check version 5.14
2086 I've tried all options in help menu and I didn't find anything similar to my idea
2089 1. Create an option to list all config. Maybe it supports search as well.
2090 2. Let user select module without absolute path. For example, when I do Debian packaging for this tool, the configs are at `/usr/lib/python3/dist-packages/kconfig_hardened_check/config_files/` and users don't know where to search configs / modules.
2092 1. Add a `__init__.py` file into `config_files`. By this, folder `configs` is a module of the whole project.
2093 2. You can do `from kconfig-hardnerned-check.<any path> import config_files`. Absolute path of the module will be `config_files.__path__[0]`
2094 3. All modules are listed by `walk_dir(config_files.__path__[0])`. By this, you can have an option in argv to list all configs
2095 4. When user provide `-c` flag, like `-c distros/debian.config`, absolute path is merged with `config_files.__path__[0]` so there's no need to know absolute path.
2097 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2022-04-08 18:06](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/61#issuecomment-1093149751):
2103 Actually, the config files in `kconfig_hardened_check/config_files/` are provided as examples that are used for developing and testing of this tool. These configs are updated not that often, they don't cover all major distros.
2105 The main use case for users is to check their own kernel config. The example from Fedora:
2107 ./bin/kconfig-hardened-check -c /boot/config-5.16.11-100.fc34.x86_64
2109 So I don't think users care about the location of these example config files. How do you think?
2111 #### <img src="https://avatars.githubusercontent.com/u/29118926?v=4" width="50">[dmknght](https://github.com/dmknght) commented at [2022-05-06 05:37](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/61#issuecomment-1119275930):
2115 > Thanks for writing!
2117 > Actually, the config files in `kconfig_hardened_check/config_files/` are provided as examples that are used for developing and testing of this tool. These configs are updated not that often, they don't cover all major distros.
2119 > The main use case for users is to check their own kernel config. The example from Fedora:
2122 > ./bin/kconfig-hardened-check -c /boot/config-5.16.11-100.fc34.x86_64
2125 > So I don't think users care about the location of these example config files. How do you think?
2127 Hello! Sorry for very late reply. I had issue with my mail notification LuL. Anyway, I think that's a very interesting point that i didn't know. In this case, I think `kconfig-hardened-check` can have a flag like `auto check` to do the command automatically. The workflow is like:
2128 1. Check if there is `config file` that matches `kernel version` at `/boot/`
2129 2. If exists, run the system check automatically
2130 3. If doesn't exists, tells user to try some examples. In this case, i think absolute path of examples is needed.
2132 What do you think about this? To me I think it's easier to user to just do `run and read` the result without thinking about wrong profiles.
2134 #### <img src="https://avatars.githubusercontent.com/u/32568352?v=4" width="50">[Bernhard40](https://github.com/Bernhard40) commented at [2022-05-07 12:00](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/61#issuecomment-1120197457):
2136 Some distros don't expose kernel config at /boot and I don't see why average user would be interested in checking example config which is probably totally unrelated to their system.
2138 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2022-05-08 13:33](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/61#issuecomment-1120420075):
2140 I agree with @Bernhard40.
2142 @dmknght, I would avoid adding the code for searching the kernel config on a local machine.
2144 Moreover, Linux kernel developers often use the `kconfig-hardened-check` tool for the configs of the kernels that they develop (not the config of the local machine).
2148 #### <img src="https://avatars.githubusercontent.com/u/29118926?v=4" width="50">[dmknght](https://github.com/dmknght) commented at [2022-05-09 08:49](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/61#issuecomment-1120822656):
2150 > @dmknght, I would avoid adding the code for searching the kernel config on a local machine.
2152 Well it's not that hard. From what i checked, you just need to get kernel version, and map the path `/boot/config-<kernel version>`
2154 > Moreover, Linux kernel developers often use the kconfig-hardened-check tool for the configs of the kernels that they develop (not the config of the local machine).
2155 Well i see. So i guess I can close the issue now because the scope is different.
2158 -------------------------------------------------------------------------------
2160 # [\#60 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/60) `merged`: UBSAN_SANITIZE_ALL not available on ARM
2162 #### <img src="https://avatars.githubusercontent.com/u/7194705?u=be917f131efce086bc9785f2b606107afe2d2fc3&v=4" width="50">[cyanidium](https://github.com/cyanidium) opened issue at [2022-03-26 14:29](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/60):
2164 ARCH_HAS_UBSAN_SANITIZE_ALL is not selected for arm arch, which prevents selection of CONFIG_UBSAN_SANITIZE_ALL
2166 https://github.com/torvalds/linux/blob/master/arch/arm/Kconfig
2167 https://github.com/torvalds/linux/blob/master/lib/Kconfig.ubsan
2169 #### <img src="https://avatars.githubusercontent.com/u/65553080?u=1e9e0de760ac0083c86dab588f627a0468cd714e&v=4" width="50">[codecov-commenter](https://github.com/codecov-commenter) commented at [2022-03-26 14:30](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/60#issuecomment-1079705754):
2171 # [Codecov](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/60?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) Report
2172 > Merging [#60](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/60?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) (b9c72b3) into [master](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/commit/b0b91b58adc962da01c7fc45cef662ae1b462828?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) (b0b91b5) will **increase** coverage by `0.01%`.
2173 > The diff coverage is `100.00%`.
2177 ## master #60 +/- ##
2178 ==========================================
2179 + Coverage 91.46% 91.48% +0.01%
2180 ==========================================
2184 ==========================================
2190 | Flag | Coverage Δ | |
2192 | functional_test | `91.48% <100.00%> (+0.01%)` | :arrow_up: |
2194 Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov#carryforward-flags-in-the-pull-request-comment) to find out more.
2196 | [Impacted Files](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/60?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) | Coverage Δ | |
2198 | [kconfig\_hardened\_check/\_\_init\_\_.py](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/60/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov#diff-a2NvbmZpZ19oYXJkZW5lZF9jaGVjay9fX2luaXRfXy5weQ==) | `91.50% <100.00%> (+0.01%)` | :arrow_up: |
2202 [Continue to review full report at Codecov](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/60?src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov).
2203 > **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov)
2204 > `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
2205 > Powered by [Codecov](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/60?src=pr&el=footer&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov). Last update [b0b91b5...b9c72b3](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/60?src=pr&el=lastupdated&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov).
2207 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2022-04-08 16:43](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/60#issuecomment-1093077908):
2213 You are right, UBSAN_SANITIZE_ALL is not available for arm for now.
2214 See the discussion for more info https://github.com/KSPP/linux/issues/25#issuecomment-928154612
2216 I'm going to merge your branch.
2220 -------------------------------------------------------------------------------
2222 # [\#59 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/59) `merged`: EFI mitigations can't be enabled if EFI is not set
2224 #### <img src="https://avatars.githubusercontent.com/u/7194705?u=be917f131efce086bc9785f2b606107afe2d2fc3&v=4" width="50">[cyanidium](https://github.com/cyanidium) opened issue at [2022-03-15 12:38](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/59):
2226 Both EFI_DISABLE_PCI_DMA and RESET_ATTACK_MITIGATION depend on EFI, but if EFI is not set, neither config is required.
2228 Useful on embedded devices that use u-boot or similar instead of EFI.
2233 -------------------------------------------------------------------------------
2235 # [\#58 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/58) `closed`: CONFIG_TRIM_UNUSED_KSYMS and CONFIG_MODULES not in sync
2237 #### <img src="https://avatars.githubusercontent.com/u/11868071?u=d7a5841263276e1f323827fc21b04345df594a60&v=4" width="50">[Churam](https://github.com/Churam) opened issue at [2022-01-17 17:17](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/58):
2239 It seems there is a problem with the current stable kernel (5.15.14 at the date of this issue).
2241 The kernel option TRIM_UNUSED_KSYMS is defined in my config as:
2243 Symbol: TRIM_UNUSED_KSYMS [=n]
2245 Defined at init/Kconfig:2301
2246 Prompt: Trim unused exported kernel symbols
2247 Depends on: MODULES [=n] && !COMPILE_TEST [=n]
2248 Visible if: MODULES [=n] && !COMPILE_TEST [=n] && EXPERT [=y]
2250 (1) -> Enable loadable module support (MODULES [=n])
2253 Or the script (with the setup above) outputs me:
2254 CONFIG_TRIM_UNUSED_KSYMS | y | my | cut_attack_surface | FAIL: not found
2256 But as the hardening requires to have MODULES = n (is not set) it is impossible to set TRIM_UNUSED_KSYMS through menuconfig.
2260 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2022-01-21 15:53](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/58#issuecomment-1018632628):
2262 @Churam thanks for your report!
2266 The output for your case now:
2268 CONFIG_TRIM_UNUSED_KSYMS | y | my | cut_attack_surface | OK: CONFIG_MODULES "is not set"
2271 #### <img src="https://avatars.githubusercontent.com/u/11868071?u=d7a5841263276e1f323827fc21b04345df594a60&v=4" width="50">[Churam](https://github.com/Churam) commented at [2022-01-24 11:04](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/58#issuecomment-1019976819):
2274 Output is now as expected, closing issue
2277 -------------------------------------------------------------------------------
2279 # [\#57 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/57) `open`: CONFIG_AMD_IOMMU_V2 = m appears also to be correct
2280 **Labels**: `question`
2283 #### <img src="https://avatars.githubusercontent.com/u/15869?u=31910a5ba7214eaf12efd39cbdf71b69af1b7db0&v=4" width="50">[brandonweeks](https://github.com/brandonweeks) opened issue at [2022-01-10 09:40](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/57):
2286 CONFIG_AMD_IOMMU = y
2287 CONFIG_AMD_IOMMU_V2 = m
2289 appears to correctly setup the AMD v2 IOMMU on supported hardware (tested on NixOS) and is the config option used by [Fedora/RHEL](https://gitlab.com/cki-project/kernel-ark/-/blob/os-build/redhat/configs/common/generic/x86/x86_64/CONFIG_AMD_IOMMU_V2).
2291 If you agree with this assessment, any pointers on how to add an OR to the existing AND conditional for `CONFIG_AMD_IOMMU`?
2293 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2022-01-21 15:29](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/57#issuecomment-1018612527):
2297 Could you give any details on tests you mentioned?
2302 -------------------------------------------------------------------------------
2304 # [\#56 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/56) `open`: Add RISC-V support
2305 **Labels**: `enhancement`
2308 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) opened issue at [2021-11-21 12:07](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/56):
2310 It would be nice to have `kconfig-hardened-check` adapted for `RISC-V` kernel configs.
2312 #### <img src="https://avatars.githubusercontent.com/u/125879?v=4" width="50">[cybernet](https://github.com/cybernet) commented at [2021-12-24 13:35](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/56#issuecomment-1000842582):
2317 -------------------------------------------------------------------------------
2319 # [\#55 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/55) `closed`: Should slub_debug be considered a hardening cmd line parameter?
2320 **Labels**: `question`
2323 #### <img src="https://avatars.githubusercontent.com/u/3797768?v=4" width="50">[morfikov](https://github.com/morfikov) opened issue at [2021-10-28 21:16](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/55):
2325 [According to this](https://github.com/a13xp0p0v/kconfig-hardened-check/blob/2b5bf3548b6a7edbf7cd74278d570b658f9ab34a/kconfig_hardened_check/__init__.py#L13-L21), the `slub_debug` is a hardening cmd line parameter. But when you use this option, you will see the following in the syslog on newer kernels:
2328 kernel: **********************************************************
2329 kernel: ** NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE **
2331 kernel: ** This system shows unhashed kernel memory addresses **
2332 kernel: ** via the console, logs, and other interfaces. This **
2333 kernel: ** might reduce the security of your system. **
2335 kernel: ** If you see this message and you are not debugging **
2336 kernel: ** the kernel, report this immediately to your system **
2337 kernel: ** administrator! **
2339 kernel: ** NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE **
2340 kernel: **********************************************************
2342 More [here](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=792702911f581f7793962fbeb99d5c3a1b28f4c3) and [here](https://patchwork.kernel.org/project/linux-mm/patch/20210214161348.369023-4-timur@kernel.org/).
2344 So, should users use slub_debug=FZP or slub_debug=ZP?
2346 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2021-11-09 19:26](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/55#issuecomment-964465176):
2350 My code comment in `__init__.py` is a note for future development within https://github.com/a13xp0p0v/kconfig-hardened-check/issues/46. It's not a final decision.
2352 Currently I consider `slub_debug=F` and `slub_debug=Z` as debugging features, as you can see at the [Linux Kernel Defence Map](https://github.com/a13xp0p0v/linux-kernel-defence-map).
2354 And I will have to learn more about `init_on_free` and `slub_debug=P` to choose between them.
2359 -------------------------------------------------------------------------------
2361 # [\#54 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/54) `merged`: Add BLK_DEV_FD
2362 **Labels**: `kernel_maintainer_feedback`
2365 #### <img src="https://avatars.githubusercontent.com/u/150761?u=f98bb82be5009ecefd6ee9bc3d60fcf082f8cf49&v=4" width="50">[evdenis](https://github.com/evdenis) opened issue at [2021-09-10 15:41](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/54):
2367 Floppy driver was written many years ago. It was designed to
2368 work in a single-threaded environment (many global variables)
2369 and to work on real hardware which has significant delays
2370 (floppy drives are slow). Nowadays, when we use virtual
2371 devices (which are fast) and multi-core cpus, floppy driver
2372 shows its problems including deadlocking/livelocking and
2373 other security-related issues. However, we can't just
2374 rewrite it because lack of real hardware and compatibility
2375 with existing userspace tools, many of which rely on
2376 undocumented driver behavior.
2378 Here are some CVEs related to floppy driver:
2379 - CVE-2014-1737 privileges escalation in FDRAWCMD ioctl
2380 - CVE-2014-1738 info leak from kernel heap in FDRAWCMD ioctl
2381 - CVE-2018-7755 kernel pointer lead in FDGETPRM ioctl
2382 - CVE-2019-14283 integer overflow and out-of-bounds read in set_geometry
2383 - CVE-2019-14284 denial of service in setup_format_params
2384 - CVE-2020-9383 out-of-bounds read in set_fdc
2385 - CVE-2021-20261 race condition in floppy_revalidate,
2388 As pointed by Linus [1]:
2389 > The only users are virtualization, and even they are going away
2390 > because floppies are so small, and other things have become more
2391 > standard anyway (ie USB disk) or easier to emulate (NVMe or whatever).
2392 > So I suspect the only reason floppy is used even in that area is just
2393 > legacy "we haven't bothered updating to anything better and we have
2394 > old scripts and images that work".
2396 CONFIG_BLK_DEV_FD is not enabled in defconfig on x86_64.
2397 Many distros already require root access for /dev/fd0.
2398 However, qemu (5.2.0) still enables floppy device by default.
2400 [1] https://lore.kernel.org/all/CAHk-=whFAAV_TOLFNnj=wu4mD2L9OvgB6n2sKDdmd8buMKFv8A@mail.gmail.com/
2402 #### <img src="https://avatars.githubusercontent.com/u/65553080?u=1e9e0de760ac0083c86dab588f627a0468cd714e&v=4" width="50">[codecov-commenter](https://github.com/codecov-commenter) commented at [2021-09-10 21:23](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/54#issuecomment-917220941):
2404 # [Codecov](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/54?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) Report
2405 > Merging [#54](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/54?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) (17d70c5) into [master](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/commit/b54dca6a96b7a07d3d1aec56b5a1df6386bb7d61?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) (b54dca6) will **increase** coverage by `0.01%`.
2406 > The diff coverage is `100.00%`.
2408 [![Impacted file tree graph](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/54/graphs/tree.svg?width=650&height=150&src=pr&token=GOOVXMV5Kb&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov)](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/54?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov)
2412 ## master #54 +/- ##
2413 ==========================================
2414 + Coverage 92.95% 92.96% +0.01%
2415 ==========================================
2419 ==========================================
2425 | Flag | Coverage Δ | |
2427 | functional_test | `92.96% <100.00%> (+0.01%)` | :arrow_up: |
2429 Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov#carryforward-flags-in-the-pull-request-comment) to find out more.
2431 | [Impacted Files](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/54?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) | Coverage Δ | |
2433 | [kconfig\_hardened\_check/\_\_init\_\_.py](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/54/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov#diff-a2NvbmZpZ19oYXJkZW5lZF9jaGVjay9fX2luaXRfXy5weQ==) | `93.02% <100.00%> (+0.01%)` | :arrow_up: |
2437 [Continue to review full report at Codecov](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/54?src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov).
2438 > **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov)
2439 > `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
2440 > Powered by [Codecov](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/54?src=pr&el=footer&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov). Last update [b54dca6...17d70c5](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/54?src=pr&el=lastupdated&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov).
2442 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2021-09-10 21:28](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/54#issuecomment-917223378):
2444 Thanks a lot @evdenis :)
2445 The pull request is merged.
2448 -------------------------------------------------------------------------------
2450 # [\#53 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/53) `closed`: Justification of UBSAN-related choices?
2451 **Labels**: `kernel_maintainer_feedback`
2454 #### <img src="https://avatars.githubusercontent.com/u/601177?v=4" width="50">[equaeghe](https://github.com/equaeghe) opened issue at [2021-09-04 21:22](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/53):
2456 Currently, `UBSAN`-related choices are as follows:
2458 https://github.com/a13xp0p0v/kconfig-hardened-check/blob/4dc94be8a5e0c3a0889679f7079aa93c7f44464d/kconfig_hardened_check/__init__.py#L421-L423
2460 It is unclear to me why the last two are chosen. `UBSAN_MISC=y` seems like a good thing, as it enables more checks. `UBSAN_TRAP=y` seems like a bad thing, as it enables denial of service attacks. Furthermore, if I understand things correctly, `UBSAN_SANITIZE_ALL=y` would be needed to practically activate `UBSAN`.
2462 Is my understanding correct, or a misunderstanding (which is perfectly possible). In the latter case, I would be grateful for a pointer to an appropriate resource.
2464 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2021-09-10 13:40](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/53#issuecomment-916912883):
2468 Thanks for your question.
2470 Please have a look, @kees wrote about that in his article about security-related things in the Linux kernel 5.7:
2471 https://outflux.net/blog/archives/2020/09/21/security-things-in-linux-v5-7/
2475 For runtime checking, the Undefined Behavior Sanitizer has an option for adding runtime array bounds checking
2476 for catching things like this where the compiler cannot perform a static analysis of the index values.
2480 It was, however, not separate (via kernel Kconfig) until Elena Petrova and I split it out into
2481 CONFIG_UBSAN_BOUNDS, which is fast enough for production kernel use.
2485 Since UBSAN (and the other Sanitizers) only WARN() by default, system owners need to
2486 set panic_on_warn=1 too if they want to defend against attacks targeting these kinds of flaws.
2487 Because of this, and to avoid bloating the kernel image with all the warning messages, I introduced
2488 CONFIG_UBSAN_TRAP which effectively turns these conditions into a BUG() without needing
2489 additional sysctl settings.
2492 Does that provide answers to your questions?
2494 #### <img src="https://avatars.githubusercontent.com/u/601177?v=4" width="50">[equaeghe](https://github.com/equaeghe) commented at [2021-09-10 14:04](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/53#issuecomment-916929875):
2496 Thanks, that explains why `UBSAN_TRAP=y`. I am still unclear why `UBSAN_MISC is not set` and why nothing is said about `UBSAN_SANITIZE_ALL`.
2498 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2021-09-10 14:56](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/53#issuecomment-916967782):
2500 It looks like other UBSAN modes are for kernel debugging, not for hardening:
2502 [*] Perform checking for bit-shift overflows
2503 [*] Perform checking for integer divide-by-zero
2504 [*] Perform checking for non-boolean values used as boolean
2505 [*] Perform checking for out of bounds enum values
2506 [*] Perform checking for misaligned pointer usage
2508 Previously they were collected under UBSAN_MISC, but now I see that they are separate since the kernel commit c637693b20da8706b7f48d96882c9c80ae935151. I will have a closer look at them.
2510 I will also test UBSAN_SANITIZE_ALL behavior.
2514 #### <img src="https://avatars.githubusercontent.com/u/1110841?u=e5e99e1ac8260e791433baa2423f7d173eea4c1c&v=4" width="50">[kees](https://github.com/kees) commented at [2021-09-10 18:50](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/53#issuecomment-917133371):
2516 `UBSAN_SANITIZE_ALL` is needed to gain coverage over the kernel as a whole. Otherwise, only opted-in things will have the UBSAN features applied.
2518 I.e. for production workloads, I recommend:
2522 CONFIG_UBSAN_BOUNDS=y
2523 CONFIG_UBSAN_SANITIZE_ALL=y
2526 and depending on one's crash tolerances, either use `panic_on_warn=1` or `CONFIG_UBSAN_TRAP=y`.
2528 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2021-09-10 21:20](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/53#issuecomment-917219349):
2530 Thank you very much @kees !
2533 -------------------------------------------------------------------------------
2535 # [\#52 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/52) `closed`: Add RANDOMIZE_KSTACK_OFFSET_DEFAULT
2537 #### <img src="https://avatars.githubusercontent.com/u/203012?u=939d6d3b5ff0b9e46e911d8792a40c20408574e2&v=4" width="50">[anthraxx](https://github.com/anthraxx) opened issue at [2021-08-25 19:44](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/52):
2539 Randomize kernel stack offset on syscall entry
2541 The kernel stack offset can be randomized (after pt_regs) by
2542 roughly 5 bits of entropy, frustrating memory corruption
2543 attacks that depend on stack address determinism or
2544 cross-syscall address exposures. This feature is controlled
2545 by kernel boot param "randomize_kstack_offset=on/off", and this
2546 config chooses the default boot state.
2548 #### <img src="https://avatars.githubusercontent.com/u/65553080?u=1e9e0de760ac0083c86dab588f627a0468cd714e&v=4" width="50">[codecov-commenter](https://github.com/codecov-commenter) commented at [2021-08-25 19:46](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/52#issuecomment-905823752):
2550 # [Codecov](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/52?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) Report
2551 > Merging [#52](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/52?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) (5d12e64) into [master](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/commit/57379d8c851656116e2b149e3f1d4003c17d22d9?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) (57379d8) will **increase** coverage by `0.01%`.
2552 > The diff coverage is `100.00%`.
2554 [![Impacted file tree graph](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/52/graphs/tree.svg?width=650&height=150&src=pr&token=GOOVXMV5Kb&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov)](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/52?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov)
2558 ## master #52 +/- ##
2559 ==========================================
2560 + Coverage 92.87% 92.88% +0.01%
2561 ==========================================
2565 ==========================================
2571 | Flag | Coverage Δ | |
2573 | functional_test | `92.88% <100.00%> (+0.01%)` | :arrow_up: |
2575 Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov#carryforward-flags-in-the-pull-request-comment) to find out more.
2577 | [Impacted Files](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/52?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) | Coverage Δ | |
2579 | [kconfig\_hardened\_check/\_\_init\_\_.py](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/52/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov#diff-a2NvbmZpZ19oYXJkZW5lZF9jaGVjay9fX2luaXRfXy5weQ==) | `92.94% <100.00%> (+0.01%)` | :arrow_up: |
2583 [Continue to review full report at Codecov](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/52?src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov).
2584 > **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov)
2585 > `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
2586 > Powered by [Codecov](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/52?src=pr&el=footer&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov). Last update [57379d8...5d12e64](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/52?src=pr&el=lastupdated&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov).
2588 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2021-09-10 12:14](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/52#issuecomment-916859414):
2592 You might be busy, so I've made the fixes myself in the commit b54dca6a96b7a07d3d1aec56b5a1df6386bb7d61.
2593 Hope you wouldn't mind.
2598 #### <img src="https://avatars.githubusercontent.com/u/203012?u=939d6d3b5ff0b9e46e911d8792a40c20408574e2&v=4" width="50">[anthraxx](https://github.com/anthraxx) commented at [2021-09-10 12:15](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/52#issuecomment-916860190):
2600 @a13xp0p0v nah, i was just about to make it KSPP official hence the delay. should have communicated it. Will create a followup PR marking it as kspp soon :cat:
2602 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2021-09-10 13:45](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/52#issuecomment-916916530):
2606 Sure, looking forward to your new pull request!
2609 -------------------------------------------------------------------------------
2611 # [\#51 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/51) `merged`: Added cbl-mariner kernel configuration file.
2613 #### <img src="https://avatars.githubusercontent.com/u/25109036?u=507c0397c0e27f6fc1a1b3115f293c66b8056199&v=4" width="50">[Hacks4Snacks](https://github.com/Hacks4Snacks) opened issue at [2021-08-19 20:49](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/51):
2617 I have added the CBL-Mariner 1.0 distribution kernel configuration file.
2619 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2021-08-20 17:22](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/51#issuecomment-902842367):
2621 Hello @Hacks4Snacks,
2622 Could you please add the corresponding info to `kconfig_hardened_check/config_files/links.txt` and update your pull request?
2625 #### <img src="https://avatars.githubusercontent.com/u/25109036?u=507c0397c0e27f6fc1a1b3115f293c66b8056199&v=4" width="50">[Hacks4Snacks](https://github.com/Hacks4Snacks) commented at [2021-08-20 17:42](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/51#issuecomment-902853201):
2627 Sure thing! A link to the publicly available configuration has been added. @a13xp0p0v
2629 #### <img src="https://avatars.githubusercontent.com/u/65553080?u=1e9e0de760ac0083c86dab588f627a0468cd714e&v=4" width="50">[codecov-commenter](https://github.com/codecov-commenter) commented at [2021-08-20 18:11](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/51#issuecomment-902869062):
2631 # [Codecov](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/51?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) Report
2632 > Merging [#51](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/51?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) (a5686b1) into [master](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/commit/38bde65d9df70a6b1ec772b93b07e98778cb7e34?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov) (38bde65) will **not change** coverage.
2633 > The diff coverage is `n/a`.
2635 [![Impacted file tree graph](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/51/graphs/tree.svg?width=650&height=150&src=pr&token=GOOVXMV5Kb&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov)](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/51?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov)
2639 ## master #51 +/- ##
2640 =======================================
2641 Coverage 92.87% 92.87%
2642 =======================================
2646 =======================================
2652 | Flag | Coverage Δ | |
2654 | functional_test | `92.87% <ø> (ø)` | |
2656 Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov#carryforward-flags-in-the-pull-request-comment) to find out more.
2661 [Continue to review full report at Codecov](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/51?src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov).
2662 > **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov)
2663 > `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
2664 > Powered by [Codecov](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/51?src=pr&el=footer&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov). Last update [38bde65...a5686b1](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/51?src=pr&el=lastupdated&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Alexander+Popov).
2666 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2021-08-20 18:22](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/51#issuecomment-902874845):
2668 Merged. Thanks @Hacks4Snacks!
2671 -------------------------------------------------------------------------------
2673 # [\#50 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/50) `open`: Allow redefining rules and expanding rule sets
2674 **Labels**: `enhancement`
2677 #### <img src="https://avatars.githubusercontent.com/u/65050545?u=3d095cc7726e6bbf544ea4857c4223033ea90921&v=4" width="50">[petervanvugt](https://github.com/petervanvugt) opened issue at [2021-02-20 01:10](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/50):
2679 I have found this tool quite helpful for quickly auditing embedded kernel configs. However, I've been finding that on embedded systems, I often have unique, application-specific security requirements:
2681 - Embedded SoC vendors often have drivers that haven't made it into mainline that need to be checked (e.g. special HW RNG drivers, TZ drivers, PMIC drivers)
2682 - The application may want to even further prioritize the correct operation of the system over performance or reliability (i.e. be willing to sacrifice battery life, CPU bandwidth, or resistance to DoS attacks to increase hardness)
2683 - Since the required kernel functionality is fully defined (e.g. we know we'll _never_ need FAT filesystem support, don't want UART or kernel console driver, don't want USB gadget drivers, etc.), specify that unused drivers must be removed, lest they be leveraged by an attacker
2685 I propose moving the config tests currently hard-coded in `__init__` into a set of yaml configs that can be included by a top-level config, like this:
2687 # Includes are optional. Recursively walk through them, each test/error will be tagged with the source yaml
2688 # Last included definition for a CONFIG_ is used
2696 # Description of test
2698 # Test passes if CONFIG=value
2700 # Test passes if config not found, or "is not set"
2701 # require: is not set,
2702 # Optional: only test if other config is set to something
2704 # Optional: only test specific kernel versions
2705 if_kernel_ver_gt_eq: 5.9,
2706 if_kernel_ver_lt: 5.8,
2707 # Optional: only test specific architectures
2708 if_arch: [X86_64, ARM64, X86_32],
2710 # Example: require CONFIG_BUG=y
2716 This would enable the config requirements to be layered, similar to the way kernel `defconfigs` can be layered (i.e. arch | Android | SoC vendor | device). I have some free time next week to implement this if you're open to it.
2718 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2021-02-21 22:15](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/50#issuecomment-782937216):
2720 Hello @petervanvugt,
2722 Thanks for your initiative!
2724 May I ask you to describe your use-case in details?
2725 Which new requirements to `kconfig-hardened-check` behavior does it have?
2727 Maybe a layered yaml that you propose is not a single solution for your use-case.
2729 Moreover, I see that your use-case relates to this discussion: https://github.com/a13xp0p0v/kconfig-hardened-check/pull/9#issuecomment-453810119
2730 I think we can define some common solution.
2732 Now about the syntax of check definitions.
2733 - Currently all checks are grouped together in `kconfig_hardened_check/__init__.py`.
2734 - The check definitions are very short.
2736 So I can observe them altogether. That helps me to understand and maintain these checks, which is not an easy task.
2737 That is my main rationale.
2739 Here you propose a completely different syntax.
2740 I think we should discuss it before we start coding.
2742 1. Can we separate changing check definition syntax from changing `kconfig-hardened-check` behavior?
2743 2. The given syntax example doesn't cover all check types that we have. Could you please write *all* current checks in your new syntax? I think we need that for making the decision.
2745 (I'm travelling till the beginning of March, excuse me for delayed replies)
2750 #### <img src="https://avatars.githubusercontent.com/u/65050545?u=3d095cc7726e6bbf544ea4857c4223033ea90921&v=4" width="50">[petervanvugt](https://github.com/petervanvugt) commented at [2021-02-23 02:26](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/50#issuecomment-783833502):
2754 My use essentially falls into three cases:
2756 1. My system has kconfigs **not in mainline that must always be set**.
2758 _For example_, I might want to verify `PANIC_ON_DATA_CORRUPTION` [from Android](https://android.googlesource.com/kernel/msm/+/7b49b86d3aa3d0c6400454a346bad1bbdf0cc78f%5E%21/) is enabled, as a defensive measure, because I'd rather the system immediately reboot at the first sign things are going off the rails, rather than risk being exploited by an attacker.
2760 2. My system has kconfigs that **are in mainline, which are only in play for my hardware**.
2762 _For example_, I may want to verify that my chip's `CONFIG_<HWVENDOR>_HWRANDOM` is enabled, because I'm using it as a cryptographically secure source of enropy.
2764 3. My system has kconfigs that **are in mainline, which many/most users want enabled, but I want disabled**, because they add no benefit, and some nonzero risk.
2766 _For example_, if I'm building an embedded system that uses NXP's i.MX line, I may want to verify `CONFIG_SERIAL_IMX` and `CONFIG_SERIAL_IMX_CONSOLE` are not enabled, because I want to be absolutely certain that the serial drivers and associated kernel console drivers haven't been included. Or, in a similar vein to **(1)**, I may want to enable `CONFIG_PANIC_ON_OOPS` because I prioritize the correctness of my system over its availability.
2768 [EDIT] Another, potentially stronger example I have run into recently is `PROC_PAGE_MONITOR`. The grsecurity patch set removes it for good reason, because access to `/proc/<pid>/smaps` can leak memory mapping information defeating ASLR. While there are mitigations all recent versions of the kernel to prevent insufficiently privileged processes from reading the map of a more privileged process, there have been a few race conditions and side channels that have been shown to circumvent this. So, it is reasonable that many users will want to disable this altogether. However, Android's *libmeminfo* needs to read this entry to compute process memory utilization, which is pretty hard to live without in some applications.
2770 Can we serve all these use cases?
2772 Clearly, there a few paths that could be taken here. We could add these requirements to the very compact representation in `kconfig_hardened_check/__init__.py`. And for **(1)** and **(2)**, we could likely produce some combination of AND/OR kconfig checks (albeit sometimes non-trivial) that keeps the check from generating unnecessarily noisy output/false positives when run on configs for non-applicable hardware, or for kernels that don't fully track mainline. But this wouldn't solve for **(3)**, unless we require the tool be specially patched for such cases, or we add runtime args that turn on each of these checks.
2774 If we want to be able to specify additional requirements at runtime and/or override requirements at runtime, we need a way to specify alternate requirements. This is why I am proposing representing the requirements as runtime configuration, rather than code. As to how we would represent some of the more complex requirements, I am proposing we break them down into requirements that each only check one config each, optionally only checked for some combination of specific architectures/kernel versions/`CONFIG_`s.
2776 We could take configs whose names changed, such as this:
2778 282 l += [OR(OptCheck('self_protection', 'defconfig', 'STACKPROTECTOR_STRONG', 'y'),
2779 283 OptCheck('self_protection', 'defconfig', 'CC_STACKPROTECTOR_STRONG', 'y'))]
2781 and split them into two separate requirements, the first one for kernels >= 4.18, and the second one for kernels >= 3.14 and < 4.18.
2783 The most complex requirement I see is this one:
2785 307 if arch == 'ARM64':
2787 310 l += [OR(OptCheck('self_protection', 'defconfig', 'HARDEN_EL2_VECTORS', 'y'),
2788 311 AND(OptCheck('self_protection', 'defconfig', 'RANDOMIZE_BASE', 'y'),
2789 312 VerCheck((5, 9))))] # HARDEN_EL2_VECTORS was included in RANDOMIZE_BASE in v5.9
2791 which could be split into two requirements: one for `RANDOMIZE_BASE` on kernels >= 5.9 for ARM64, and a second check for `HARDEN_EL2_VECTORS` on older kernels >= 4.17 and < 5.9, also for ARM64. This would keep the requirements more readable in the long run.
2795 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2021-03-05 19:16](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/50#issuecomment-791625966):
2797 @petervanvugt thanks a lot for describing your use-cases.
2798 I think they match with [this one](https://github.com/a13xp0p0v/kconfig-hardened-check/pull/9#issuecomment-453810119).
2799 I want to make them possible.
2801 I think `kconfig-hardened-check` should allow to override the default checks and append custom checks.
2802 As a first step, we need some simple solution without changing the check description syntax.
2803 Then we can ponder over the check description syntax.
2805 I will experiment with that.
2806 If you create any prototype, please share!
2808 #### <img src="https://avatars.githubusercontent.com/u/10352354?u=97ab0d446ea4204b959ae74734f8436c78de18e7&v=4" width="50">[egberts](https://github.com/egberts) commented at [2021-08-31 13:08](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/50#issuecomment-909221366):
2810 other use case is prevent leakage of kernel pointers to log file, /proc directory files, or terminal output.
2812 Which is just a bunch of debugs and dmesg turned off.
2815 another one is the one provided by Whonix.org (a KSPP variant) which is more rigorous form of kernel security.
2817 Another one is for Spectre, et. al., mitigation and that has a bunch of config s as well.
2819 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2023-04-23 07:33](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/50#issuecomment-1518980838):
2821 I implemented a part of this feature in `override_expected_value()`.
2823 1. Implementation: https://github.com/a13xp0p0v/kconfig-hardened-check/commit/c1090722157b531261a7cf0257f2dccb744bd93d
2825 2. Unit-test: https://github.com/a13xp0p0v/kconfig-hardened-check/commit/7194de8dfe8b6232166eded1516eb7fdd21c14ed
2827 3. Refinement of the CONFIG_ARCH_MMAP_RND_BITS check using this feature: https://github.com/a13xp0p0v/kconfig-hardened-check/commit/9bbea5b5bad45aac84aadf83536e31f9bd5e395e
2830 -------------------------------------------------------------------------------
2832 # [\#49 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/49) `closed`: Some checks seem to be at odds with what the recommended settings are
2834 #### <img src="https://avatars.githubusercontent.com/u/14325582?v=4" width="50">[wdormann](https://github.com/wdormann) opened issue at [2021-02-11 14:34](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/49):
2836 I did not go through them all, but these in particular stuck out to me:
2839 CONFIG_GCC_PLUGIN_RANDSTRUCT_PERFORMANCE | is not set | clipos | self_protection | FAIL: CONFIG_GCC_PLUGIN_RANDSTRUCT not "y"
2840 CONFIG_STACKLEAK_METRICS | is not set | clipos | self_protection | FAIL: CONFIG_GCC_PLUGIN_STACKLEAK not "y"
2841 CONFIG_STACKLEAK_RUNTIME_DISABLE | is not set | clipos | self_protection | FAIL: CONFIG_GCC_PLUGIN_STACKLEAK not "y"
2844 If I'm reading this properly, the recommended setting for these is ```not set```
2845 However, the specific tests show as ```FAIL``` because they are ```not "y"```
2847 Perhaps I'm just interpreting the report incorrectly, but at first glance it would appear that the check for the desired result is wrong.
2850 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2021-02-11 15:06](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/49#issuecomment-777552022):
2854 Thanks for your question.
2855 The output is correct, let me explain.
2858 CONFIG_GCC_PLUGIN_RANDSTRUCT | y | kspp | self_protection | FAIL: not found
2860 CONFIG_GCC_PLUGIN_RANDSTRUCT_PERFORMANCE | is not set | clipos | self_protection | FAIL: CONFIG_GCC_PLUGIN_RANDSTRUCT not "y"
2862 `RANDSTRUCT` is disabled and the first check fails.
2863 The `RANDSTRUCT_PERFORMANCE` feature is dependent on `RANDSTRUCT`.
2864 That's why the second check fails too with the explanation: `CONFIG_GCC_PLUGIN_RANDSTRUCT not "y"`.
2866 The situation with `STACKLEAK_METRICS` and `STACKLEAK_RUNTIME_DISABLE` is similar.
2867 These checks fail because they depend on `STACKLEAK` which is not `"y"`.
2869 #### <img src="https://avatars.githubusercontent.com/u/14325582?v=4" width="50">[wdormann](https://github.com/wdormann) commented at [2021-02-11 15:19](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/49#issuecomment-777570144):
2871 Reading comprehension is apparently important!
2872 Thanks for the clarification.
2875 -------------------------------------------------------------------------------
2877 # [\#48 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/48) `merged`: Do not check CONFIG_HARDEN_EL2_VECTORS for v5.9+
2879 #### <img src="https://avatars.githubusercontent.com/u/20878259?v=4" width="50">[pgils](https://github.com/pgils) opened issue at [2020-10-19 13:45](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/48):
2881 The CONFIG_HARDEN_EL2_VECTORS Kconfig was removed in Linux 5.9: torvalds/linux@a59a2ed.
2883 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-10-21 15:06](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/48#issuecomment-713644849):
2885 Hi @pgils, thanks for your pull request!
2887 In fact HARDEN_EL2_VECTORS is now included in RANDOMIZE_BASE.
2888 So simple check of the kernel version is not enough.
2890 I think of making nested ComplexOptCheck possible to write such a rule.
2892 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-10-22 16:12](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/48#issuecomment-714601175):
2895 I added nested `ComplexOptChecks` support, merged and improved your rule.
2898 #### <img src="https://avatars.githubusercontent.com/u/20878259?v=4" width="50">[pgils](https://github.com/pgils) commented at [2020-10-24 14:14](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/48#issuecomment-715921069):
2900 thanks @a13xp0p0v, that's a nice feature!
2902 Do you think it would be worthwhile using this for complex dependencies such as this one for `ARM64_PTR_AUTH` which currently `'FAIL'`s for my ARMv8-A config but is not selectable in `menuconfig`?:
2904 (CC_HAS_SIGN_RETURN_ADDRESS [=n] || CC_HAS_BRANCH_PROT_PAC_RET [=n]) \
2905 && AS_HAS_PAC [=n] \
2906 && (LD_IS_LLD [=n] \
2907 || LD_VERSION [=235000000]>=233010000
2908 || CC_IS_GCC [=y] && GCC_VERSION [=100200]<90100) \
2909 && (!CC_IS_CLANG [=n] || AS_HAS_CFI_NEGATE_RA_STATE [=y]) \
2910 && (!FUNCTION_GRAPH_TRACER [=n] || DYNAMIC_FTRACE_WITH_REGS [=n])
2913 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-10-30 18:16](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/48#issuecomment-719717934):
2915 @pgils, I guess you can't enable `ARM64_PTR_AUTH` because your current toolchain doesn't fit the requirements.
2916 I would recommend improving the toolchain to get this nice feature.
2918 See the output about my toolchain (in Fedora 32):
2920 Depends on: (CC_HAS_SIGN_RETURN_ADDRESS [=y] || CC_HAS_BRANCH_PROT_PAC_RET [=y]) && AS_HAS_PAC [=y] && (LD_IS_LLD [=n] || LD_VERSION [=234000000]>=233010000 || CC_IS_GCC [=y] && GCC_VERSION [=90201]<90100) && (!CC_IS_CLANG [=n] || AS_HAS_CFI_NEGATE_RA_STATE [=y]) && (!FUNCTION_GRAPH_TRACER [=n] || DYNAMIC_FTRACE_WITH_REGS [=n])
2924 -------------------------------------------------------------------------------
2926 # [\#47 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/47) `closed`: Please support /proc/config.gz
2928 #### <img src="https://avatars.githubusercontent.com/u/3797768?v=4" width="50">[morfikov](https://github.com/morfikov) opened issue at [2020-10-13 14:58](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/47):
2930 Currently only uncompressed `config-*` files in /boot/ are supported, but the current kernel config can also be accessed via `/proc/config.gz` . There's no way to use this file. Please support this path as well.
2932 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-10-14 12:25](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/47#issuecomment-708366463):
2934 No problem, I would recommend this:
2936 # zcat /proc/config.gz > my.config
2937 # ./bin/kconfig-hardened-check -c my.config
2940 #### <img src="https://avatars.githubusercontent.com/u/3797768?v=4" width="50">[morfikov](https://github.com/morfikov) commented at [2020-10-14 13:43](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/47#issuecomment-708410948):
2942 Yes, I know, but this is the same as just using `-c /boot/config-*` . I thought of using `/proc/config.gz` because in such case a user would just use one file no matter what kernel version he's using. When you decompress the file first, it's an extra step which could be eliminated to simplify the whole process and make it easier.
2944 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-10-21 14:44](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/47#issuecomment-713629103):
2946 Not all kernels provide the kernel config via `/proc/config.gz`.
2947 For example, RHEL, Fedora, Ubuntu, Debian don't do that.
2949 I think we can use `zcat` separately, if we need.
2952 -------------------------------------------------------------------------------
2954 # [\#46 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/46) `closed`: CPU specific options and the kernel cmd line
2955 **Labels**: `enhancement`
2958 #### <img src="https://avatars.githubusercontent.com/u/3797768?v=4" width="50">[morfikov](https://github.com/morfikov) opened issue at [2020-10-04 15:39](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/46):
2960 I have an Intel CPU, and when I run `kconfig-hardened-check` I get the following FAILs:
2963 CONFIG_AMD_IOMMU | y |defconfig | self_protection | FAIL: "is not set"
2964 CONFIG_AMD_IOMMU_V2 | y | my | self_protection | FAIL: not found
2967 It would be nice to have such CPU specific options hidden in the results.
2969 The behavior of some options can be controlled via the kernel cmd line, for instance:
2972 CONFIG_SLUB_DEBUG_ON | y | my | self_protection | FAIL: "is not set"
2973 CONFIG_X86_VSYSCALL_EMULATION | is not set | clipos | cut_attack_surface | FAIL: "y"
2976 If a user set `slub_debug=FZP` and `vsyscall=none` in the kernel cmd line, I think he would achieve the same behavior. So, `kconfig-hardened-check` could check such kernel cmd line options before giving a FAIL.
2978 What do you think about such improvements?
2980 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-10-05 10:09](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/46#issuecomment-703535817):
2982 Hi @morfikov, thanks for your ideas.
2984 1. I think we can group AMD_IOMMU recommendations with the corresponding ones for Intel using `OR`.
2985 That would allow to avoid incorrect FAIL reports.
2987 2. Parsing the kernel command line is a nice feature, it's on my TODO list. Moreover, we can get it from `/proc/cmdline` without additional privileges, which is nice.
2989 I'm going to work on `kconfig-hardened-check` in the coming days.
2990 If you want to participate, come on, your pull requests will be welcome!
2992 #### <img src="https://avatars.githubusercontent.com/u/32568352?v=4" width="50">[Bernhard40](https://github.com/Bernhard40) commented at [2020-10-05 11:03](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/46#issuecomment-703560552):
2994 I always seen this project scope as simple kernel config checker not running system audit tool and I believe in old unix mantra _Do One Thing and Do It Well_ so I'm skeptical about this additions. Taking `/proc/cmdline` into account would mean same config would yield different result across systems. Having OR between amd and intel features make it less useful for distros which would want them all.
2996 I think end users are capable of ignoring amd warnings when they have intel cpu and the opposite and also be aware o what they added to their cmdline.
2998 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-10-05 11:55](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/46#issuecomment-703583549):
3002 > Having OR between amd and intel features make it less useful for distros which would want them all.
3004 Hm, you are right. I would agree on that point.
3006 > Taking /proc/cmdline into account would mean same config would yield different result across systems
3008 I would propose a compromise: add a separate flag for checking `/proc/cmdline` (disabled by default).
3011 In fact, I see checking cmdline parameters as a very big improvement.
3012 There are several important cases when checking kernel config is not enough for a correct conclusion about the kernel security.
3013 Examples: `mitigations`, `page_poison`, `init_on_alloc/init_on_free` and some others.
3015 #### <img src="https://avatars.githubusercontent.com/u/32568352?v=4" width="50">[Bernhard40](https://github.com/Bernhard40) commented at [2020-10-05 20:35](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/46#issuecomment-703873764):
3017 > I would propose a compromise: add a separate flag for checking /proc/cmdline (disabled by default).
3020 I don't mind if you are ready to maintain it.
3022 > In fact, I see checking cmdline parameters as a very big improvement.
3023 > There are several important cases when checking kernel config is not enough for a correct conclusion about the kernel security.
3025 Yes but for now checking kernel config is the only thing this project ever promised (see readme). Conclusions about kernel security needs expanding the project scope which may be a rabbit hole as if you add cmdlne support then sysctl support should be next etc.
3027 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-10-05 21:01](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/46#issuecomment-703886769):
3029 @Bernhard40, I'll do my best.
3031 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2022-05-28 19:19](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/46#issuecomment-1140317020):
3033 Now kconfig-hardened-check supports checking kernel cmdline parameters.
3038 usage: kconfig-hardened-check [-h] [--version] [-p {X86_64,X86_32,ARM64,ARM}]
3041 [-m {verbose,json,show_ok,show_fail}]
3043 A tool for checking the security hardening options of the Linux kernel
3046 -h, --help show this help message and exit
3047 --version show program's version number and exit
3048 -p {X86_64,X86_32,ARM64,ARM}, --print {X86_64,X86_32,ARM64,ARM}
3049 print security hardening preferences for the selected architecture
3050 -c CONFIG, --config CONFIG
3051 check the kernel kconfig file against these preferences
3052 -l CMDLINE, --cmdline CMDLINE
3053 check the kernel cmdline file against these preferences
3054 -m {verbose,json,show_ok,show_fail}, --mode {verbose,json,show_ok,show_fail}
3055 choose the report mode
3059 -------------------------------------------------------------------------------
3061 # [\#45 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/45) `closed`: Request for command line options to display only OK/FAIL items
3063 #### <img src="https://avatars.githubusercontent.com/u/14027079?u=379b0b0fcecea8820dea0f220dc09e3342cc4519&v=4" width="50">[fonic](https://github.com/fonic) opened issue at [2020-07-13 10:07](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/45):
3065 I'd like to request command line options to reduce output to OK/FAIL items only, e.g.
3067 -o, --ok only list items checked as OK
3068 -f, --fail only list items checked as FAIL
3071 This would make it much easier to work through the list of settings when hardening kernel configurations, especially if one only applies few at a time to test their impact.
3073 This tool is great, many thanks!
3075 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-07-15 11:55](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/45#issuecomment-658724615):
3079 Please see `show_ok` and `show_fail` modes:
3081 usage: kconfig-hardened-check [-h] [--version] [-p {X86_64,X86_32,ARM64,ARM}]
3083 [-m {verbose,json,show_ok,show_fail}]
3085 Checks the hardening options in the Linux kernel config
3088 -h, --help show this help message and exit
3089 --version show program's version number and exit
3090 -p {X86_64,X86_32,ARM64,ARM}, --print {X86_64,X86_32,ARM64,ARM}
3091 print hardening preferences for selected architecture
3092 -c CONFIG, --config CONFIG
3093 check the kernel config file against these preferences
3094 -m {verbose,json,show_ok,show_fail}, --mode {verbose,json,show_ok,show_fail}
3095 choose the report mode
3100 $ ./bin/kconfig-hardened-check -c kconfig_hardened_check/config_files/distros/ubuntu-focal.config -m show_ok
3101 [+] Special report mode: show_ok
3102 [+] Config file to check: kconfig_hardened_check/config_files/distros/ubuntu-focal.config
3103 [+] Detected architecture: X86_64
3104 [+] Detected kernel version: 5.4
3105 =========================================================================================================================
3106 option name | desired val | decision | reason | check result
3107 =========================================================================================================================
3108 CONFIG_BUG | y |defconfig | self_protection | OK
3109 CONFIG_SLUB_DEBUG | y |defconfig | self_protection | OK
3110 CONFIG_STACKPROTECTOR_STRONG | y |defconfig | self_protection | OK
3111 CONFIG_STRICT_KERNEL_RWX | y |defconfig | self_protection | OK
3112 CONFIG_STRICT_MODULE_RWX | y |defconfig | self_protection | OK
3113 CONFIG_IOMMU_SUPPORT | y |defconfig | self_protection | OK
3114 CONFIG_MICROCODE | y |defconfig | self_protection | OK
3115 CONFIG_RETPOLINE | y |defconfig | self_protection | OK
3116 CONFIG_X86_SMAP | y |defconfig | self_protection | OK
3117 CONFIG_SYN_COOKIES | y |defconfig | self_protection | OK
3118 CONFIG_X86_UMIP | y |defconfig | self_protection | OK: CONFIG_X86_INTEL_UMIP "y"
3119 CONFIG_PAGE_TABLE_ISOLATION | y |defconfig | self_protection | OK
3120 CONFIG_RANDOMIZE_MEMORY | y |defconfig | self_protection | OK
3121 CONFIG_INTEL_IOMMU | y |defconfig | self_protection | OK
3122 CONFIG_AMD_IOMMU | y |defconfig | self_protection | OK
3123 CONFIG_VMAP_STACK | y |defconfig | self_protection | OK
3124 CONFIG_RANDOMIZE_BASE | y |defconfig | self_protection | OK
3125 CONFIG_THREAD_INFO_IN_TASK | y |defconfig | self_protection | OK
3126 CONFIG_DEBUG_WX | y | kspp | self_protection | OK
3127 CONFIG_SCHED_STACK_END_CHECK | y | kspp | self_protection | OK
3128 CONFIG_SLAB_FREELIST_HARDENED | y | kspp | self_protection | OK
3129 CONFIG_SLAB_FREELIST_RANDOM | y | kspp | self_protection | OK
3130 CONFIG_SHUFFLE_PAGE_ALLOCATOR | y | kspp | self_protection | OK
3131 CONFIG_FORTIFY_SOURCE | y | kspp | self_protection | OK
3132 CONFIG_INIT_ON_ALLOC_DEFAULT_ON | y | kspp | self_protection | OK
3133 CONFIG_HARDENED_USERCOPY | y | kspp | self_protection | OK
3134 CONFIG_MODULE_SIG | y | kspp | self_protection | OK
3135 CONFIG_MODULE_SIG_ALL | y | kspp | self_protection | OK
3136 CONFIG_MODULE_SIG_SHA512 | y | kspp | self_protection | OK
3137 CONFIG_INIT_ON_FREE_DEFAULT_ON | y | kspp | self_protection | OK: CONFIG_PAGE_POISONING "y"
3138 CONFIG_DEFAULT_MMAP_MIN_ADDR | 65536 | kspp | self_protection | OK
3139 CONFIG_INTEL_IOMMU_SVM | y | clipos | self_protection | OK
3140 CONFIG_RESET_ATTACK_MITIGATION | y | my | self_protection | OK
3141 CONFIG_SECURITY | y |defconfig | security_policy | OK
3142 CONFIG_SECURITY_YAMA | y | kspp | security_policy | OK
3143 CONFIG_SECURITY_WRITABLE_HOOKS | is not set | my | security_policy | OK: not found
3144 CONFIG_SECURITY_LOCKDOWN_LSM | y | clipos | security_policy | OK
3145 CONFIG_SECURITY_LOCKDOWN_LSM_EARLY | y | clipos | security_policy | OK
3146 CONFIG_SECURITY_SAFESETID | y | my | security_policy | OK
3147 CONFIG_SECCOMP | y |defconfig | cut_attack_surface | OK
3148 CONFIG_SECCOMP_FILTER | y |defconfig | cut_attack_surface | OK
3149 CONFIG_STRICT_DEVMEM | y |defconfig | cut_attack_surface | OK
3150 CONFIG_ACPI_CUSTOM_METHOD | is not set | kspp | cut_attack_surface | OK
3151 CONFIG_COMPAT_BRK | is not set | kspp | cut_attack_surface | OK
3152 CONFIG_DEVKMEM | is not set | kspp | cut_attack_surface | OK
3153 CONFIG_COMPAT_VDSO | is not set | kspp | cut_attack_surface | OK
3154 CONFIG_OABI_COMPAT | is not set | kspp | cut_attack_surface | OK: not found
3155 CONFIG_X86_PTDUMP | is not set |grsecurity| cut_attack_surface | OK
3156 CONFIG_ZSMALLOC_STAT | is not set |grsecurity| cut_attack_surface | OK
3157 CONFIG_PAGE_OWNER | is not set |grsecurity| cut_attack_surface | OK
3158 CONFIG_DEBUG_KMEMLEAK | is not set |grsecurity| cut_attack_surface | OK
3159 CONFIG_BINFMT_AOUT | is not set |grsecurity| cut_attack_surface | OK: not found
3160 CONFIG_DRM_LEGACY | is not set |maintainer| cut_attack_surface | OK
3161 CONFIG_X86_IOPL_IOPERM | is not set | lockdown | cut_attack_surface | OK: not found
3162 CONFIG_MMIOTRACE_TEST | is not set | lockdown | cut_attack_surface | OK
3163 CONFIG_X86_INTEL_TSX_MODE_OFF | y | clipos | cut_attack_surface | OK
3164 CONFIG_INTEGRITY | y |defconfig |userspace_hardening | OK
3166 [+] Config check is finished: 'OK' - 57 / 'FAIL' - 79 (suppressed in output)
3169 #### <img src="https://avatars.githubusercontent.com/u/14027079?u=379b0b0fcecea8820dea0f220dc09e3342cc4519&v=4" width="50">[fonic](https://github.com/fonic) commented at [2020-07-15 15:14](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/45#issuecomment-658827875):
3171 Awesome, just tested it. That makes an already great tool even better. Many thanks!
3174 -------------------------------------------------------------------------------
3176 # [\#44 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/44) `closed`: KSPP future in defconf linux distribution.
3178 #### <img src="https://avatars.githubusercontent.com/u/3471772?v=4" width="50">[bryn1u](https://github.com/bryn1u) opened issue at [2020-05-10 18:01](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/44):
3182 Im just curious what is the status of implementing KSPP to default kernel of linux GNU distribution ? Why linux distributions dont impelment for example most of kspp solutions for example steackleak or gcc hardeneing ? I use most of kspp feature based on your script Alexander and kernel works like a charm. Someone can explain to me ?
3184 #### <img src="https://avatars.githubusercontent.com/u/32568352?v=4" width="50">[Bernhard40](https://github.com/Bernhard40) commented at [2020-05-11 11:40](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/44#issuecomment-626650276):
3186 Some settings may affect performance, debugability, support for older userspace software, etc.
3188 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-05-18 09:58](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/44#issuecomment-630078520):
3190 > Some settings may affect performance, debugability, support for older userspace software, etc.
3193 Moreover, kernel self-protection features often give different performance penalty for different kinds of workload. It's difficult to find one kernel configuration that makes everyone happy.
3195 I think Linux distributions could provide several kernel flavours for different purposes (e.g. generic, hardened, low-latency), to improve the situation.
3197 I'm sure @kees has more insights about this.
3199 #### <img src="https://avatars.githubusercontent.com/u/1110841?u=e5e99e1ac8260e791433baa2423f7d173eea4c1c&v=4" width="50">[kees](https://github.com/kees) commented at [2020-05-18 15:16](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/44#issuecomment-630251690):
3201 Yup! There is an open bug with KSPP to provide a defconfig fragment selection interface to the upstream kernel. You can see more details here:
3202 https://github.com/KSPP/linux/issues/14
3204 #### <img src="https://avatars.githubusercontent.com/u/3471772?v=4" width="50">[bryn1u](https://github.com/bryn1u) commented at [2020-05-20 21:06](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/44#issuecomment-631726899):
3206 Okey. Thanks guys for your work and explanation.
3209 -------------------------------------------------------------------------------
3211 # [\#43 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/43) `merged`: Upgrading to Ubuntu 20.04 kernel config
3213 #### <img src="https://avatars.githubusercontent.com/u/4661917?u=bb7aeb3c77839cea055b49b80168666b36315f3d&v=4" width="50">[theLOICofFRANCE](https://github.com/theLOICofFRANCE) opened issue at [2020-05-05 09:12](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/43):
3217 Here is the Ubuntu kernel configuration update.
3221 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-05-06 21:41](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/43#issuecomment-624906056):
3226 -------------------------------------------------------------------------------
3228 # [\#42 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/42) `closed`: add tests
3230 #### <img src="https://avatars.githubusercontent.com/u/3125993?v=4" width="50">[shamilbi](https://github.com/shamilbi) opened issue at [2020-04-14 12:10](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/42):
3234 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-04-24 23:29](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/42#issuecomment-619279461):
3237 Could you please describe the purpose of this PR?
3238 By the way, tests for `kconfig-hardened-check` already exist as GitHub Actions (kind of continuous integration).
3240 #### <img src="https://avatars.githubusercontent.com/u/3125993?v=4" width="50">[shamilbi](https://github.com/shamilbi) commented at [2020-04-25 07:33](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/42#issuecomment-619335943):
3243 > Could you please describe the purpose of this PR?
3244 > By the way, tests for `kconfig-hardened-check` already exist as GitHub Actions (kind of continuous integration).
3246 If files `tests/results/**/*.check` are proper results of kconfig-hardened-check applied to `kconfig_hardened_check/config_files/**/*.config` then this PR just compares output of a current kconfig_hardened_check (a current commit) with those proper results.
3247 This gives you an exact diff in output from a last commit
3249 #### <img src="https://avatars.githubusercontent.com/u/3125993?v=4" width="50">[shamilbi](https://github.com/shamilbi) commented at [2020-04-25 07:43](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/42#issuecomment-619337059):
3251 [My workflows file](https://github.com/shamilbi/kconfig-hardened-check/blob/master/.github/workflows/test-master.yml)
3253 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-05-06 21:19](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/42#issuecomment-624897025):
3255 Yes, sometimes I use ouput diff during the `kconfig-hardened-check` development.
3256 However I don't think we need to commit the output results to the repository.
3260 -------------------------------------------------------------------------------
3262 # [\#41 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/41) `merged`: Add CONFIG_INPUT_EVBUG
3264 #### <img src="https://avatars.githubusercontent.com/u/4661917?u=bb7aeb3c77839cea055b49b80168666b36315f3d&v=4" width="50">[theLOICofFRANCE](https://github.com/theLOICofFRANCE) opened issue at [2020-04-09 11:38](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/41):
3268 The "evbug" module records key events and mouse movements in the system log.
3269 Useful for debugging, this is a security threat, its use can be hijacked as a keylogger.
3271 An attacker will be able to retrieve your passwords using this module.
3277 #### <img src="https://avatars.githubusercontent.com/u/8655789?u=4694f03b321aa2287d9fe05155adcddb23272e81&v=4" width="50">[codecov-io](https://github.com/codecov-io) commented at [2020-04-09 11:39](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/41#issuecomment-611482374):
3279 # [Codecov](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/41?src=pr&el=h1) Report
3280 > Merging [#41](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/41?src=pr&el=desc) into [master](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/commit/100a39e2b01dadd2d27ed805cbe2b4ead7fc8b05&el=desc) will **increase** coverage by `0.01%`.
3281 > The diff coverage is `100.00%`.
3283 [![Impacted file tree graph](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/41/graphs/tree.svg?width=650&height=150&src=pr&token=GOOVXMV5Kb)](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/41?src=pr&el=tree)
3287 ## master #41 +/- ##
3288 ==========================================
3289 + Coverage 93.19% 93.20% +0.01%
3290 ==========================================
3294 ==========================================
3300 | Flag | Coverage Δ | |
3302 | #functional_test | `93.20% <100.00%> (+0.01%)` | :arrow_up: |
3304 | [Impacted Files](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/41?src=pr&el=tree) | Coverage Δ | |
3306 | [kconfig\_hardened\_check/\_\_init\_\_.py](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/41/diff?src=pr&el=tree#diff-a2NvbmZpZ19oYXJkZW5lZF9jaGVjay9fX2luaXRfXy5weQ==) | `93.27% <100.00%> (+0.01%)` | :arrow_up: |
3310 [Continue to review full report at Codecov](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/41?src=pr&el=continue).
3311 > **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
3312 > `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
3313 > Powered by [Codecov](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/41?src=pr&el=footer). Last update [100a39e...a7e1677](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/41?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).
3316 -------------------------------------------------------------------------------
3318 # [\#40 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/40) `merged`: pylint some code
3320 #### <img src="https://avatars.githubusercontent.com/u/3125993?v=4" width="50">[shamilbi](https://github.com/shamilbi) opened issue at [2020-04-08 07:01](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/40):
3324 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-04-09 15:35](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/40#issuecomment-611595095):
3330 -------------------------------------------------------------------------------
3332 # [\#39 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/39) `closed`: VerCheck: work with 3-digit kernel versions
3334 #### <img src="https://avatars.githubusercontent.com/u/3125993?v=4" width="50">[shamilbi](https://github.com/shamilbi) opened issue at [2020-04-03 15:54](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/39):
3338 #### <img src="https://avatars.githubusercontent.com/u/8655789?u=4694f03b321aa2287d9fe05155adcddb23272e81&v=4" width="50">[codecov-io](https://github.com/codecov-io) commented at [2020-04-03 16:25](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/39#issuecomment-608535796):
3340 # [Codecov](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/39?src=pr&el=h1) Report
3341 > Merging [#39](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/39?src=pr&el=desc) into [master](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/commit/bdac2c22b96b3a682801674efed92fddc8a347b0&el=desc) will **increase** coverage by `0.60%`.
3342 > The diff coverage is `76.92%`.
3344 [![Impacted file tree graph](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/39/graphs/tree.svg?width=650&height=150&src=pr&token=GOOVXMV5Kb)](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/39?src=pr&el=tree)
3348 ## master #39 +/- ##
3349 ==========================================
3350 + Coverage 93.10% 93.70% +0.60%
3351 ==========================================
3355 ==========================================
3361 | Flag | Coverage Δ | |
3363 | #functional_test | `93.70% <76.92%> (+0.60%)` | :arrow_up: |
3365 | [Impacted Files](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/39?src=pr&el=tree) | Coverage Δ | |
3367 | [kconfig\_hardened\_check/\_\_init\_\_.py](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/39/diff?src=pr&el=tree#diff-a2NvbmZpZ19oYXJkZW5lZF9jaGVjay9fX2luaXRfXy5weQ==) | `93.80% <76.92%> (+0.61%)` | :arrow_up: |
3371 [Continue to review full report at Codecov](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/39?src=pr&el=continue).
3372 > **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
3373 > `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
3374 > Powered by [Codecov](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/39?src=pr&el=footer). Last update [bdac2c2...97b9f90](https://codecov.io/gh/a13xp0p0v/kconfig-hardened-check/pull/39?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).
3376 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-04-06 13:32](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/39#issuecomment-609796546):
3379 Thanks for your work!
3381 Yes, the kernel version consists of 3 numbers (not digits).
3382 Example from the main kernel Makefile:
3389 New features come during the merge window of a new release of the mainline kernel.
3390 It is defined by 2 numbers - `version` and `patchlevel`.
3391 More info: https://www.kernel.org/doc/html/latest/process/2.Process.html
3392 That's why currently only two numbers are checked and IMO that's enough.
3397 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-04-07 15:47](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/39#issuecomment-610465555):
3399 @shamilbi, could you please move pylint fixes to a separate pull request?
3400 I would like to merge it. Thanks!
3402 #### <img src="https://avatars.githubusercontent.com/u/3125993?v=4" width="50">[shamilbi](https://github.com/shamilbi) commented at [2020-04-08 08:35](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/39#issuecomment-610828778):
3404 > @shamilbi, could you please move pylint fixes to a separate pull request?
3405 > I would like to merge it. Thanks!
3409 -------------------------------------------------------------------------------
3411 # [\#38 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/38) `closed`: graphics related options
3412 **Labels**: `kernel_maintainer_feedback`
3415 #### <img src="https://avatars.githubusercontent.com/u/5088003?v=4" width="50">[danvet](https://github.com/danvet) opened issue at [2020-04-03 08:52](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/38):
3417 Discussion with dmitry yukov on twitter:
3419 CONFIG_DRM_LEGACY: Really old drivers from the 90s, with unfixable by design security holes. Unfortunately userspace for one modern driver (drm/nouveau) has used until just a few years ago by accident (we didn't delete all the old legacy driver setup code), so can't remove it all completely yet from kernel sources.
3421 CONFIG_FB: Old display subsystem from the 90s, essentially unmaintained for over 10 years, would need serious effort to get up to speed with modern security best practices. This even includes the minimal fbdev emulation support built on top of drm gpu drivers, since the issues are in core fbdev code.
3423 CONFIG_VT: Maybe the most disputed of all, but a lot of the console drivers this exposes to userspace are also from the 90s, and without CONFIG_FB this isn't really useful even for a desktop. A hardened distro definitely wants to make sure this is not set at all.
3427 #### <img src="https://avatars.githubusercontent.com/u/32568352?v=4" width="50">[Bernhard40](https://github.com/Bernhard40) commented at [2020-04-03 12:03](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/38#issuecomment-608395946):
3429 > You need at least one virtual terminal device in order to make use of your keyboard and monitor. Therefore, only people configuring an embedded system would want to say N here in order to save some memory; the only way to log into such a system is then via a serial or network connection.
3431 Is this comment from [CONFIG_VT](https://cateee.net/lkddb/web-lkddb/VT.html) wrong then?
3433 #### <img src="https://avatars.githubusercontent.com/u/5088003?v=4" width="50">[danvet](https://github.com/danvet) commented at [2020-04-03 12:32](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/38#issuecomment-608407778):
3435 This comment hasn't been updated since decades (I checked historical trees ...). Nowadays Xorg and wayland compositors should be able to run without a VT. And kmscon (although abandoned due to lack of interest) can provide you a userspace implementation of VTs if you don't want to run X11 or wayland, using pseudo TTYs (like a terminal emulator).
3437 A paranoid desktop distro imo should really not have VT enabled, and ofc whatever compositor they opt for (wayland, X11, or something like kmscon) needs to be walled in with a container.
3439 But the comment is also correct in that without a userspace compositor you indeed will only be able to log in through the network or serial lines.
3441 #### <img src="https://avatars.githubusercontent.com/u/5088003?v=4" width="50">[danvet](https://github.com/danvet) commented at [2020-04-03 12:42](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/38#issuecomment-608412082):
3443 Maybe an addition: If you want multi-user switching without CONFIG_VT then you need something like systemd's logind, so that the (forced) handover of input and output devices works correctly. But the VT subsystem's only role there is as an rpc between compositors, it has 0 functionality to actually force compositors to hand over devices to the next compositor (which is what logind does, using some of the new ioctl calls added specifically for this for both input and drm subsystems).
3445 So if you want actual secure multi-user switching then you should be running with all that new stuff already anyway (and then CONFIG_VT really shouldn't be enabled, to prevent creating a mess).
3447 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-04-03 17:03](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/38#issuecomment-608553993):
3450 Done: https://github.com/a13xp0p0v/kconfig-hardened-check/commit/75bed5d6178375a64f93ced4795ee0cf47442df1
3452 #### <img src="https://avatars.githubusercontent.com/u/5088003?v=4" width="50">[danvet](https://github.com/danvet) commented at [2020-04-03 17:24](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/38#issuecomment-608563651):
3454 Thanks, looks neat. Hopefully this pushes a few more people to make this happen finally.
3456 #### <img src="https://avatars.githubusercontent.com/u/1095328?u=91175c42d0de0ad8ba9f70cc6b9a41bbfbe70de8&v=4" width="50">[dvyukov](https://github.com/dvyukov) commented at [2020-04-03 17:28](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/38#issuecomment-608565745):
3458 @a13xp0p0v Are these enabled in any distros for which you have canned configs?
3460 @danvet I just noticed on the current upstream HEAD:
3464 $ egrep "CONFIG_VT=|CONFIG_FB=" .config
3468 So that may be the first step :)
3470 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-04-03 20:18](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/38#issuecomment-608639217):
3472 @dvyukov, yes, these are enabled in many distributions:
3475 CONFIG_DRM_LEGACY | is not set |maintainer| cut_attack_surface | OK
3476 CONFIG_FB | is not set |maintainer| cut_attack_surface | FAIL: "y"
3477 CONFIG_VT | is not set |maintainer| cut_attack_surface | OK
3480 CONFIG_DRM_LEGACY | is not set |maintainer| cut_attack_surface | OK
3481 CONFIG_FB | is not set |maintainer| cut_attack_surface | FAIL: "m"
3482 CONFIG_VT | is not set |maintainer| cut_attack_surface | FAIL: "y"
3484 ubuntu-bionic-generic:
3485 CONFIG_DRM_LEGACY | is not set |maintainer| cut_attack_surface | OK
3486 CONFIG_FB | is not set |maintainer| cut_attack_surface | FAIL: "y"
3487 CONFIG_VT | is not set |maintainer| cut_attack_surface | FAIL: "y"
3490 CONFIG_DRM_LEGACY | is not set |maintainer| cut_attack_surface | FAIL: "y"
3491 CONFIG_FB | is not set |maintainer| cut_attack_surface | FAIL: "y"
3492 CONFIG_VT | is not set |maintainer| cut_attack_surface | FAIL: "y"
3495 CONFIG_DRM_LEGACY | is not set |maintainer| cut_attack_surface | OK
3496 CONFIG_FB | is not set |maintainer| cut_attack_surface | FAIL: "y"
3497 CONFIG_VT | is not set |maintainer| cut_attack_surface | FAIL: "y"
3500 CONFIG_DRM_LEGACY | is not set |maintainer| cut_attack_surface | FAIL: "y"
3501 CONFIG_FB | is not set |maintainer| cut_attack_surface | FAIL: "y"
3502 CONFIG_VT | is not set |maintainer| cut_attack_surface | FAIL: "y"
3505 CONFIG_DRM_LEGACY | is not set |maintainer| cut_attack_surface | OK
3506 CONFIG_FB | is not set |maintainer| cut_attack_surface | FAIL: "y"
3507 CONFIG_VT | is not set |maintainer| cut_attack_surface | FAIL: "y"
3510 CONFIG_DRM_LEGACY | is not set |maintainer| cut_attack_surface | OK
3511 CONFIG_FB | is not set |maintainer| cut_attack_surface | FAIL: "y"
3512 CONFIG_VT | is not set |maintainer| cut_attack_surface | FAIL: "y"
3515 CONFIG_DRM_LEGACY | is not set |maintainer| cut_attack_surface | OK
3516 CONFIG_FB | is not set |maintainer| cut_attack_surface | FAIL: "y"
3517 CONFIG_VT | is not set |maintainer| cut_attack_surface | FAIL: "y"
3520 CONFIG_DRM_LEGACY | is not set |maintainer| cut_attack_surface | OK
3521 CONFIG_FB | is not set |maintainer| cut_attack_surface | FAIL: "y"
3522 CONFIG_VT | is not set |maintainer| cut_attack_surface | FAIL: "y"
3524 nixpkgs-linux_hardened:
3525 CONFIG_DRM_LEGACY | is not set |maintainer| cut_attack_surface | FAIL: "y"
3526 CONFIG_FB | is not set |maintainer| cut_attack_surface | FAIL: "y"
3527 CONFIG_VT | is not set |maintainer| cut_attack_surface | FAIL: "y"
3530 CONFIG_DRM_LEGACY | is not set |maintainer| cut_attack_surface | FAIL: "y"
3531 CONFIG_FB | is not set |maintainer| cut_attack_surface | FAIL: "y"
3532 CONFIG_VT | is not set |maintainer| cut_attack_surface | FAIL: "y"
3535 CONFIG_DRM_LEGACY | is not set |maintainer| cut_attack_surface | FAIL: "y"
3536 CONFIG_FB | is not set |maintainer| cut_attack_surface | FAIL: "y"
3537 CONFIG_VT | is not set |maintainer| cut_attack_surface | FAIL: "y"
3540 #### <img src="https://avatars.githubusercontent.com/u/1080275?v=4" width="50">[arndb](https://github.com/arndb) commented at [2020-04-04 09:48](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/38#issuecomment-609004574):
3542 The hyperv framebuffer driver came up on the mailing list recently when I noticed a patch to add support for arm64 and suggested having it converted to DRM. Other hardware-independent drivers that don't seem to have a DRM counterpart at the moment are the UEFI framebuffer that is often used in the absence of a hardware specific driver and the goldfish driver for Android device emulation.
3544 It might help to also look at each distro to see which device drivers are enabled for DRM_LEGACY and FBDEV, as there may be others that are important and need to be converted.
3546 #### <img src="https://avatars.githubusercontent.com/u/5088003?v=4" width="50">[danvet](https://github.com/danvet) commented at [2020-04-04 11:12](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/38#issuecomment-609012871):
3548 @dvyukov the trouble is you'll break pretty much any general purpose distro with this stuff disabled. Iirc most compositors keel over if they can't open a vt (but they should all have options to survive without one). Plus since neither kmscon nor system-consoled ever happened for real no kernel console without these, so all the whitebeards will be screaming with their pitchforks. Really not something you can do in a defconfig unfortunately.
3550 @arndb yeah there was simpledrm also back around kmscon to make this happen, but it didn't. For everything else we seem to have a small community of people now pushing out drm drivers for all these things, but more is always welcome. A drm driver in less that 1kloc is fairly standard nowadays, trouble only happens if you have a strange new constraint.
3552 Wrt DRM_LEGACY and FBDEV drivers in general, I get the impression that distros which enable them just enable everything, because. E.g. debian still enables DRM_LEGACY, but they long ago stopped shipping the corresponding userspace drivers. So just plain nonsense in their defconfig (and a CVE when you load drm/nouveau.ko because backwards compat)
3555 -------------------------------------------------------------------------------
3557 # [\#37 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/37) `closed`: conflict with the latest grsecurity
3559 #### <img src="https://avatars.githubusercontent.com/u/50359848?v=4" width="50">[pythonmandev](https://github.com/pythonmandev) opened issue at [2020-03-30 14:20](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/37):
3561 CONFIG_REFCOUNT_FULL conflict with PAX_REFCOUNT
3562 PAGE_TABLE_ISOLATION conflict with PAX_MEMORY_UDEREF
3563 VMAP_STACK conflict with GRKERNSEC_KSTACKOVERFLOW
3564 SECURITY_YAMA conflict with GRKERNSEC
3565 RANDOMIZE_BASE also can not enable.
3567 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-03-31 11:29](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/37#issuecomment-606569944):
3569 Hello @pythonmandev!
3570 What do you mean saying "latest grsecurity"?
3572 #### <img src="https://avatars.githubusercontent.com/u/203012?u=939d6d3b5ff0b9e46e911d8792a40c20408574e2&v=4" width="50">[anthraxx](https://github.com/anthraxx) commented at [2020-03-31 11:38](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/37#issuecomment-606574067):
3574 its not an openly available patchset anymore hence i suggest to not take it into account. I would think differently if it would be open source, but sadly its not.
3577 -------------------------------------------------------------------------------
3579 # [\#36 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/36) `closed`: null
3581 #### <img src="(unknown)" width="50">[(unknown)]((unknown)) opened issue at [2020-03-30 14:13](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/36):
3588 -------------------------------------------------------------------------------
3590 # [\#35 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/35) `closed`: can't add version check for constraints in a logical product
3592 #### <img src="https://avatars.githubusercontent.com/u/785111?u=8feaa758657096dbcadcd190fbea88e371aab7be&v=4" width="50">[tych0](https://github.com/tych0) opened issue at [2020-03-26 17:44](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/35):
3597 diff --git a/kconfig_hardened_check/__init__.py b/kconfig_hardened_check/__init__.py
3598 index 3fcb5e0..1c31c40 100755
3599 --- a/kconfig_hardened_check/__init__.py
3600 +++ b/kconfig_hardened_check/__init__.py
3601 @@ -251,8 +251,8 @@ def construct_checklist(checklist, arch):
3602 checklist.append(OptCheck('MICROCODE', 'y', 'defconfig', 'self_protection')) # is needed for mitigating CPU bugs
3603 checklist.append(OptCheck('RETPOLINE', 'y', 'defconfig', 'self_protection'))
3604 checklist.append(OptCheck('X86_SMAP', 'y', 'defconfig', 'self_protection'))
3605 - checklist.append(OR(OptCheck('X86_UMIP', 'y', 'defconfig', 'self_protection'), \
3606 - OptCheck('X86_INTEL_UMIP', 'y', 'defconfig', 'self_protection')))
3607 + checklist.append(OR(AND(OptCheck('X86_UMIP', 'y', 'defconfig', 'self_protection'), VerCheck((5, 5))), \
3608 + AND(OptCheck('X86_INTEL_UMIP', 'y', 'defconfig', 'self_protection'), VerCheck((4, 14)))))
3609 checklist.append(OptCheck('SYN_COOKIES', 'y', 'defconfig', 'self_protection')) # another reason?
3610 if arch == 'X86_64':
3611 checklist.append(OptCheck('PAGE_TABLE_ISOLATION', 'y', 'defconfig', 'self_protection'))
3617 Traceback (most recent call last):
3618 File "/home/tycho/.local/bin/kconfig-hardened-check", line 10, in <module>
3620 File "/home/tycho/.local/lib/python3.7/site-packages/kconfig_hardened_check/__init__.py", line 611, in main
3621 check_config_file(config_checklist, args.config, arch)
3622 File "/home/tycho/.local/lib/python3.7/site-packages/kconfig_hardened_check/__init__.py", line 554, in check_config_file
3623 perform_checks(checklist, parsed_options)
3624 File "/home/tycho/.local/lib/python3.7/site-packages/kconfig_hardened_check/__init__.py", line 519, in perform_checks
3625 o.state = parsed_options.get(o.name, None)
3626 AttributeError: can't set attribute
3629 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-03-28 20:54](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/35#issuecomment-605518372):
3632 I'm glad that you had a look at this project!
3633 How are you doing? :)
3635 Yes, currently the combination of `ComplexOptCheck` objects is not supported (there have been no cases that needed it).
3637 The original logic behind `X86_UMIP` check:
3638 - if `X86_UMIP` or `X86_INTEL_UMIP` is set to `y`, then `OK`;
3641 What is the purpose of combining `UMIP` check with version check?
3643 I designed `VerCheck` for cases like that:
3644 - if `REFCOUNT_FULL` is set to `y`, then `OK`;
3645 - if kernel version >= `5.5`, then `OK` (since `REFCOUNT_FULL` is enabled by default and dropped since v5.5);
3648 N.B. There is an implicit drawback with checking kernel versions.
3649 Some kernel features are backported to previous stable kernels.
3650 That's why checking the version can give false positive or false negative result.
3651 Detailed example: https://github.com/a13xp0p0v/kconfig-hardened-check/pull/32
3655 #### <img src="https://avatars.githubusercontent.com/u/785111?u=8feaa758657096dbcadcd190fbea88e371aab7be&v=4" width="50">[tych0](https://github.com/tych0) commented at [2020-03-29 14:51](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/35#issuecomment-605648635):
3657 On Sat, Mar 28, 2020 at 01:55:08PM -0700, Alexander Popov wrote:
3659 > I'm glad that you had a look at this project!
3660 > How are you doing? :)
3662 Good, just hacking away :)
3664 > Yes, currently the combination of `ComplexOptCheck` objects is not supported (there have been no cases that needed it).
3666 > The original logic behind `X86_UMIP` check:
3667 > - if `X86_UMIP` or `X86_INTEL_UMIP` is set to `y`, then `OK`;
3668 > - otherwise `FAIL`.
3670 > What is the purpose of combining `UMIP` check with version check?
3672 It's only present in 4.15 or greater; I'm running a 4.14 kernel and
3673 kconfig-hardened-check is complaining at me :)
3675 > I designed `VerCheck` for cases like that:
3676 > - if `REFCOUNT_FULL` is set to `y`, then `OK`;
3677 > - if kernel version >= `5.5`, then `OK` (since `REFCOUNT_FULL` is enabled by default and dropped since v5.5);
3678 > - otherwise `FAIL`.
3680 > N.B. There is an implicit drawback with checking kernel versions.
3681 > Some kernel features are backported to previous stable kernels.
3682 > That's why checking the version can give false positive or false negative result.
3683 > Detailed example: https://github.com/a13xp0p0v/kconfig-hardened-check/pull/32
3685 "Not present" is also risky though, if people don't have some of the
3686 dependencies of a feature enabled. A version whitelist seems the best.
3688 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-03-30 21:12](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/35#issuecomment-606252748):
3690 >> What is the purpose of combining `UMIP` check with version check?
3692 > It's only present in 4.15 or greater; I'm running a 4.14 kernel and kconfig-hardened-check is complaining at me :)
3694 Yes, that's good. The tool inspires you to switch onto a newer kernel :)
3696 > "Not present" is also risky though, if people don't have some of the
3697 dependencies of a feature enabled.
3699 You know, I haven't seen any example of such unmet dependencies. I suppose that kernel feature dependencies are resolved by Kconfig.
3701 > A version whitelist seems the best.
3703 I would like to avoid version checking as much as possible.
3704 Relying on kernel version brings so many troubles!
3706 - sometimes new features are backported to previous stable kernels,
3707 - sometimes Linux distributions cherry-pick features into their kernels,
3708 - some Linux distributions have custom kernel versioning scheme -- look at Ubuntu or Red Hat.
3710 Finally, the most important aspect.
3711 I like that kernels of different versions are checked against the same list of recommendations.
3712 Hence they can be compared using `OK/FAIL` numbers that are printed by the tool in the end:
3714 [+] config check is finished: 'OK' - 55 / 'FAIL' - 77
3717 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-04-10 16:49](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/35#issuecomment-612117051):
3719 @tych0 your issue reminded me the idea to create some formatted annotations, that can be used for muting checks for a particular kernel. That was discussed in #9.
3722 #### <img src="https://avatars.githubusercontent.com/u/785111?u=8feaa758657096dbcadcd190fbea88e371aab7be&v=4" width="50">[tych0](https://github.com/tych0) commented at [2020-04-10 16:55](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/35#issuecomment-612119721):
3724 Sorry, I read this and forgot to respond :)
3726 > Yes, that's good. The tool inspires you to switch onto a newer kernel :)
3728 Yes, but switching is not so easy sometimes, because of institutional challenges. If we want to add this to our CI to check our kernel configs or something, it would be nice to exclude stuff that doesn't exist in our kernel. I can do this manually, but it would be nicer to have this knowledge baked into the script.
3730 > You know, I haven't seen any example of such unmet dependencies. I suppose that kernel feature dependencies are resolved by Kconfig.
3732 Consider GCC_PLUGIN_STACKLEAK; we'll report "Not present" if the user hasn't set CONFIG_GCC_PLUGINS=n, but it really should be an error.
3734 #### <img src="https://avatars.githubusercontent.com/u/785111?u=8feaa758657096dbcadcd190fbea88e371aab7be&v=4" width="50">[tych0](https://github.com/tych0) commented at [2020-04-10 16:56](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/35#issuecomment-612119803):
3736 Anwyay, I'll check out the updates, thanks :)
3739 -------------------------------------------------------------------------------
3741 # [\#34 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/34) `merged`: GrapheneOS is the continuation of CopperheadOS
3743 #### <img src="https://avatars.githubusercontent.com/u/50278627?v=4" width="50">[madaidan](https://github.com/madaidan) opened issue at [2020-03-22 19:44](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/34):
3745 "CopperheadOS" is the project's legacy name which is now being used for a scam focused on attacking GrapheneOS, the true continuation.
3747 https://twitter.com/DanielMicay/status/1171170734380654597
3749 https://twitter.com/DanielMicay/status/1160831422908829696
3751 https://old.reddit.com/r/CopperheadOS/comments/8qdnn3/goodbye/
3753 https://github.com/yegortimoshenko/copperhead-takeover
3758 -------------------------------------------------------------------------------
3760 # [\#33 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/33) `closed`: CONFIG_STATIC_USERMODEHELPER
3762 #### <img src="https://avatars.githubusercontent.com/u/543852?v=4" width="50">[anthonyryan1](https://github.com/anthonyryan1) opened issue at [2020-03-20 22:25](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/33):
3764 I read over the CLIP OS notes regarding this option, and they also mention that they are not currently using it in the second paragraph.
3766 It seems to be that this option isn't actually helpful unless you've already got a usermode helper program?
3768 Just questioning the wisdom of this option as I imagine some people will just enable everything they see here, and may wind up with this pointing at a non-existent binary.
3770 #### <img src="https://avatars.githubusercontent.com/u/32568352?v=4" width="50">[Bernhard40](https://github.com/Bernhard40) commented at [2020-03-21 10:52](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/33#issuecomment-602026415):
3772 Yes, this option needs userspace support and yes, blindly enabling everything may cause harm.
3774 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-03-23 15:22](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/33#issuecomment-602670488):
3776 @Bernhard40, absolutely agree.
3777 N.B. There is a comment about `STATIC_USERMODEHELPER` in the source code:
3779 checklist.append(OptCheck('STATIC_USERMODEHELPER', 'y', 'clipos', 'self_protection')) # needs userspace support (systemd)
3783 -------------------------------------------------------------------------------
3785 # [\#32 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/32) `closed`: Fix LDISC_AUTOLOAD check
3787 #### <img src="https://avatars.githubusercontent.com/u/50278627?v=4" width="50">[madaidan](https://github.com/madaidan) opened issue at [2020-03-09 18:01](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/32):
3789 CONFIG_LDISC_AUTOLOAD has existed since v4.14, not v5.1: https://lkml.org/lkml/2019/4/15/890
3791 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-03-14 09:52](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/32#issuecomment-599034709):
3795 Thanks for noticing that!
3797 CONFIG_LDISC_AUTOLOAD was introduced in 5.1:
3798 changelog https://kernelnewbies.org/Linux_5.1
3799 upstream commit https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7c0cca7c847e6e019d67b7d793efbbe3b947d004
3801 I checked, it was later backported to stable kernels 4.14, 4.9 and 4.4.
3802 So we can't have a correct check based on a kernel version.
3803 For example this option exists in kernel 4.4.216, but doesn't exist in 4.5.
3805 I think the correct approach here is to add another type of check that can distinguish "is not set" and "not found".
3809 #### <img src="https://avatars.githubusercontent.com/u/50278627?v=4" width="50">[madaidan](https://github.com/madaidan) commented at [2020-03-14 20:29](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/32#issuecomment-599131303):
3811 How about a whitelist of allowed versions? So it checks for 4.4, 4.9, 4.14 or ≥5.1 but not 4.5.
3813 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-03-31 11:46](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/32#issuecomment-606577240):
3816 I'll try to create a new check that the option __exists__ in the config.
3817 So for `LDISC_AUTOLOAD` we can create a rule `(exists) AND (is not set)`.
3819 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-03-31 14:13](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/32#issuecomment-606654029):
3825 -------------------------------------------------------------------------------
3827 # [\#31 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/31) `merged`: Update config files
3829 #### <img src="https://avatars.githubusercontent.com/u/4661917?u=bb7aeb3c77839cea055b49b80168666b36315f3d&v=4" width="50">[theLOICofFRANCE](https://github.com/theLOICofFRANCE) opened issue at [2020-02-24 20:27](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/31):
3833 Here are the updates of the distributions configuration files. I also had to update some links.
3834 Please note that we now have the majority of configurations with versions >= to linux 5.3 🧙♂️
3840 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-02-27 17:36](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/31#issuecomment-592084682):
3844 N.B. I'm going to work on support of new kernel releases in the near future.
3846 #### <img src="https://avatars.githubusercontent.com/u/4661917?u=bb7aeb3c77839cea055b49b80168666b36315f3d&v=4" width="50">[theLOICofFRANCE](https://github.com/theLOICofFRANCE) commented at [2020-03-04 19:09](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/31#issuecomment-594761475):
3849 > N.B. I'm going to work on support of new kernel releases in the near future.
3851 https://kernsec.org/wiki/index.php?title=Kernel_Self_Protection_Project/Recommended_Settings&diff=4001&oldid=prev
3855 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-03-04 19:55](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/31#issuecomment-594797254):
3857 Yes, thanks, I'm already working on that!
3860 -------------------------------------------------------------------------------
3862 # [\#30 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/30) `closed`: Has CONFIG_REFCOUNT_FULL and VMAP_STACK been removed from Kernel-5.5 ?
3864 #### <img src="https://avatars.githubusercontent.com/u/3471772?v=4" width="50">[bryn1u](https://github.com/bryn1u) opened issue at [2020-02-01 12:24](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/30):
3868 Im trying to configure Kernel-5.5 config and i don't see CONFIG_REFCOUNT_FULL option and the same with VMAP_STACK.
3869 I use Kernel-5.3 for now and there is an option available. Soo should i think that this option is no longer available ?
3873 #### <img src="https://avatars.githubusercontent.com/u/32568352?v=4" width="50">[Bernhard40](https://github.com/Bernhard40) commented at [2020-02-02 13:05](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/30#issuecomment-581133592):
3875 `CONFIG_REFCOUNT_FULL` was removed but `CONFIG_VMAP_STACK` is still available.
3877 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-02-05 16:54](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/30#issuecomment-582504214):
3879 Yes, `REFCOUNT_FULL` was removed...
3880 Have to find a way how to check it without false positive.
3882 #### <img src="https://avatars.githubusercontent.com/u/32568352?v=4" width="50">[Bernhard40](https://github.com/Bernhard40) commented at [2020-02-06 12:30](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/30#issuecomment-582884278):
3884 @a13xp0p0v there is kernel version printed in config header, like:
3888 # Automatically generated file; DO NOT EDIT.
3889 # Linux/x86 5.5.2 Kernel Configuration
3893 maybe you can parse those?
3895 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-02-06 15:25](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/30#issuecomment-582957059):
3897 Yes, it looks like we have to add some limited kernel version checking...
3899 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-02-06 15:29](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/30#issuecomment-582959470):
3901 I may have time to work on that only after OffensiveCon.
3902 Does anybody want to prepare a pull request?
3904 #### <img src="https://avatars.githubusercontent.com/u/3471772?v=4" width="50">[bryn1u](https://github.com/bryn1u) commented at [2020-02-09 13:03](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/30#issuecomment-583842999):
3908 Is a CONFIG_HAVE_ARCH_VMAP_STACK in Kernel-5.5.2 equivalent to
3913 czw., 6 lut 2020 o 16:29 Alexander Popov <notifications@github.com>
3916 > I may have time to work on that only after OffensiveCon.
3917 > Does anybody want to prepare a pull request?
3920 > You are receiving this because you authored the thread.
3921 > Reply to this email directly, view it on GitHub
3922 > <https://github.com/a13xp0p0v/kconfig-hardened-check/issues/30?email_source=notifications&email_token=AA2PTHCFMA26NITNFRMNTU3RBQUHBA5CNFSM4KOS3L22YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEK7UC3Q#issuecomment-582959470>,
3924 > <https://github.com/notifications/unsubscribe-auth/AA2PTHBA772R35Y6MYOQS6DRBQUHBANCNFSM4KOS3L2Q>
3928 #### <img src="https://avatars.githubusercontent.com/u/32568352?v=4" width="50">[Bernhard40](https://github.com/Bernhard40) commented at [2020-02-10 14:32](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/30#issuecomment-584150411):
3930 > Is a CONFIG_HAVE_ARCH_VMAP_STACK in Kernel-5.5.2 equivalent to
3931 > CONFIG_VMAPSTACK ?
3933 No `CONFIG_HAVE_ARCH_VMAP_STACK` tells only if `VMAP_STACK` is available for specific cpu architecture. `CONFIG_VMAP_STACK` tells if `VMAP_STACK` is enabled.
3935 You can check that [VMAP_STACK definitely still exist up to 5.6-rc](https://cateee.net/lkddb/web-lkddb/VMAP_STACK.html).
3937 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-03-05 11:03](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/30#issuecomment-595170199):
3941 Worked with that issue in 0ace19012b626203d14332090cdcd40ed2237100, 918b12cf6f652ad148c885d1a802459e73d20c48 and 17c22224ac5b20c3d0ed49e7859642756e178bd9.
3943 Also have a look at 61b5ca3c8f95212141284be8eb4036c8c1bda9e7: that fixes the false positive report about LDISC_AUTOLOAD for old kernels.
3946 -------------------------------------------------------------------------------
3948 # [\#29 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/29) `closed`: Recommend PANIC_ON_OOPS
3950 #### <img src="https://avatars.githubusercontent.com/u/50278627?v=4" width="50">[madaidan](https://github.com/madaidan) opened issue at [2020-01-13 21:28](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/29):
3952 This causes the kernel to panic on an oops.
3954 Recommended by the KSPP and CLIP OS.
3956 https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings
3958 > \# Reboot devices immediately if kernel experiences an Oops.
3959 > CONFIG_PANIC_ON_OOPS=y
3960 > CONFIG_PANIC_TIMEOUT=-1
3962 https://docs.clip-os.org/clipos/kernel.html
3964 > CONFIG_PANIC_ON_OOPS=y
3965 > CONFIG_PANIC_TIMEOUT=-1
3967 > Prevent potential further exploitation of a bug by immediately panicking the kernel.
3969 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-01-14 09:23](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/29#issuecomment-574081092):
3973 Yes, I saw this KSPP recommendation.
3974 I personally don't support it because it provides easy denial-of-service attack for the whole system (there are a lot of BUG()'s in the kernel).
3976 In my opinion having CONFIG_BUG is enough. If we have kernel oops in the process context, the offending/attacking process is killed.
3978 #### <img src="https://avatars.githubusercontent.com/u/50278627?v=4" width="50">[madaidan](https://github.com/madaidan) commented at [2020-01-14 16:52](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/29#issuecomment-574269683):
3980 I think the kernel exploits this can prevent are more important than DoS.
3982 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-01-16 10:06](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/29#issuecomment-575078024):
3984 > I think the kernel exploits this can prevent are more important than DoS.
3986 Could you please give a real example of the exploit that:
3987 1. is NOT blocked by having `CONFIG_BUG=y`,
3989 2. is blocked by having `CONFIG_PANIC_ON_OOPS=y`.
3993 #### <img src="https://avatars.githubusercontent.com/u/50278627?v=4" width="50">[madaidan](https://github.com/madaidan) commented at [2020-01-16 17:30](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/29#issuecomment-575259978):
3995 This is a good example since it explicitly mentions panic_on_oops: https://googleprojectzero.blogspot.com/2018/09/a-cache-invalidation-bug-in-linux.html
3997 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-01-17 15:10](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/29#issuecomment-575664888):
3999 > This is a good example since it explicitly mentions panic_on_oops: https://googleprojectzero.blogspot.com/2018/09/a-cache-invalidation-bug-in-linux.html
4001 No, sorry, that's a wrong example.
4003 In that exploit Jann Horn used the output of `WARN_ON_ONCE()`.
4004 Having `CONFIG_PANIC_ON_OOPS=y` doesn't prevent his method, since kernel continues to run after `WARN_ON_ONCE()` anyway.
4006 Moreover, let me quote Jann about CONFIG_PANIC_ON_OOPS:
4008 It is off by default in the upstream kernel - and enabling it by default in distributions
4009 would probably be a bad idea -, but it is e.g. enabled by Android.
4012 If some users want to enable it anyway, they can always use `kernel.panic_on_oops` sysctl or the corresponding kernel command line parameter.
4014 #### <img src="https://avatars.githubusercontent.com/u/50278627?v=4" width="50">[madaidan](https://github.com/madaidan) commented at [2020-01-20 17:34](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/29#issuecomment-576372137):
4016 Alright. Fair enough.
4019 -------------------------------------------------------------------------------
4021 # [\#28 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/28) `closed`: Don't give errors about CONFIG_PAGE_POISONING when using an alternative
4023 #### <img src="https://avatars.githubusercontent.com/u/50278627?v=4" width="50">[madaidan](https://github.com/madaidan) opened issue at [2020-01-09 19:36](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/28):
4025 Some people use `CONFIG_INIT_ON_ALLOC_DEFAULT_ON`/`CONFIG_INIT_ON_FREE_DEFAULT_ON` or linux-hardened's `CONFIG_PAGE_SANITIZE` (for LTS kernels) instead of `CONFIG_PAGE_POISONING`. People using these alternatives will get pointless errors that may confuse them.
4027 It would be better if the errors were only shown when not using these.
4029 #### <img src="https://avatars.githubusercontent.com/u/203012?u=939d6d3b5ff0b9e46e911d8792a40c20408574e2&v=4" width="50">[anthraxx](https://github.com/anthraxx) commented at [2020-01-09 19:38](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/28#issuecomment-572720806):
4031 I would love this :P
4033 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-01-10 15:26](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/28#issuecomment-573079631):
4035 As I remember, all these features are different in some sense.
4036 Are you sure that they are alternative to each other?
4038 #### <img src="https://avatars.githubusercontent.com/u/50278627?v=4" width="50">[madaidan](https://github.com/madaidan) commented at [2020-01-10 16:40](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/28#issuecomment-573110783):
4040 As far as I know, they all have the same goal which is to overwrite memory to prevent use-after-free but they have some slight differences as `PAGE_POISONING` forces debugging bloat (as it is actually a debugging feature) which makes `init_on_{,free,alloc}` or `PAGE_SANITIZE` (which was dropped in newer linux-hardened versions for `init_on_{,free,alloc}`) better.
4042 `init_on_{,free,alloc}` actually disables itself when `PAGE_POISONING` is being used to prevent conflict.
4044 https://github.com/torvalds/linux/commit/6471384af2a6530696fc0203bafe4de41a23c9ef
4046 > If either SLUB poisoning or page poisoning is enabled, those options take
4047 precedence over init_on_alloc and init_on_free: initialization is only
4048 applied to unpoisoned allocations.
4050 Also notice that linux-hardened and ClipOS do not enable `PAGE_POISONING` but use the others instead.
4052 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-01-14 10:28](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/28#issuecomment-574108331):
4054 @madaidan, thanks for the details.
4055 So yes, `PAGE_POISONING` is a debugging feature.
4056 It provides less erasing than `INIT_ON_FREE_DEFAULT_ON`.
4058 I joined these checks with OR giving preference to `INIT_ON_FREE_DEFAULT_ON`.
4059 Please see the linked commit.
4061 #### <img src="https://avatars.githubusercontent.com/u/50278627?v=4" width="50">[madaidan](https://github.com/madaidan) commented at [2020-01-14 16:55](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/28#issuecomment-574271418):
4066 -------------------------------------------------------------------------------
4068 # [\#27 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/27) `closed`: add nix build files
4070 #### <img src="https://avatars.githubusercontent.com/u/96200?u=9ed15c85825694d00e996d605d728179b830c4fa&v=4" width="50">[Mic92](https://github.com/Mic92) opened issue at [2020-01-02 09:02](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/27):
4074 #### <img src="https://avatars.githubusercontent.com/u/96200?u=9ed15c85825694d00e996d605d728179b830c4fa&v=4" width="50">[Mic92](https://github.com/Mic92) commented at [2020-01-02 10:44](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/27#issuecomment-570172617):
4076 These are all possible kernel configurations:
4077 There might be duplicate since linux-latest is basically linux-5.4.
4078 I am not sure which configuration you want to include in this repository.
4079 Maybe _hardened, _latest and the default kernel.
4081 [nixpkgs-linux_latest-libre-config.txt](https://github.com/a13xp0p0v/kconfig-hardened-check/files/4015570/nixpkgs-linux_latest-libre-config.txt)
4082 [nixpkgs-linux_latest_hardened-config.txt](https://github.com/a13xp0p0v/kconfig-hardened-check/files/4015571/nixpkgs-linux_latest_hardened-config.txt)
4083 [nixpkgs-linux_testing_hardened-config.txt](https://github.com/a13xp0p0v/kconfig-hardened-check/files/4015572/nixpkgs-linux_testing_hardened-config.txt)
4084 [nixpkgs-linux_hardened-config.txt](https://github.com/a13xp0p0v/kconfig-hardened-check/files/4015573/nixpkgs-linux_hardened-config.txt)
4085 [nixpkgs-linux_latest-config.txt](https://github.com/a13xp0p0v/kconfig-hardened-check/files/4015574/nixpkgs-linux_latest-config.txt)
4086 [nixpkgs-linux_testing_bcachefs-config.txt](https://github.com/a13xp0p0v/kconfig-hardened-check/files/4015575/nixpkgs-linux_testing_bcachefs-config.txt)
4087 [nixpkgs-linux_testing-config.txt](https://github.com/a13xp0p0v/kconfig-hardened-check/files/4015576/nixpkgs-linux_testing-config.txt)
4088 [nixpkgs-linux_5_4-config.txt](https://github.com/a13xp0p0v/kconfig-hardened-check/files/4015577/nixpkgs-linux_5_4-config.txt)
4089 [nixpkgs-linux_5_3-config.txt](https://github.com/a13xp0p0v/kconfig-hardened-check/files/4015578/nixpkgs-linux_5_3-config.txt)
4090 [nixpkgs-linux_4_9-config.txt](https://github.com/a13xp0p0v/kconfig-hardened-check/files/4015579/nixpkgs-linux_4_9-config.txt)
4091 [nixpkgs-linux_4_14-config.txt](https://github.com/a13xp0p0v/kconfig-hardened-check/files/4015580/nixpkgs-linux_4_14-config.txt)
4092 [nixpkgs-linux_4_4-config.txt](https://github.com/a13xp0p0v/kconfig-hardened-check/files/4015581/nixpkgs-linux_4_4-config.txt)
4093 [nixpkgs-linux_4_19-config.txt](https://github.com/a13xp0p0v/kconfig-hardened-check/files/4015582/nixpkgs-linux_4_19-config.txt)
4094 [nixpkgs-linux_mptcp_94-config.txt](https://github.com/a13xp0p0v/kconfig-hardened-check/files/4015583/nixpkgs-linux_mptcp_94-config.txt)
4095 [nixpkgs-linux_mptcp_95-config.txt](https://github.com/a13xp0p0v/kconfig-hardened-check/files/4015584/nixpkgs-linux_mptcp_95-config.txt)
4096 [nixpkgs-linux_mptcp-config.txt](https://github.com/a13xp0p0v/kconfig-hardened-check/files/4015585/nixpkgs-linux_mptcp-config.txt)
4098 #### <img src="https://avatars.githubusercontent.com/u/96200?u=9ed15c85825694d00e996d605d728179b830c4fa&v=4" width="50">[Mic92](https://github.com/Mic92) commented at [2020-01-02 10:47](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/27#issuecomment-570173237):
4100 This is the output for our hardened kernel:
4101 cc @joachifm (hardened maintainer)
4104 [+] Trying to detect architecture in "kconfig/nixpkgs-linux_hardened-config.txt"...
4105 [+] Detected architecture: X86_64
4106 [+] Checking "kconfig/nixpkgs-linux_hardened-config.txt" against hardening preferences...
4107 option name | desired val | decision | reason | check result
4108 =========================================================================================================================
4109 CONFIG_BUG | y |defconfig | self_protection | OK
4110 CONFIG_STRICT_KERNEL_RWX | y |defconfig | self_protection | OK
4111 CONFIG_STACKPROTECTOR_STRONG | y |defconfig | self_protection | OK
4112 CONFIG_SLUB_DEBUG | y |defconfig | self_protection | OK
4113 CONFIG_STRICT_MODULE_RWX | y |defconfig | self_protection | OK
4114 CONFIG_MICROCODE | y |defconfig | self_protection | OK
4115 CONFIG_RETPOLINE | y |defconfig | self_protection | OK
4116 CONFIG_X86_SMAP | y |defconfig | self_protection | OK
4117 CONFIG_X86_UMIP | y |defconfig | self_protection | OK: CONFIG_X86_INTEL_UMIP "y"
4118 CONFIG_IOMMU_SUPPORT | y |defconfig | self_protection | OK
4119 CONFIG_SYN_COOKIES | y |defconfig | self_protection | OK
4120 CONFIG_PAGE_TABLE_ISOLATION | y |defconfig | self_protection | OK
4121 CONFIG_RANDOMIZE_MEMORY | y |defconfig | self_protection | OK
4122 CONFIG_INTEL_IOMMU | y |defconfig | self_protection | OK
4123 CONFIG_AMD_IOMMU | y |defconfig | self_protection | OK
4124 CONFIG_VMAP_STACK | y |defconfig | self_protection | OK
4125 CONFIG_RANDOMIZE_BASE | y |defconfig | self_protection | OK
4126 CONFIG_THREAD_INFO_IN_TASK | y |defconfig | self_protection | OK
4127 CONFIG_BUG_ON_DATA_CORRUPTION | y | kspp | self_protection | OK
4128 CONFIG_DEBUG_WX | y | kspp | self_protection | OK
4129 CONFIG_SCHED_STACK_END_CHECK | y | kspp | self_protection | OK
4130 CONFIG_SLAB_FREELIST_HARDENED | y | kspp | self_protection | OK
4131 CONFIG_SLAB_FREELIST_RANDOM | y | kspp | self_protection | OK
4132 CONFIG_SHUFFLE_PAGE_ALLOCATOR | y | kspp | self_protection | FAIL: not found
4133 CONFIG_FORTIFY_SOURCE | y | kspp | self_protection | OK
4134 CONFIG_GCC_PLUGINS | y | kspp | self_protection | OK
4135 CONFIG_GCC_PLUGIN_RANDSTRUCT | y | kspp | self_protection | OK
4136 CONFIG_GCC_PLUGIN_LATENT_ENTROPY | y | kspp | self_protection | OK
4137 CONFIG_DEBUG_LIST | y | kspp | self_protection | OK
4138 CONFIG_DEBUG_SG | y | kspp | self_protection | OK
4139 CONFIG_DEBUG_CREDENTIALS | y | kspp | self_protection | OK
4140 CONFIG_DEBUG_NOTIFIERS | y | kspp | self_protection | OK
4141 CONFIG_PAGE_POISONING | y | kspp | self_protection | OK
4142 CONFIG_HARDENED_USERCOPY | y | kspp | self_protection | OK
4143 CONFIG_HARDENED_USERCOPY_FALLBACK | is not set | kspp | self_protection | OK
4144 CONFIG_MODULE_SIG | y | kspp | self_protection | FAIL: "is not set"
4145 CONFIG_MODULE_SIG_ALL | y | kspp | self_protection | FAIL: not found
4146 CONFIG_MODULE_SIG_SHA512 | y | kspp | self_protection | FAIL: not found
4147 CONFIG_MODULE_SIG_FORCE | y | kspp | self_protection | FAIL: not found
4148 CONFIG_DEFAULT_MMAP_MIN_ADDR | 65536 | kspp | self_protection | OK
4149 CONFIG_REFCOUNT_FULL | y | kspp | self_protection | OK
4150 CONFIG_INIT_STACK_ALL | y | clipos | self_protection | OK: CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL "y"
4151 CONFIG_INIT_ON_ALLOC_DEFAULT_ON | y | clipos | self_protection | FAIL: not found
4152 CONFIG_INIT_ON_FREE_DEFAULT_ON | y | clipos | self_protection | FAIL: not found
4153 CONFIG_SECURITY_DMESG_RESTRICT | y | clipos | self_protection | FAIL: "is not set"
4154 CONFIG_DEBUG_VIRTUAL | y | clipos | self_protection | FAIL: "is not set"
4155 CONFIG_STATIC_USERMODEHELPER | y | clipos | self_protection | FAIL: "is not set"
4156 CONFIG_SLAB_MERGE_DEFAULT | is not set | clipos | self_protection | FAIL: "y"
4157 CONFIG_GCC_PLUGIN_RANDSTRUCT_PERFORMANCE | is not set | clipos | self_protection | FAIL: "y"
4158 CONFIG_GCC_PLUGIN_STACKLEAK | y | clipos | self_protection | FAIL: not found
4159 CONFIG_STACKLEAK_METRICS | is not set | clipos | self_protection | FAIL: CONFIG_GCC_PLUGIN_STACKLEAK is needed
4160 CONFIG_STACKLEAK_RUNTIME_DISABLE | is not set | clipos | self_protection | FAIL: CONFIG_GCC_PLUGIN_STACKLEAK is needed
4161 CONFIG_RANDOM_TRUST_CPU | is not set | clipos | self_protection | OK
4162 CONFIG_INTEL_IOMMU_SVM | y | clipos | self_protection | FAIL: "is not set"
4163 CONFIG_INTEL_IOMMU_DEFAULT_ON | y | clipos | self_protection | FAIL: "is not set"
4164 CONFIG_SLUB_DEBUG_ON | y | my | self_protection | FAIL: "is not set"
4165 CONFIG_RESET_ATTACK_MITIGATION | y | my | self_protection | FAIL: "is not set"
4166 CONFIG_PAGE_POISONING_NO_SANITY | is not set | my | self_protection | FAIL: "y"
4167 CONFIG_PAGE_POISONING_ZERO | is not set | my | self_protection | FAIL: "y"
4168 CONFIG_AMD_IOMMU_V2 | y | my | self_protection | FAIL: "m"
4169 CONFIG_SECURITY | y |defconfig | security_policy | OK
4170 CONFIG_SECURITY_YAMA | y | kspp | security_policy | OK
4171 CONFIG_SECURITY_LOADPIN | y | my | security_policy | FAIL: "is not set"
4172 CONFIG_SECURITY_LOCKDOWN_LSM | y | my | security_policy | FAIL: not found
4173 CONFIG_SECURITY_LOCKDOWN_LSM_EARLY | y | my | security_policy | FAIL: not found
4174 CONFIG_LOCK_DOWN_KERNEL_FORCE_CONFIDENTIALITY| y | my | security_policy | FAIL: not found
4175 CONFIG_SECCOMP | y |defconfig | cut_attack_surface | OK
4176 CONFIG_SECCOMP_FILTER | y |defconfig | cut_attack_surface | OK
4177 CONFIG_STRICT_DEVMEM | y |defconfig | cut_attack_surface | OK
4178 CONFIG_MODULES | is not set | kspp | cut_attack_surface | FAIL: "y"
4179 CONFIG_DEVMEM | is not set | kspp | cut_attack_surface | FAIL: "y"
4180 CONFIG_IO_STRICT_DEVMEM | y | kspp | cut_attack_surface | OK
4181 CONFIG_ACPI_CUSTOM_METHOD | is not set | kspp | cut_attack_surface | OK
4182 CONFIG_COMPAT_BRK | is not set | kspp | cut_attack_surface | OK
4183 CONFIG_DEVKMEM | is not set | kspp | cut_attack_surface | OK
4184 CONFIG_COMPAT_VDSO | is not set | kspp | cut_attack_surface | OK: not found
4185 CONFIG_BINFMT_MISC | is not set | kspp | cut_attack_surface | FAIL: "y"
4186 CONFIG_INET_DIAG | is not set | kspp | cut_attack_surface | FAIL: "y"
4187 CONFIG_KEXEC | is not set | kspp | cut_attack_surface | FAIL: "y"
4188 CONFIG_PROC_KCORE | is not set | kspp | cut_attack_surface | OK
4189 CONFIG_LEGACY_PTYS | is not set | kspp | cut_attack_surface | OK
4190 CONFIG_HIBERNATION | is not set | kspp | cut_attack_surface | FAIL: "y"
4191 CONFIG_LEGACY_VSYSCALL_NONE | y | kspp | cut_attack_surface | OK
4192 CONFIG_IA32_EMULATION | is not set | kspp | cut_attack_surface | OK
4193 CONFIG_X86_X32 | is not set | kspp | cut_attack_surface | OK
4194 CONFIG_MODIFY_LDT_SYSCALL | is not set | kspp | cut_attack_surface | FAIL: "y"
4195 CONFIG_X86_PTDUMP | is not set |grsecurity| cut_attack_surface | FAIL: "m"
4196 CONFIG_ZSMALLOC_STAT | is not set |grsecurity| cut_attack_surface | OK
4197 CONFIG_PAGE_OWNER | is not set |grsecurity| cut_attack_surface | OK
4198 CONFIG_DEBUG_KMEMLEAK | is not set |grsecurity| cut_attack_surface | OK
4199 CONFIG_BINFMT_AOUT | is not set |grsecurity| cut_attack_surface | OK: not found
4200 CONFIG_KPROBES | is not set |grsecurity| cut_attack_surface | FAIL: "y"
4201 CONFIG_UPROBES | is not set |grsecurity| cut_attack_surface | FAIL: "y"
4202 CONFIG_GENERIC_TRACER | is not set |grsecurity| cut_attack_surface | FAIL: "y"
4203 CONFIG_PROC_VMCORE | is not set |grsecurity| cut_attack_surface | OK: not found
4204 CONFIG_PROC_PAGE_MONITOR | is not set |grsecurity| cut_attack_surface | FAIL: "y"
4205 CONFIG_USELIB | is not set |grsecurity| cut_attack_surface | FAIL: "y"
4206 CONFIG_CHECKPOINT_RESTORE | is not set |grsecurity| cut_attack_surface | OK
4207 CONFIG_USERFAULTFD | is not set |grsecurity| cut_attack_surface | FAIL: "y"
4208 CONFIG_HWPOISON_INJECT | is not set |grsecurity| cut_attack_surface | OK: not found
4209 CONFIG_MEM_SOFT_DIRTY | is not set |grsecurity| cut_attack_surface | OK: not found
4210 CONFIG_DEVPORT | is not set |grsecurity| cut_attack_surface | FAIL: "y"
4211 CONFIG_DEBUG_FS | is not set |grsecurity| cut_attack_surface | FAIL: "y"
4212 CONFIG_NOTIFIER_ERROR_INJECTION | is not set |grsecurity| cut_attack_surface | OK
4213 CONFIG_ACPI_TABLE_UPGRADE | is not set | lockdown | cut_attack_surface | FAIL: "y"
4214 CONFIG_ACPI_APEI_EINJ | is not set | lockdown | cut_attack_surface | OK: not found
4215 CONFIG_PROFILING | is not set | lockdown | cut_attack_surface | FAIL: "y"
4216 CONFIG_BPF_SYSCALL | is not set | lockdown | cut_attack_surface | FAIL: "y"
4217 CONFIG_MMIOTRACE_TEST | is not set | lockdown | cut_attack_surface | OK: not found
4218 CONFIG_KSM | is not set | clipos | cut_attack_surface | FAIL: "y"
4219 CONFIG_KALLSYMS | is not set | clipos | cut_attack_surface | FAIL: "y"
4220 CONFIG_X86_VSYSCALL_EMULATION | is not set | clipos | cut_attack_surface | FAIL: "y"
4221 CONFIG_MAGIC_SYSRQ | is not set | clipos | cut_attack_surface | FAIL: "y"
4222 CONFIG_KEXEC_FILE | is not set | clipos | cut_attack_surface | FAIL: "y"
4223 CONFIG_USER_NS | is not set | clipos | cut_attack_surface | FAIL: "y"
4224 CONFIG_LDISC_AUTOLOAD | is not set | clipos | cut_attack_surface | FAIL: "y"
4225 CONFIG_MMIOTRACE | is not set | my | cut_attack_surface | OK
4226 CONFIG_LIVEPATCH | is not set | my | cut_attack_surface | OK: not found
4227 CONFIG_IP_DCCP | is not set | my | cut_attack_surface | FAIL: "m"
4228 CONFIG_IP_SCTP | is not set | my | cut_attack_surface | FAIL: "m"
4229 CONFIG_FTRACE | is not set | my | cut_attack_surface | FAIL: "y"
4230 CONFIG_BPF_JIT | is not set | my | cut_attack_surface | FAIL: "y"
4231 CONFIG_ARCH_MMAP_RND_BITS | 32 | clipos |userspace_hardening | FAIL: "28"
4233 [+] config check is finished: 'OK' - 66 / 'FAIL' - 57
4236 #### <img src="https://avatars.githubusercontent.com/u/96200?u=9ed15c85825694d00e996d605d728179b830c4fa&v=4" width="50">[Mic92](https://github.com/Mic92) commented at [2020-01-02 10:51](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/27#issuecomment-570174082):
4238 cc @fpletz @andir @flokli @nequissimus regarding security/kernel maintenance.
4240 #### <img src="https://avatars.githubusercontent.com/u/628342?u=948c2401c073b8097e8ec160019140fb6043f266&v=4" width="50">[NeQuissimus](https://github.com/NeQuissimus) commented at [2020-01-02 16:07](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/27#issuecomment-570253840):
4242 There is no (official) open source grsecurity for recent kernels. But for the other options, I'd be interested in a discussion in the nixpkgs repo.
4244 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-01-02 23:11](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/27#issuecomment-570392431):
4248 > I am not sure which configuration you want to include in this repository.
4249 > Maybe _hardened, _latest and the default kernel.
4251 I would like to have only the default and hardened config for NixOS.
4252 That's useful for a brief comparison of kernel hardening adoption by various Linux distributions.
4253 By the way, we don't have a goal to collect all the latest configs from all the distributions.
4254 @HacKurx updates them from time to time.
4258 > There is no (official) open source grsecurity for recent kernels.
4261 And do you mean that there is an unofficial grsecurity patch for recent kernels available in public?
4263 > But for the other options, I'd be interested in a discussion in the nixpkgs repo.
4265 I would be glad to join that discussion.
4266 I've accumulated some knowledge about the vanilla kernel hardening.
4267 Please see my Linux Kernel Defence Map https://github.com/a13xp0p0v/linux-kernel-defence-map.
4268 It shows the the relationships between:
4269 - Vulnerability classes,
4270 - Exploitation techniques,
4271 - Bug detection mechanisms,
4272 - Defense technologies.
4274 It could be useful for making a decision about enabling kernel hardening config options.
4276 @Mic92 @fpletz @andir @flokli @NeQuissimus,
4277 Does NixOS have a documentation describing the difference between its hardened and default kernels?
4281 #### <img src="https://avatars.githubusercontent.com/u/628342?u=948c2401c073b8097e8ec160019140fb6043f266&v=4" width="50">[NeQuissimus](https://github.com/NeQuissimus) commented at [2020-01-03 00:29](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/27#issuecomment-570414239):
4283 I was thinking of minipli but I guess those are only for 4.9.
4285 I opened NixOS/nixpkgs#76850, which links to the kernel flags we set for the standard kernel builds and for the hardened one.
4286 Unfortunately I do not think there is good documentation.
4288 #### <img src="https://avatars.githubusercontent.com/u/96200?u=9ed15c85825694d00e996d605d728179b830c4fa&v=4" width="50">[Mic92](https://github.com/Mic92) commented at [2020-01-03 08:37](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/27#issuecomment-570503332):
4292 > > I am not sure which configuration you want to include in this repository.
4293 > > Maybe _hardened, _latest and the default kernel.
4295 > I would like to have only the default and hardened config for NixOS.
4296 > That's useful for a brief comparison of kernel hardening adoption by various Linux distributions.
4297 > By the way, we don't have a goal to collect all the latest configs from all the distributions.
4298 > @HacKurx updates them from time to time.
4300 Fair enough I think the other changes that are actually part of this pull request should be still useful though.
4302 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-01-10 14:12](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/27#issuecomment-573050822):
4304 > Fair enough I think the other changes that are actually part of this pull request should be still useful though.
4307 Could you have a look at my comments for your PR https://github.com/a13xp0p0v/kconfig-hardened-check/pull/26 ?
4308 I need some clarifications to be able to integrate your work.
4311 #### <img src="https://avatars.githubusercontent.com/u/4661917?u=bb7aeb3c77839cea055b49b80168666b36315f3d&v=4" width="50">[theLOICofFRANCE](https://github.com/theLOICofFRANCE) commented at [2020-02-24 20:57](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/27#issuecomment-590544879):
4315 I haven't tested NixOS yet, is there a quick and easy way to retrieve the kernel configuration or it's only dynamically generated?
4316 I only find this but without config files:
4317 https://hydra.nixos.org/job/nixos/release-19.09/nixpkgs.linuxPackages_latest_hardened.kernel.x86_64-linux
4319 Beside the point, I'm not a fan of that :
4320 https://github.com/NixOS/nixpkgs/commit/1b9bf8fa7559d1bbf030f3fe3513d25eada65a41
4322 #### <img src="https://avatars.githubusercontent.com/u/96200?u=9ed15c85825694d00e996d605d728179b830c4fa&v=4" width="50">[Mic92](https://github.com/Mic92) commented at [2020-02-25 09:26](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/27#issuecomment-590768293):
4324 @HacKurx It's generated by nix code. Can you explain why a RANDSTRUCT read from /dev/random is better than a checksum over the linux kernel tarball? From my understanding, once that a package is build, one could extract the seed from the build. In that way reproducible builds would give us other properties i.e. verifying a correct build.
4326 #### <img src="https://avatars.githubusercontent.com/u/41977?u=ba54c9de3752a1aa05a462e38bd6e84bdc26a2bb&v=4" width="50">[joachifm](https://github.com/joachifm) commented at [2020-02-25 17:26](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/27#issuecomment-590976475):
4328 @Mic92 I agree with you. I think it's fair to say that any compile-time randomization is rendered (nearly) pointless by publishing the image. In our case, the value is likely to change whenever source/config changes, so might be considered "better" than a static seed value (whether it makes any real difference is another matter). I think users who really care about this type of mitigation should build their own kernel with a custom seed (support for this was added in a later patch, iirc).
4330 #### <img src="https://avatars.githubusercontent.com/u/4661917?u=bb7aeb3c77839cea055b49b80168666b36315f3d&v=4" width="50">[theLOICofFRANCE](https://github.com/theLOICofFRANCE) commented at [2020-02-25 21:10](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/27#issuecomment-591070826):
4333 The person who recompile a kernel from your source should have another seed (not your) for more security.
4334 It seems preferable to me of change the SEED variable every time you update the nix kernel. Use a compilation based of a date or the kernel number for example.
4336 #### <img src="https://avatars.githubusercontent.com/u/41977?u=ba54c9de3752a1aa05a462e38bd6e84bdc26a2bb&v=4" width="50">[joachifm](https://github.com/joachifm) commented at [2020-02-25 22:20](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/27#issuecomment-591100811):
4338 @HacKurx note that `${src}` in the snippet you linked above expands to a string that contains both the checksum of the linux source tarball and the version number: it is certain to change in case of version bumps.
4340 I wouldn't mind including more information in the seed construction to further increase the likelihood that it will differ between builds, but whatever is added needs to preserve determinism (in the sense that same inputs give same output).
4342 Reproducibility is a key goal for Nix/NixPkgs and usually overrides other concerns. In this case, I think giving users of the prebuilt image a weak(ened) variant of the mitigation while making it easy to supply a custom seed is a more than fair tradeoff, especially given that the full benefit of this type of mitigation can only be realized with a self-built package anyway.
4344 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-03-27 19:45](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/27#issuecomment-605284899):
4347 I installed Nix on a Debian machine to test your scripts.
4348 Unfortunately I have to revert the commit that adds `contrib/get-nix-kconfig.py`.
4349 This script is corrupted (has unexpected symbols).
4350 It also has numerous troubles with Python 3.5.3.
4352 #### <img src="https://avatars.githubusercontent.com/u/96200?u=9ed15c85825694d00e996d605d728179b830c4fa&v=4" width="50">[Mic92](https://github.com/Mic92) commented at [2020-03-27 19:52](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/27#issuecomment-605287211):
4354 @a13xp0p0v just add:
4357 #! /usr/bin/env nix-shell
4358 #! nix-shell -i python3
4361 as a shebang. Nixpkgs has python3.6 and the script depends nix anyway.
4362 It is not corrupted but depends on python3.6 or newer.
4364 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-03-27 20:27](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/27#issuecomment-605300321):
4366 Thanks for prompt reply!
4371 2. Then I change the shebang as you described and run the script:
4373 [nix-shell:~/kconfig-hardened-check/contrib]$ ./get-nix-kconfig.py
4374 error: getting status of '/home/x/kconfig-hardened-check/contrib/default.nix': No such file or directory
4376 3. Finally this makes it work:
4378 [nix-shell:~/kconfig-hardened-check/contrib]$ python3 get-nix-kconfig.py
4380 I got kernel configs and added hardened one to the collection: 4768e21b33fa9663114eb30c2b2c2cf9e6cf4721
4384 #### <img src="https://avatars.githubusercontent.com/u/96200?u=9ed15c85825694d00e996d605d728179b830c4fa&v=4" width="50">[Mic92](https://github.com/Mic92) commented at [2020-03-28 03:18](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/27#issuecomment-605387095):
4386 My mistake it should have been:
4389 #! /usr/bin/env nix-shell
4390 #! nix-shell -i python3 -p python3
4394 -------------------------------------------------------------------------------
4396 # [\#26 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/26) `closed`: enable distribution via pip/setuptools
4398 #### <img src="https://avatars.githubusercontent.com/u/96200?u=9ed15c85825694d00e996d605d728179b830c4fa&v=4" width="50">[Mic92](https://github.com/Mic92) opened issue at [2020-01-02 09:01](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/26):
4402 #### <img src="https://avatars.githubusercontent.com/u/96200?u=9ed15c85825694d00e996d605d728179b830c4fa&v=4" width="50">[Mic92](https://github.com/Mic92) commented at [2020-02-25 09:34](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/26#issuecomment-590771724):
4405 > Thanks a lot for your work.
4406 > I'm not familiar with setuptools, but it looks to me that integrating that is a good idea.
4407 > There are a few aspects that I would like to fix before merging.
4409 > 1. Can we avoid creating the `kconfig_hardened_check` directory? I would rather have `bin` and `config_files`.
4412 No one needs a distinct module to put the python code in to avoid conflicts with other installed python packages.
4414 > 2. What is the purpose of splitting the code onto `bin/kconfig_hardened_check` and `kconfig_hardened_check/__init__.py`? Is it some special python feng-shui? (I'm asking because I'm just a kernel developer)
4417 `bin/kconfig_hardened_check` is for people just checking out the repository and running the script without installing it. If you install it with `setuptools`,
4418 it will generate its own wrapper that will eventually load `kconfig_hardened_check/__init__.py`.
4420 > 3. I would like to split setuptools integration and the code refactoring onto separate commits. Moreover, I don't understand the `List[Any]` changes.
4422 `List[Any]` is a type annotation. When you use a typechecker like mypy you can typecheck your code that way.
4425 > 4. Are you sure that the classifiers in `setup.cfg` are correct? It looks like some of them don't fit this project.
4429 > 5. The `package_data` in `setup.cfg` misses some files in the repository. Is it ok?
4431 It should only contain files that are supposed to be installed. I am not even sure having those config files provides any benefit for a user of the tool.
4432 Let me know and I would not include them at all.
4438 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-03-26 13:20](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/26#issuecomment-604427052):
4441 I carefully reimplemented your proof-of-concept in a set of separate commits.
4442 Fixed mistakes in setup.cfg, added MANIFEST.in, fixed issues with global variables.
4443 Thank you very much, I learned a lot!
4446 -------------------------------------------------------------------------------
4448 # [\#25 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/25) `closed`: Hardened Kernel Config File for Virtual Machines (VMs) ("cloud kernel")
4450 #### <img src="https://avatars.githubusercontent.com/u/1985040?u=b84e7065f9f8d62fbff9ac468a0cf0757718ed77&v=4" width="50">[adrelanos](https://github.com/adrelanos) opened issue at [2019-12-28 20:35](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/25):
4452 A kernel config specialized for better security inside virtual machines is in development.
4454 The development preview version can be found here:
4455 https://github.com/Whonix/hardened-kernel/blob/master/usr/share/hardened-kernel/hardened-vm-kernel
4457 This work is being done by @madaidan who also contributed pull requests to [linux-hardened](https://github.com/anthraxx/linux-hardened).
4459 https://github.com/anthraxx/linux-hardened/pulls?utf8=%E2%9C%93&q=author%3Amadaidan
4461 Discussions about the kernel config happen mostly in Whonix forums.
4463 https://forums.whonix.org/t/kernel-recompilation-for-better-hardening/7598/214
4465 The hardened kernel config was contributed by @madaidan to the @Whonix project but as the maintainer of Whonix I think that it is not the most suitable project to maintain a kernel config. It would be more impactful and would get more eyes on it if it was hosted here.
4467 Therefore I am wondering if there is any chance you would accept a pull request for a hardened (VM) config file? Which folder would be suitable for such a config file?
4469 @madaidan is also working on a hardened bare metal (i.e. non-VM) kernel config:
4470 https://github.com/Whonix/hardened-kernel/blob/master/usr/share/hardened-kernel/hardened-host-kernel
4472 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-01-02 23:27](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/25#issuecomment-570397241):
4475 I guess Whonix has a default and hardened config, am I right?
4476 Is the difference between them documented anywhere?
4477 We can take Whonix official configs to the `config_files/distros/`.
4478 That's useful for a brief comparison of kernel hardening adoption by various Linux distributions.
4479 There is also the `config_files/links.txt` file that describes how to get official configs from various distros.
4482 #### <img src="https://avatars.githubusercontent.com/u/50278627?v=4" width="50">[madaidan](https://github.com/madaidan) commented at [2020-01-05 17:22](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/25#issuecomment-570930694):
4484 The current Whonix default is the Debian default. It will be changed to the config mentioned in the post once it's finished.
4486 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2020-01-10 15:20](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/25#issuecomment-573077384):
4489 So when it is finished, you are welcome to send me the pull request that
4490 - adds the official Whonix hardened config to `config_files/distros/`;
4491 - adds the corresponding info to `config_files/links.txt`.
4493 #### <img src="https://avatars.githubusercontent.com/u/42802201?v=4" width="50">[tsautereau-anssi](https://github.com/tsautereau-anssi) commented at [2020-01-13 15:59](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/25#issuecomment-573735007):
4495 @madaidan After reading your [post](https://github.com/anthraxx/linux-hardened/issues/21) on the linux-hardened repository, it seems you might be interested in contributing some of your changes to the [CLIP OS kernel](https://github.com/clipos/src_external_linux/) (see our current configuration [here](https://github.com/clipos/src_platform_config-linux-hardware/tree/master/kernel_config)). If so, don't hesitate to [open an issue](https://github.com/clipos/bugs), it would be much appreciated!
4497 Thanks @msalaun-anssi for the heads-up ;)
4499 #### <img src="https://avatars.githubusercontent.com/u/1985040?u=b84e7065f9f8d62fbff9ac468a0cf0757718ed77&v=4" width="50">[adrelanos](https://github.com/adrelanos) commented at [2020-01-13 16:25](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/25#issuecomment-573747860):
4501 Created https://github.com/clipos/bugs/issues/38 for it.
4503 #### <img src="https://avatars.githubusercontent.com/u/50278627?v=4" width="50">[madaidan](https://github.com/madaidan) commented at [2020-01-13 18:15](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/25#issuecomment-573797636):
4505 > @madaidan After reading your post on the linux-hardened repository, it seems you might be interested in contributing some of your changes to the CLIP OS kernel (see our current configuration here). If so, don't hesitate to open an issue, it would be much appreciated!
4507 Sounds great. I'll see what I can do.
4510 -------------------------------------------------------------------------------
4512 # [\#24 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/24) `closed`: Create debian-buster.config
4514 #### <img src="https://avatars.githubusercontent.com/u/89727?v=4" width="50">[alexandernst](https://github.com/alexandernst) opened issue at [2019-08-27 23:19](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/24):
4517 [+] Trying to detect architecture in "../linux-source-4.19/.config"...
4518 [+] Detected architecture: X86_64
4519 [+] Checking "../linux-source-4.19/.config" against hardening preferences...
4520 option name | desired val | decision | reason || check result
4521 ====================================================================================================================
4522 CONFIG_BUG | y |defconfig | self_protection || OK
4523 CONFIG_STRICT_KERNEL_RWX | y |defconfig | self_protection || OK
4524 CONFIG_STACKPROTECTOR_STRONG | y |defconfig | self_protection || OK
4525 CONFIG_SLUB_DEBUG | y |defconfig | self_protection || OK
4526 CONFIG_STRICT_MODULE_RWX | y |defconfig | self_protection || OK
4527 CONFIG_PAGE_TABLE_ISOLATION | y |defconfig | self_protection || OK
4528 CONFIG_RANDOMIZE_MEMORY | y |defconfig | self_protection || OK
4529 CONFIG_RANDOMIZE_BASE | y |defconfig | self_protection || OK
4530 CONFIG_RETPOLINE | y |defconfig | self_protection || OK
4531 CONFIG_X86_SMAP | y |defconfig | self_protection || OK
4532 CONFIG_X86_INTEL_UMIP | y |defconfig | self_protection || OK
4533 CONFIG_SYN_COOKIES | y |defconfig | self_protection || OK
4534 CONFIG_VMAP_STACK | y |defconfig | self_protection || OK
4535 CONFIG_THREAD_INFO_IN_TASK | y |defconfig | self_protection || OK
4536 CONFIG_BUG_ON_DATA_CORRUPTION | y | kspp | self_protection || OK
4537 CONFIG_DEBUG_WX | y | kspp | self_protection || OK
4538 CONFIG_SCHED_STACK_END_CHECK | y | kspp | self_protection || OK
4539 CONFIG_SLAB_FREELIST_HARDENED | y | kspp | self_protection || OK
4540 CONFIG_SLAB_FREELIST_RANDOM | y | kspp | self_protection || OK
4541 CONFIG_SHUFFLE_PAGE_ALLOCATOR | y | kspp | self_protection || FAIL: not found
4542 CONFIG_FORTIFY_SOURCE | y | kspp | self_protection || OK
4543 CONFIG_GCC_PLUGINS | y | kspp | self_protection || FAIL: not found
4544 CONFIG_GCC_PLUGIN_RANDSTRUCT | y | kspp | self_protection || FAIL: not found
4545 CONFIG_GCC_PLUGIN_LATENT_ENTROPY | y | kspp | self_protection || FAIL: not found
4546 CONFIG_DEBUG_LIST | y | kspp | self_protection || OK
4547 CONFIG_DEBUG_SG | y | kspp | self_protection || FAIL: "is not set"
4548 CONFIG_DEBUG_CREDENTIALS | y | kspp | self_protection || FAIL: "is not set"
4549 CONFIG_DEBUG_NOTIFIERS | y | kspp | self_protection || FAIL: "is not set"
4550 CONFIG_PAGE_POISONING | y | kspp | self_protection || OK
4551 CONFIG_HARDENED_USERCOPY | y | kspp | self_protection || OK
4552 CONFIG_HARDENED_USERCOPY_FALLBACK | is not set | kspp | self_protection || OK
4553 CONFIG_MODULE_SIG | y | kspp | self_protection || FAIL: "is not set"
4554 CONFIG_MODULE_SIG_ALL | y | kspp | self_protection || FAIL: not found
4555 CONFIG_MODULE_SIG_SHA512 | y | kspp | self_protection || FAIL: not found
4556 CONFIG_MODULE_SIG_FORCE | y | kspp | self_protection || FAIL: not found
4557 CONFIG_DEFAULT_MMAP_MIN_ADDR | 65536 | kspp | self_protection || OK
4558 CONFIG_REFCOUNT_FULL | y | kspp | self_protection || OK
4559 CONFIG_LOCK_DOWN_KERNEL | y | clipos | self_protection || OK
4560 CONFIG_SECURITY_DMESG_RESTRICT | y | clipos | self_protection || OK
4561 CONFIG_DEBUG_VIRTUAL | y | clipos | self_protection || FAIL: "is not set"
4562 CONFIG_STATIC_USERMODEHELPER | y | clipos | self_protection || FAIL: "is not set"
4563 CONFIG_SLAB_MERGE_DEFAULT | is not set | clipos | self_protection || FAIL: "y"
4564 CONFIG_GCC_PLUGIN_RANDSTRUCT_PERFORMANCE| is not set | clipos | self_protection ||FAIL: CONFIG_GCC_PLUGIN_RANDSTRUCT is needed
4565 CONFIG_GCC_PLUGIN_STACKLEAK | y | clipos | self_protection || FAIL: not found
4566 CONFIG_STACKLEAK_METRICS | is not set | clipos | self_protection ||FAIL: CONFIG_GCC_PLUGIN_STACKLEAK is needed
4567 CONFIG_STACKLEAK_RUNTIME_DISABLE | is not set | clipos | self_protection ||FAIL: CONFIG_GCC_PLUGIN_STACKLEAK is needed
4568 CONFIG_RANDOM_TRUST_CPU | is not set | clipos | self_protection || FAIL: "y"
4569 CONFIG_MICROCODE | y | clipos | self_protection || OK
4570 CONFIG_IOMMU_SUPPORT | y | clipos | self_protection || OK
4571 CONFIG_INTEL_IOMMU | y | clipos | self_protection || OK
4572 CONFIG_INTEL_IOMMU_SVM | y | clipos | self_protection || OK
4573 CONFIG_INTEL_IOMMU_DEFAULT_ON | y | clipos | self_protection || FAIL: "is not set"
4574 CONFIG_INIT_STACK_ALL | y | my | self_protection || FAIL: not found
4575 CONFIG_SLUB_DEBUG_ON | y | my | self_protection || FAIL: "is not set"
4576 CONFIG_SECURITY_LOADPIN | y | my | self_protection || FAIL: "is not set"
4577 CONFIG_RESET_ATTACK_MITIGATION | y | my | self_protection || FAIL: "is not set"
4578 CONFIG_PAGE_POISONING_NO_SANITY | is not set | my | self_protection || FAIL: "y"
4579 CONFIG_PAGE_POISONING_ZERO | is not set | my | self_protection || OK
4580 CONFIG_AMD_IOMMU | y | my | self_protection || OK
4581 CONFIG_AMD_IOMMU_V2 | y | my | self_protection || OK
4582 CONFIG_SECURITY | y |defconfig | security_policy || OK
4583 CONFIG_SECURITY_YAMA | y | kspp | security_policy || OK
4584 CONFIG_SECCOMP | y |defconfig | cut_attack_surface || OK
4585 CONFIG_SECCOMP_FILTER | y |defconfig | cut_attack_surface || OK
4586 CONFIG_STRICT_DEVMEM | y |defconfig | cut_attack_surface || OK
4587 CONFIG_MODULES | is not set | kspp | cut_attack_surface || FAIL: "y"
4588 CONFIG_DEVMEM | is not set | kspp | cut_attack_surface || FAIL: "y"
4589 CONFIG_IO_STRICT_DEVMEM | y | kspp | cut_attack_surface || OK
4590 CONFIG_ACPI_CUSTOM_METHOD | is not set | kspp | cut_attack_surface || OK
4591 CONFIG_COMPAT_BRK | is not set | kspp | cut_attack_surface || OK
4592 CONFIG_DEVKMEM | is not set | kspp | cut_attack_surface || OK
4593 CONFIG_COMPAT_VDSO | is not set | kspp | cut_attack_surface || OK
4594 CONFIG_BINFMT_MISC | is not set | kspp | cut_attack_surface || OK
4595 CONFIG_INET_DIAG | is not set | kspp | cut_attack_surface || OK
4596 CONFIG_KEXEC | is not set | kspp | cut_attack_surface || FAIL: "y"
4597 CONFIG_PROC_KCORE | is not set | kspp | cut_attack_surface || FAIL: "y"
4598 CONFIG_LEGACY_PTYS | is not set | kspp | cut_attack_surface || OK
4599 CONFIG_HIBERNATION | is not set | kspp | cut_attack_surface || FAIL: "y"
4600 CONFIG_LEGACY_VSYSCALL_NONE | y | kspp | cut_attack_surface || OK
4601 CONFIG_IA32_EMULATION | is not set | kspp | cut_attack_surface || FAIL: "y"
4602 CONFIG_X86_X32 | is not set | kspp | cut_attack_surface || FAIL: "y"
4603 CONFIG_MODIFY_LDT_SYSCALL | is not set | kspp | cut_attack_surface || FAIL: "y"
4604 CONFIG_X86_PTDUMP | is not set |grsecurity| cut_attack_surface || OK
4605 CONFIG_ZSMALLOC_STAT | is not set |grsecurity| cut_attack_surface || OK: not found
4606 CONFIG_PAGE_OWNER | is not set |grsecurity| cut_attack_surface || OK
4607 CONFIG_DEBUG_KMEMLEAK | is not set |grsecurity| cut_attack_surface || OK
4608 CONFIG_BINFMT_AOUT | is not set |grsecurity| cut_attack_surface || OK: not found
4609 CONFIG_KPROBES | is not set |grsecurity| cut_attack_surface || FAIL: "y"
4610 CONFIG_UPROBES | is not set |grsecurity| cut_attack_surface || FAIL: "y"
4611 CONFIG_GENERIC_TRACER | is not set |grsecurity| cut_attack_surface || FAIL: "y"
4612 CONFIG_PROC_VMCORE | is not set |grsecurity| cut_attack_surface || FAIL: "y"
4613 CONFIG_PROC_PAGE_MONITOR | is not set |grsecurity| cut_attack_surface || FAIL: "y"
4614 CONFIG_USELIB | is not set |grsecurity| cut_attack_surface || FAIL: "y"
4615 CONFIG_CHECKPOINT_RESTORE | is not set |grsecurity| cut_attack_surface || FAIL: "y"
4616 CONFIG_USERFAULTFD | is not set |grsecurity| cut_attack_surface || FAIL: "y"
4617 CONFIG_HWPOISON_INJECT | is not set |grsecurity| cut_attack_surface || OK
4618 CONFIG_MEM_SOFT_DIRTY | is not set |grsecurity| cut_attack_surface || FAIL: "y"
4619 CONFIG_DEVPORT | is not set |grsecurity| cut_attack_surface || FAIL: "y"
4620 CONFIG_DEBUG_FS | is not set |grsecurity| cut_attack_surface || FAIL: "y"
4621 CONFIG_NOTIFIER_ERROR_INJECTION | is not set |grsecurity| cut_attack_surface || OK
4622 CONFIG_ACPI_TABLE_UPGRADE | is not set | lockdown | cut_attack_surface || FAIL: "y"
4623 CONFIG_ACPI_APEI_EINJ | is not set | lockdown | cut_attack_surface || OK
4624 CONFIG_PROFILING | is not set | lockdown | cut_attack_surface || FAIL: "y"
4625 CONFIG_BPF_SYSCALL | is not set | lockdown | cut_attack_surface || FAIL: "y"
4626 CONFIG_MMIOTRACE_TEST | is not set | lockdown | cut_attack_surface || OK
4627 CONFIG_KSM | is not set | clipos | cut_attack_surface || FAIL: "y"
4628 CONFIG_IKCONFIG | is not set | clipos | cut_attack_surface || FAIL: "m"
4629 CONFIG_KALLSYMS | is not set | clipos | cut_attack_surface || FAIL: "y"
4630 CONFIG_X86_VSYSCALL_EMULATION | is not set | clipos | cut_attack_surface || FAIL: "y"
4631 CONFIG_MAGIC_SYSRQ | is not set | clipos | cut_attack_surface || FAIL: "y"
4632 CONFIG_KEXEC_FILE | is not set | clipos | cut_attack_surface || FAIL: "y"
4633 CONFIG_USER_NS | is not set | clipos | cut_attack_surface || FAIL: "y"
4634 CONFIG_LDISC_AUTOLOAD | is not set | clipos | cut_attack_surface || FAIL: "y"
4635 CONFIG_MMIOTRACE | is not set | my | cut_attack_surface || FAIL: "y"
4636 CONFIG_LIVEPATCH | is not set | my | cut_attack_surface || FAIL: "y"
4637 CONFIG_IP_DCCP | is not set | my | cut_attack_surface || OK
4638 CONFIG_IP_SCTP | is not set | my | cut_attack_surface || OK
4639 CONFIG_FTRACE | is not set | my | cut_attack_surface || FAIL: "y"
4640 CONFIG_BPF_JIT | is not set | my | cut_attack_surface || FAIL: "y"
4641 CONFIG_ARCH_MMAP_RND_BITS | 32 | clipos |userspace_protection|| FAIL: "28"
4643 [+] config check is finished: 'OK' - 60 / 'FAIL' - 60
4646 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2019-08-30 12:40](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/24#issuecomment-526586258):
4648 Hello @alexandernst,
4652 I decided to compare the your config with one available here:
4653 https://packages.debian.org/buster/linux-image-4.19.0-5-amd64
4656 Where did you get your config?
4661 #### <img src="https://avatars.githubusercontent.com/u/89727?v=4" width="50">[alexandernst](https://github.com/alexandernst) commented at [2019-08-30 12:56](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/24#issuecomment-526591340):
4663 The config file was generated using the instructions in https://kernel-team.pages.debian.net/kernel-handbook/ch-common-tasks.html#s-common-building
4666 apt install -y linux-source fakeroot libelf-dev libssl-dev
4667 tar xaf /usr/src/linux-source-4.19.tar.xz
4668 cd linux-source-4.19/
4669 yes "" | make localmodconfig
4670 scripts/config --disable MODULE_SIG
4673 #### <img src="https://avatars.githubusercontent.com/u/89727?v=4" width="50">[alexandernst](https://github.com/alexandernst) commented at [2019-08-30 12:58](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/24#issuecomment-526591989):
4675 Oh, this was built using an AWS EC2 instance, so that might be causing the differences between a vainilla debian config and my config.
4677 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2019-08-30 13:07](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/24#issuecomment-526595179):
4679 Right, let me quote the kernel documentation:
4681 "make localmodconfig" Create a config based on current config and loaded modules (lsmod).
4683 https://www.kernel.org/doc/html/latest/admin-guide/README.html?highlight=localmodconfig
4685 Would you like to fix your PR?
4686 If so I would also ask to add info to `config_files/links.txt`.
4690 #### <img src="https://avatars.githubusercontent.com/u/89727?v=4" width="50">[alexandernst](https://github.com/alexandernst) commented at [2019-08-30 13:38](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/24#issuecomment-526605210):
4692 I'm not really sure if by "fix" you mean rename the file to something like `debian-buster-aws.config` or by replace the config with the one from https://packages.debian.org/buster/linux-image-4.19.0-5-amd64 ?
4694 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2019-08-30 13:44](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/24#issuecomment-526607017):
4696 I think adding an original Debian config would be more useful for everyone.
4697 Also it would be nice if you find a direct link to this config and add it to `links.txt`.
4699 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2019-11-28 07:36](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/24#issuecomment-559376496):
4701 Closing the PR (I've finally did it myself: ad80700, 4f9c653).
4705 -------------------------------------------------------------------------------
4707 # [\#23 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/23) `closed`: LOCK_DOWN_KERNEL
4709 #### <img src="https://avatars.githubusercontent.com/u/11277437?v=4" width="50">[rubeecube](https://github.com/rubeecube) opened issue at [2019-07-22 12:05](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/23):
4713 Thank you for this awesome project!
4715 It seems that "LOCK_DOWN_KERNEL" / "LOCK_DOWN MANDATORY" enable other flags.
4717 - No unsigned modules and no modules for which can't validate the signature.
4718 - No use of ioperm(), iopl() and no writing to /dev/port.
4719 - No writing to /dev/mem or /dev/kmem.
4721 - Restrict PCI BAR access.
4722 - Restrict MSR access.
4724 - Certain ACPI restrictions.
4725 - Restrict debugfs interface to ASUS WMI.
4727 http://lkml.iu.edu/hypermail/linux/kernel/1704.0/02933.html
4729 Is it possible to reflect this in the script?
4731 #### <img src="https://avatars.githubusercontent.com/u/67428?u=cc677701e49dca0be4cdc6ea10bc60b52a181e4e&v=4" width="50">[jelly](https://github.com/jelly) commented at [2019-07-22 12:18](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/23#issuecomment-513767366):
4733 The kernel lockdown patch has not been merged yet and I'm not sure if it's possible to enable these hardening functionality without the patch.
4735 Also the linked patch is out of a date, there is a newer revision implemented as LSM https://lore.kernel.org/linux-security-module/20190404003249.14356-1-matthewgarrett@google.com/T/#m50dd383459d65d52d80c90f36af860a7c10f364c
4737 #### <img src="https://avatars.githubusercontent.com/u/11277437?v=4" width="50">[rubeecube](https://github.com/rubeecube) commented at [2019-07-22 12:27](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/23#issuecomment-513770393):
4739 Ok, I'm new to this and didn't know that.
4742 #### <img src="https://avatars.githubusercontent.com/u/32568352?v=4" width="50">[Bernhard40](https://github.com/Bernhard40) commented at [2019-07-23 12:15](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/23#issuecomment-514184160):
4744 Some distros like Fedora or Ubuntu are using lockdown kernel patches for a long time.
4746 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2019-08-12 08:27](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/23#issuecomment-520338183):
4750 @bokobok, some time ago I looked through the lockdown patchset in Ubuntu kernel tree.
4751 I marked the kernel options enforced by lockdown with a special comment in the script:
4753 # refers to LOCK_DOWN_KERNEL
4755 For more details please see https://github.com/a13xp0p0v/kconfig-hardened-check/commit/796a22935ab5cd3ddcf19c4ea85411d9bf04fef6
4757 When the lockdown patchset is finally merged, I will look through the commits once again and update the script.
4759 @jelly @Bernhard40, thanks for your commentary.
4761 #### <img src="https://avatars.githubusercontent.com/u/67428?u=cc677701e49dca0be4cdc6ea10bc60b52a181e4e&v=4" width="50">[jelly](https://github.com/jelly) commented at [2019-08-12 18:27](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/23#issuecomment-520540892):
4763 It's getting close to mainline http://kernsec.org/pipermail/linux-security-module-archive/2019-August/015795.html
4766 -------------------------------------------------------------------------------
4768 # [\#22 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/22) `merged`: #20 fix: use right quotes in json output
4770 #### <img src="https://avatars.githubusercontent.com/u/4029800?u=86702d3f2d50ee01ef1c572ef26b1ea1318f28da&v=4" width="50">[adrianopol](https://github.com/adrianopol) opened issue at [2019-07-07 19:27](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/22):
4772 #20: fix quotes for --json
4777 -------------------------------------------------------------------------------
4779 # [\#21 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/21) `merged`: add --json option
4781 #### <img src="https://avatars.githubusercontent.com/u/4029800?u=86702d3f2d50ee01ef1c572ef26b1ea1318f28da&v=4" width="50">[adrianopol](https://github.com/adrianopol) opened issue at [2019-06-21 19:57](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/21):
4783 With `--json` output will be formatted as array of arrays:
4785 `[['CONFIG_BUG', 'y', 'defconfig', 'self_protection', 'OK'], ['CONFIG_STRICT_KERNEL_RWX', 'y', 'defconfig', 'self_protection', 'OK'], ...`
4787 #### <img src="https://avatars.githubusercontent.com/u/4029800?u=86702d3f2d50ee01ef1c572ef26b1ea1318f28da&v=4" width="50">[adrianopol](https://github.com/adrianopol) commented at [2019-06-24 09:24](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/21#issuecomment-504931635):
4791 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2019-06-24 11:11](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/21#issuecomment-504965369):
4797 -------------------------------------------------------------------------------
4799 # [\#20 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/20) `closed`: JSON output
4801 #### <img src="https://avatars.githubusercontent.com/u/964610?u=f244bab6b14967638a88cef92752379e64b15996&v=4" width="50">[Wenzel](https://github.com/Wenzel) opened issue at [2019-06-10 14:11](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/20):
4805 I would like to integrate your project into a Python script which would check the security settings automatically and provide a report.
4807 Would it be possible to have an easily parsable JSON output ?
4808 Otherwise processing with your data will be very difficult, if you are not human.
4812 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2019-06-11 10:03](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/20#issuecomment-500775436):
4816 > I would like tot integrate your project into a Python script which would check the security settings automatically and provide a report.
4820 > Would it be possible to have an easily parsable JSON output ?
4821 Otherwise processing with your data will be very difficult, if you are not human.
4823 It sounds reasonable. I'll have a look in my free time.
4824 If you already know how to implement it, the pull request is welcome!
4826 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2019-06-24 11:12](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/20#issuecomment-504965591):
4828 Hello @Wenzel and @nettrino,
4830 @adrianopol has added the JSON output feature (#21), please check the `--json` argument.
4832 #### <img src="https://avatars.githubusercontent.com/u/964610?u=f244bab6b14967638a88cef92752379e64b15996&v=4" width="50">[Wenzel](https://github.com/Wenzel) commented at [2019-07-07 12:51](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/20#issuecomment-508997348):
4834 Hi @a13xp0p0v , @adrianopol ,
4836 I would like to reopen this issue because I just tested the `--json` flag, and the output produced is not valid JSON.
4839 ![Screenshot_20190707_144843](https://user-images.githubusercontent.com/964610/60768633-84977d00-a0c6-11e9-978a-ebbb65e9ed11.png)
4842 Output example for `./kconfig-hardened-check.py -c /boot/config-5.1.12-300.fc30.x86_64 --json`
4844 [['CONFIG_BUG', 'y', 'defconfig', 'self_protection', 'OK'], ['CONFIG_STRICT_KERNEL_RWX', 'y', 'defconfig', 'self_protection', 'OK'], ['CONFIG_STACKPROTECTOR_STRONG', 'y', 'defconfig', 'self_protection', 'OK'], ['CONFIG_SLUB_DEBUG', 'y', 'defconfig', 'self_protection', 'OK'], ['CONFIG_STRICT_MODULE_RWX', 'y', 'defconfig', 'self_protection', 'OK'], ['CONFIG_PAGE_TABLE_ISOLATION', 'y', 'defconfig', 'self_protection', 'OK'], ['CONFIG_RANDOMIZE_MEMORY', 'y', 'defconfig', 'self_protection', 'OK'], ['CONFIG_RANDOMIZE_BASE', 'y', 'defconfig', 'self_protection', 'OK'], ['CONFIG_RETPOLINE', 'y', 'defconfig', 'self_protection', 'OK'], ['CONFIG_X86_SMAP', 'y', 'defconfig', 'self_protection', 'OK'], ['CONFIG_X86_INTEL_UMIP', 'y', 'defconfig', 'self_protection', 'OK'], ['CONFIG_SYN_COOKIES', 'y', 'defconfig', 'self_protection', 'OK'], ['CONFIG_VMAP_STACK', 'y', 'defconfig', 'self_protection', 'OK'], ['CONFIG_THREAD_INFO_IN_TASK', 'y', 'defconfig', 'self_protection', 'OK'], ['CONFIG_BUG_ON_DATA_CORRUPTION', 'y', 'kspp', 'self_protection', 'OK'], ['CONFIG_DEBUG_WX', 'y', 'kspp', 'self_protection', 'OK'], ['CONFIG_SCHED_STACK_END_CHECK', 'y', 'kspp', 'self_protection', 'FAIL: "is not set"'], ['CONFIG_SLAB_FREELIST_HARDENED', 'y', 'kspp', 'self_protection', 'OK'], ['CONFIG_SLAB_FREELIST_RANDOM', 'y', 'kspp', 'self_protection', 'OK'], ['CONFIG_FORTIFY_SOURCE', 'y', 'kspp', 'self_protection', 'OK'], ['CONFIG_GCC_PLUGINS', 'y', 'kspp', 'self_protection', 'FAIL: not found'], ['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_DEBUG_LIST', 'y', 'kspp', 'self_protection', 'OK'], ['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_PAGE_POISONING', 'y', 'kspp', 'self_protection', 'FAIL: "is not set"'], ['CONFIG_HARDENED_USERCOPY', 'y', 'kspp', 'self_protection', 'OK'], ['CONFIG_HARDENED_USERCOPY_FALLBACK', 'is not set', 'kspp', 'self_protection', 'FAIL: "y"'], ['CONFIG_MODULE_SIG', 'y', 'kspp', 'self_protection', 'OK'], ['CONFIG_MODULE_SIG_ALL', 'y', 'kspp', 'self_protection', 'OK'], ['CONFIG_MODULE_SIG_SHA512', 'y', 'kspp', 'self_protection', 'FAIL: "is not set"'], ['CONFIG_MODULE_SIG_FORCE', 'y', 'kspp', 'self_protection', 'FAIL: "is not set"'], ['CONFIG_DEFAULT_MMAP_MIN_ADDR', '65536', 'kspp', 'self_protection', 'OK'], ['CONFIG_REFCOUNT_FULL', 'y', 'kspp', 'self_protection', 'FAIL: "is not set"'], ['CONFIG_LOCK_DOWN_KERNEL', 'y', 'clipos', 'self_protection', 'OK'], ['CONFIG_SECURITY_DMESG_RESTRICT', 'y', 'clipos', 'self_protection', 'FAIL: "is not set"'], ['CONFIG_DEBUG_VIRTUAL', 'y', 'clipos', 'self_protection', 'FAIL: "is not set"'], ['CONFIG_STATIC_USERMODEHELPER', 'y', 'clipos', 'self_protection', 'FAIL: "is not set"'], ['CONFIG_SLAB_MERGE_DEFAULT', 'is not set', 'clipos', 'self_protection', 'FAIL: "y"'], ['CONFIG_GCC_PLUGIN_RANDSTRUCT_PERFORMANCE', 'is not set', 'clipos', 'self_protection', 'FAIL: CONFIG_GCC_PLUGIN_RANDSTRUCT is needed'], ['CONFIG_GCC_PLUGIN_STACKLEAK', 'y', 'clipos', 'self_protection', 'FAIL: not found'], ['CONFIG_STACKLEAK_METRICS', 'is not set', 'clipos', 'self_protection', 'FAIL: CONFIG_GCC_PLUGIN_STACKLEAK is needed'], ['CONFIG_STACKLEAK_RUNTIME_DISABLE', 'is not set', 'clipos', 'self_protection', 'FAIL: CONFIG_GCC_PLUGIN_STACKLEAK is needed'], ['CONFIG_RANDOM_TRUST_CPU', 'is not set', 'clipos', 'self_protection', 'FAIL: "y"'], ['CONFIG_MICROCODE', 'y', 'clipos', 'self_protection', 'OK'], ['CONFIG_IOMMU_SUPPORT', 'y', 'clipos', 'self_protection', 'OK'], ['CONFIG_INTEL_IOMMU', 'y', 'clipos', 'self_protection', 'OK'], ['CONFIG_INTEL_IOMMU_SVM', 'y', 'clipos', 'self_protection', 'OK'], ['CONFIG_INTEL_IOMMU_DEFAULT_ON', '
4845 y', 'clipos', 'self_protection', 'FAIL: "is not set"'], ['CONFIG_AMD_IOMMU', 'y', 'my', 'self_protection', 'OK'], ['CONFIG_AMD_IOMMU_V2', 'y', 'my', 'self_protection', 'FAIL: "m"'], ['CONFIG_SLUB_DEBUG_ON', 'y', 'my', 'self_protection', 'FAIL: "is not set"'], ['CONFIG_SECURITY_LOADPIN', 'y', 'my', 'self_protection', 'FAIL: "is not set"'], ['CONFIG_RESET_ATTACK_MITIGATION', 'y', 'my', 'self_protection', 'FAIL: "is not set"'], ['CONFIG_PAGE_POISONING_NO_SANITY', 'is not set', 'my', 'self_protection', 'FAIL: CONFIG_PAGE_POISONING is needed'], ['CONFIG_PAGE_POISONING_ZERO', 'is not set', 'my', 'self_protection', 'FAIL: CONFIG_PAGE_POISONING is needed'], ['CONFIG_SECURITY', 'y', 'defconfig', 'security_policy', 'OK'], ['CONFIG_SECURITY_YAMA', 'y', 'kspp', 'security_policy', 'OK'], ['CONFIG_SECCOMP', 'y', 'defconfig', 'cut_attack_surface', 'OK'], ['CONFIG_SECCOMP_FILTER', 'y', 'defconfig', 'cut_attack_surface', 'OK'], ['CONFIG_STRICT_DEVMEM', 'y', 'defconfig', 'cut_attack_surface', 'OK'], ['CONFIG_MODULES', 'is not set', 'kspp', 'cut_attack_surface', 'FAIL: "y"'], ['CONFIG_DEVMEM', 'is not set', 'kspp', 'cut_attack_surface', 'FAIL: "y"'], ['CONFIG_IO_STRICT_DEVMEM', 'y', 'kspp', 'cut_attack_surface', 'OK'], ['CONFIG_ACPI_CUSTOM_METHOD', 'is not set', 'kspp', 'cut_attack_surface', 'FAIL: "m"'], ['CONFIG_COMPAT_BRK', 'is not set', 'kspp', 'cut_attack_surface', 'OK'], ['CONFIG_DEVKMEM', 'is not set', 'kspp', 'cut_attack_surface', 'OK'], ['CONFIG_COMPAT_VDSO', 'is not set', 'kspp', 'cut_attack_surface', 'OK'], ['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', 'OK'], ['CONFIG_HIBERNATION', 'is not set', 'kspp', 'cut_attack_surface', 'FAIL: "y"'], ['CONFIG_LEGACY_VSYSCALL_NONE', 'y', 'kspp', 'cut_attack_surface', 'FAIL: "is not set"'], ['CONFIG_IA32_EMULATION', 'is not set', 'kspp', 'cut_attack_surface', 'FAIL: "y"'], ['CONFIG_X86_X32', 'is not set', 'kspp', 'cut_attack_surface', 'OK'], ['CONFIG_MODIFY_LDT_SYSCALL', 'is not set', 'kspp', 'cut_attack_surface', 'FAIL: "y"'], ['CONFIG_X86_PTDUMP', 'is not set', 'grsecurity', 'cut_attack_surface', 'OK'], ['CONFIG_ZSMALLOC_STAT', 'is not set', 'grsecurity', 'cut_attack_surface', 'OK'], ['CONFIG_PAGE_OWNER', 'is not set', 'grsecurity', 'cut_attack_surface', 'OK'], ['CONFIG_DEBUG_KMEMLEAK', 'is not set', 'grsecurity', 'cut_attack_surface', 'OK'], ['CONFIG_BINFMT_AOUT', 'is not set', 'grsecurity', 'cut_attack_surface', 'OK: not found'], ['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', 'OK'], ['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', 'OK'], ['CONFIG_ACPI_TABLE_UPGRADE', 'is not set', 'lockdown', 'cut_attack_surface', 'FAIL: "y"'], ['CONFIG_ACPI_APEI_EINJ', 'is not set', 'lockdown', 'cut_attack_surface', 'FAIL: "m"'], ['CONFIG_PROFILING', 'is not set', '
4846 lockdown', 'cut_attack_surface', 'FAIL: "y"'], ['CONFIG_BPF_SYSCALL', 'is not set', 'lockdown', 'cut_attack_surface', 'FAIL: "y"'], ['CONFIG_MMIOTRACE_TEST', 'is not set', 'lockdown', 'cut_attack_surface', 'OK'], ['CONFIG_KSM', 'is not set', 'clipos', 'cut_attack_surface', 'FAIL: "y"'], ['CONFIG_IKCONFIG', 'is not set', 'clipos', 'cut_attack_surface', 'OK'], ['CONFIG_KALLSYMS', 'is not set', 'clipos', 'cut_attack_surface', 'FAIL: "y"'], ['CONFIG_X86_VSYSCALL_EMULATION', 'is not set', 'clipos', 'cut_attack_surface', 'FAIL: "y"'], ['CONFIG_MAGIC_SYSRQ', 'is not set', 'clipos', 'cut_attack_surface', 'FAIL: "y"'], ['CONFIG_KEXEC_FILE', 'is not set', 'clipos', 'cut_attack_surface', 'FAIL: "y"'], ['CONFIG_USER_NS', 'is not set', 'clipos', 'cut_attack_surface', 'FAIL: "y"'], ['CONFIG_LDISC_AUTOLOAD', 'is not set', 'clipos', 'cut_attack_surface', 'FAIL: "y"'], ['CONFIG_MMIOTRACE', 'is not set', 'my', 'cut_attack_surface', 'FAIL: "y"'], ['CONFIG_LIVEPATCH', 'is not set', 'my', 'cut_attack_surface', 'OK'], ['CONFIG_IP_DCCP', 'is not set', 'my', 'cut_attack_surface', 'OK'], ['CONFIG_IP_SCTP', 'is not set', 'my', 'cut_attack_surface', 'FAIL: "m"'], ['CONFIG_FTRACE', 'is not set', 'my', 'cut_attack_surface', 'FAIL: "y"'], ['CONFIG_BPF_JIT', 'is not set', 'my', 'cut_attack_surface', 'FAIL: "y"'], ['CONFIG_ARCH_MMAP_RND_BITS', '32', 'clipos', 'userspace_protection', 'FAIL: "28"']]
4849 Could you rework the PR and check the JSON output ?
4850 I think it might be a trivial fix, like double quotes instead of simple quotes:
4851 ![Screenshot_20190707_145217](https://user-images.githubusercontent.com/964610/60768672-e0620600-a0c6-11e9-80f8-4454265c50fc.png)
4856 #### <img src="https://avatars.githubusercontent.com/u/964610?u=f244bab6b14967638a88cef92752379e64b15996&v=4" width="50">[Wenzel](https://github.com/Wenzel) commented at [2019-07-07 12:55](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/20#issuecomment-508997636):
4858 It should be more robust to use `json.dump(obj)` or `json.dumps(string)` instead of printing your own JSON.
4859 https://github.com/a13xp0p0v/kconfig-hardened-check/blob/master/kconfig-hardened-check.py#L377
4861 #### <img src="https://avatars.githubusercontent.com/u/4029800?u=86702d3f2d50ee01ef1c572ef26b1ea1318f28da&v=4" width="50">[adrianopol](https://github.com/adrianopol) commented at [2019-07-07 19:28](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/20#issuecomment-509024571):
4865 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2019-07-08 14:12](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/20#issuecomment-509241942):
4867 @Wenzel, thanks for the report.
4868 @adrianopol, thanks for the fix, merged.
4869 Double-checked it in json validator, now it should be fine.
4872 -------------------------------------------------------------------------------
4874 # [\#19 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/19) `closed`: Compare with clipos recommendations
4876 #### <img src="https://avatars.githubusercontent.com/u/4661917?u=bb7aeb3c77839cea055b49b80168666b36315f3d&v=4" width="50">[theLOICofFRANCE](https://github.com/theLOICofFRANCE) opened issue at [2019-06-01 12:08](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/19):
4880 I monitoring an interesting project ([CLIP OS ](https://github.com/clipos)) in my country and some options should be compared with your project.
4882 Here are some options that are missing or different from kconfig-hardened-check :
4888 CONFIG_SLAB_HARDENED=y
4889 CONFIG_SLAB_CANARY=y
4890 CONFIG_SLAB_SANITIZE=y
4891 CONFIG_SLAB_SANITIZE_VERIFY=y
4892 CONFIG_GCC_PLUGIN_RANDSTRUCT_PERFORMANCE=n
4894 CONFIG_X86_VSYSCALL_EMULATION=n
4900 CONFIG_ARCH_RANDOM=y
4901 CONFIG_X86_INTEL_MPX=n
4902 CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS=n
4906 CONFIG_RANDOM_TRUST_CPU=n
4907 CONFIG_IOMMU_SUPPORT=y
4908 CONFIG_INTEL_IOMMU=y
4909 CONFIG_INTEL_IOMMU_SVM=y
4910 CONFIG_INTEL_IOMMU_DEFAULT_ON=y
4911 CONFIG_MAGIC_SYSRQ=n
4912 CONFIG_DEBUG_KERNEL=y
4913 CONFIG_DEBUG_VIRTUAL=y
4914 CONFIG_SLUB_DEBUG_ON=n
4915 CONFIG_PANIC_ON_OOPS=y
4916 CONFIG_PANIC_TIMEOUT=-1
4918 CONFIG_FORTIFY_SOURCE_STRICT_STRING=n
4919 CONFIG_STATIC_USERMODEHELPER_PATH=""
4920 CONFIG_SECURITY_SELINUX_BOOTPARAM=n
4922 CONFIG_SECURITY_PERF_EVENTS_RESTRICT=y
4923 CONFIG_PAGE_SANITIZE_VERIFY=y
4924 CONFIG_SECURITY_TIOCSTI_RESTRICT=y
4925 CONFIG_LOCK_DOWN_MANDATORY=y
4926 CONFIG_STACKLEAK_TRACK_MIN_SIZE=100
4927 CONFIG_STACKLEAK_METRICS=n
4928 CONFIG_STACKLEAK_RUNTIME_DISABLE=n
4931 Details of the options are available here:
4932 https://docs.clip-os.org/clipos/kernel.html#configuration
4936 #### <img src="https://avatars.githubusercontent.com/u/4661917?u=bb7aeb3c77839cea055b49b80168666b36315f3d&v=4" width="50">[theLOICofFRANCE](https://github.com/theLOICofFRANCE) commented at [2019-06-01 12:12](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/19#issuecomment-497939852):
4938 Even if I'm not a fan of black magic (see [this](https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/issues/3)), the CONFIG_MICROCODE=y option is now essential.
4940 #### <img src="https://avatars.githubusercontent.com/u/32568352?v=4" width="50">[Bernhard40](https://github.com/Bernhard40) commented at [2019-06-02 11:33](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/19#issuecomment-498022889):
4942 Some of those options are available only in linux-hardened patchset thus not applicable here. Others like CONFIG_INTEGRITY=n or CONFIG_INTEL_TXT=n are specific to clipos and general recommendations would be the opposite.
4944 #### <img src="https://avatars.githubusercontent.com/u/4661917?u=bb7aeb3c77839cea055b49b80168666b36315f3d&v=4" width="50">[theLOICofFRANCE](https://github.com/theLOICofFRANCE) commented at [2019-06-02 15:13](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/19#issuecomment-498039692):
4946 Yes, you're right, I did a quick extraction.
4947 Are there any options you think are interesting?
4949 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2019-06-03 10:23](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/19#issuecomment-498201117):
4951 Cool! @HacKurx, learning the CLIP OS config is a nice idea.
4953 Thanks for the link, I'll check the options from their documentation and choose relevant for the script.
4955 Do you have their full kernel config for adding to `config_files`?
4957 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2019-06-03 18:16](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/19#issuecomment-498368130):
4959 Hi @HacKurx and @Bernhard40,
4960 I've added new checks based on the CLIP OS recommendations.
4962 #### <img src="https://avatars.githubusercontent.com/u/4661917?u=bb7aeb3c77839cea055b49b80168666b36315f3d&v=4" width="50">[theLOICofFRANCE](https://github.com/theLOICofFRANCE) commented at [2019-06-03 19:02](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/19#issuecomment-498384402):
4968 > Do you have their full kernel config for adding to config_files?
4970 The configuration is automatically generated by a script in their own kernel source:
4971 https://github.com/clipos/src_platform_config-linux-hardware/tree/master/
4972 https://github.com/clipos/src_external_linux
4974 I can ask @tsautereau-anssi for confirm it.
4978 #### <img src="https://avatars.githubusercontent.com/u/32568352?v=4" width="50">[Bernhard40](https://github.com/Bernhard40) commented at [2019-06-04 10:20](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/19#issuecomment-498612884):
4980 @a13xp0p0v `CONFIG_X86_MSR` could also be set to `m` which I think should be ok.
4982 At least Ubuntu, Debian, Archlinux and opensSUSE have it set this way.
4984 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2019-06-04 22:12](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/19#issuecomment-498862822):
4986 >@a13xp0p0v CONFIG_X86_MSR could also be set to m which I think should be ok.
4987 At least Ubuntu, Debian, Archlinux and opensSUSE have it set this way.
4989 @Bernhard40, thanks for pointing this out.
4990 I double-checked and dropped this recommendation - IMO it's wrong.
4991 CONFIG_X86_MSR provides access from the userspace to the x86 MSRs via char devices.
4992 Kernel doesn't need it for mitigating CPU bugs.
4994 I've created an issue with a question for the CLIP OS project:
4995 https://github.com/clipos/src_platform_config-linux-hardware/issues/1
4998 -------------------------------------------------------------------------------
5000 # [\#18 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/18) `merged`: Update pentoo config link
5002 #### <img src="https://avatars.githubusercontent.com/u/4661917?u=bb7aeb3c77839cea055b49b80168666b36315f3d&v=4" width="50">[theLOICofFRANCE](https://github.com/theLOICofFRANCE) opened issue at [2019-06-01 12:02](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/18):
5009 -------------------------------------------------------------------------------
5011 # [\#17 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/17) `merged`: Update and add config
5013 #### <img src="https://avatars.githubusercontent.com/u/4661917?u=bb7aeb3c77839cea055b49b80168666b36315f3d&v=4" width="50">[theLOICofFRANCE](https://github.com/theLOICofFRANCE) opened issue at [2019-05-12 15:09](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/17):
5017 Here are some updates and the addition of two distributions.
5023 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2019-05-17 15:13](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/17#issuecomment-493490338):
5026 Thanks for the update!
5029 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2019-05-17 15:20](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/17#issuecomment-493492947):
5031 @HacKurx, may I ask you to add/update information in the `links.txt` as well?
5034 #### <img src="https://avatars.githubusercontent.com/u/4661917?u=bb7aeb3c77839cea055b49b80168666b36315f3d&v=4" width="50">[theLOICofFRANCE](https://github.com/theLOICofFRANCE) commented at [2019-05-25 16:59](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/17#issuecomment-495933123):
5038 Thank's for the merge. Some configuration files do not have a url (debian, ubuntu, rhel), I had to extract the configuration from the kernel package.
5039 I am willing to maintain all config occasionally.
5041 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2019-05-27 14:39](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/17#issuecomment-496234113):
5045 I mean some of your new configs now have out-of-date links in `links.txt`.
5046 For example, Alpine, Arch and Pentoo. Could you please update the links?
5049 -------------------------------------------------------------------------------
5051 # [\#16 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/16) `closed`: After kspp settings server if freezed
5053 #### <img src="https://avatars.githubusercontent.com/u/3471772?v=4" width="50">[bryn1u](https://github.com/bryn1u) opened issue at [2019-04-11 12:37](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/16):
5057 When i setup server Centos 7 with kspp settings (config below) and i install www hosting panels like Cpanel, CWP panel or ISPmanager and then reboot server, many services are freezed. My network is disabled i cant run with command systemct start network, i cant reboot server and etc... when i push these commend nothing happen, just waiting and waiting.
5061 [+] config check is finished: 'OK' - 62 / 'FAIL' - 41
5062 [root@proton kconfig-hardened-check]# ls
5063 config_files kconfig-hardened-check.py LICENSE README.md
5064 [root@proton kconfig-hardened-check]# ./kconfig-hardened-check.py -c /boot/config-5.0.4 > kspp_setting
5065 [root@proton kconfig-hardened-check]# cat kspp_setting
5066 [+] Trying to detect architecture in "/boot/config-5.0.4"...
5067 [+] Detected architecture: X86_64
5068 [+] Checking "/boot/config-5.0.4" against hardening preferences...
5069 option name | desired val | decision | reason || check result
5070 ===================================================================================================================
5071 CONFIG_BUG | y |defconfig | self_protection || OK
5072 CONFIG_STRICT_KERNEL_RWX | y |defconfig | self_protection || OK
5073 CONFIG_STACKPROTECTOR_STRONG | y |defconfig | self_protection || OK
5074 CONFIG_SLUB_DEBUG | y |defconfig | self_protection || OK
5075 CONFIG_STRICT_MODULE_RWX | y |defconfig | self_protection || OK
5076 CONFIG_PAGE_TABLE_ISOLATION | y |defconfig | self_protection || OK
5077 CONFIG_RANDOMIZE_MEMORY | y |defconfig | self_protection || OK
5078 CONFIG_RANDOMIZE_BASE | y |defconfig | self_protection || OK
5079 CONFIG_RETPOLINE | y |defconfig | self_protection || OK
5080 CONFIG_X86_SMAP | y |defconfig | self_protection || OK
5081 CONFIG_X86_INTEL_UMIP | y |defconfig | self_protection || OK
5082 CONFIG_SYN_COOKIES | y |defconfig | self_protection || OK
5083 CONFIG_VMAP_STACK | y |defconfig | self_protection || OK
5084 CONFIG_THREAD_INFO_IN_TASK | y |defconfig | self_protection || OK
5085 CONFIG_BUG_ON_DATA_CORRUPTION | y | kspp | self_protection || OK
5086 CONFIG_DEBUG_WX | y | kspp | self_protection || OK
5087 CONFIG_SCHED_STACK_END_CHECK | y | kspp | self_protection || OK
5088 CONFIG_SLAB_FREELIST_HARDENED | y | kspp | self_protection || OK
5089 CONFIG_SLAB_FREELIST_RANDOM | y | kspp | self_protection || OK
5090 CONFIG_FORTIFY_SOURCE | y | kspp | self_protection || OK
5091 CONFIG_GCC_PLUGINS | y | kspp | self_protection || OK
5092 CONFIG_GCC_PLUGIN_RANDSTRUCT | y | kspp | self_protection || OK
5093 CONFIG_GCC_PLUGIN_STRUCTLEAK | y | kspp | self_protection || OK
5094 CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL | y | kspp | self_protection || OK
5095 CONFIG_GCC_PLUGIN_LATENT_ENTROPY | y | kspp | self_protection || OK
5096 CONFIG_DEBUG_LIST | y | kspp | self_protection || OK
5097 CONFIG_DEBUG_SG | y | kspp | self_protection || OK
5098 CONFIG_DEBUG_CREDENTIALS | y | kspp | self_protection || OK
5099 CONFIG_DEBUG_NOTIFIERS | y | kspp | self_protection || OK
5100 CONFIG_PAGE_POISONING | y | kspp | self_protection || OK
5101 CONFIG_HARDENED_USERCOPY | y | kspp | self_protection || OK
5102 CONFIG_HARDENED_USERCOPY_FALLBACK | is not set | kspp | self_protection || OK
5103 CONFIG_MODULE_SIG | y | kspp | self_protection || OK
5104 CONFIG_MODULE_SIG_ALL | y | kspp | self_protection || OK
5105 CONFIG_MODULE_SIG_SHA512 | y | kspp | self_protection || FAIL: "is not set"
5106 CONFIG_MODULE_SIG_FORCE | y | kspp | self_protection || FAIL: "is not set"
5107 CONFIG_DEFAULT_MMAP_MIN_ADDR | 65536 | kspp | self_protection || OK
5108 CONFIG_REFCOUNT_FULL | y | kspp | self_protection || OK
5109 CONFIG_GCC_PLUGIN_STACKLEAK | y | my | self_protection || OK
5110 CONFIG_LOCK_DOWN_KERNEL | y | my | self_protection || FAIL: not found
5111 CONFIG_SLUB_DEBUG_ON | y | my | self_protection || OK
5112 CONFIG_SECURITY_DMESG_RESTRICT | y | my | self_protection || OK
5113 CONFIG_STATIC_USERMODEHELPER | y | my | self_protection || FAIL: "is not set"
5114 CONFIG_SECURITY_LOADPIN | y | my | self_protection || FAIL: "is not set"
5115 CONFIG_RESET_ATTACK_MITIGATION | y | my | self_protection || OK
5116 CONFIG_SLAB_MERGE_DEFAULT | is not set | my | self_protection || FAIL: "y"
5117 CONFIG_PAGE_POISONING_NO_SANITY | is not set | my | self_protection || OK
5118 CONFIG_PAGE_POISONING_ZERO | is not set | my | self_protection || OK
5119 CONFIG_SECURITY | y |defconfig | security_policy || OK
5120 CONFIG_SECURITY_YAMA | y | kspp | security_policy || OK
5121 CONFIG_SECURITY_SELINUX_DISABLE | is not set | kspp | security_policy || OK
5122 CONFIG_SECCOMP | y |defconfig | cut_attack_surface || OK
5123 CONFIG_SECCOMP_FILTER | y |defconfig | cut_attack_surface || OK
5124 CONFIG_STRICT_DEVMEM | y |defconfig | cut_attack_surface || OK
5125 CONFIG_MODULES | is not set | kspp | cut_attack_surface || FAIL: "y"
5126 CONFIG_DEVMEM | is not set | kspp | cut_attack_surface || FAIL: "y"
5127 CONFIG_IO_STRICT_DEVMEM | y | kspp | cut_attack_surface || FAIL: "is not set"
5128 CONFIG_ACPI_CUSTOM_METHOD | is not set | kspp | cut_attack_surface || FAIL: "m"
5129 CONFIG_COMPAT_BRK | is not set | kspp | cut_attack_surface || OK
5130 CONFIG_DEVKMEM | is not set | kspp | cut_attack_surface || OK
5131 CONFIG_COMPAT_VDSO | is not set | kspp | cut_attack_surface || OK
5132 CONFIG_BINFMT_MISC | is not set | kspp | cut_attack_surface || FAIL: "m"
5133 CONFIG_INET_DIAG | is not set | kspp | cut_attack_surface || FAIL: "m"
5134 CONFIG_KEXEC | is not set | kspp | cut_attack_surface || FAIL: "y"
5135 CONFIG_PROC_KCORE | is not set | kspp | cut_attack_surface || FAIL: "y"
5136 CONFIG_LEGACY_PTYS | is not set | kspp | cut_attack_surface || OK
5137 CONFIG_HIBERNATION | is not set | kspp | cut_attack_surface || OK
5138 CONFIG_LEGACY_VSYSCALL_NONE | y | kspp | cut_attack_surface || FAIL: "is not set"
5139 CONFIG_IA32_EMULATION | is not set | kspp | cut_attack_surface || FAIL: "y"
5140 CONFIG_X86_X32 | is not set | kspp | cut_attack_surface || OK
5141 CONFIG_MODIFY_LDT_SYSCALL | is not set | kspp | cut_attack_surface || FAIL: "y"
5142 CONFIG_X86_PTDUMP | is not set |grsecurity| cut_attack_surface || OK
5143 CONFIG_ZSMALLOC_STAT | is not set |grsecurity| cut_attack_surface || OK
5144 CONFIG_PAGE_OWNER | is not set |grsecurity| cut_attack_surface || OK
5145 CONFIG_DEBUG_KMEMLEAK | is not set |grsecurity| cut_attack_surface || OK
5146 CONFIG_BINFMT_AOUT | is not set |grsecurity| cut_attack_surface || OK: not found
5147 CONFIG_KPROBES | is not set |grsecurity| cut_attack_surface || FAIL: "y"
5148 CONFIG_UPROBES | is not set |grsecurity| cut_attack_surface || FAIL: "y"
5149 CONFIG_GENERIC_TRACER | is not set |grsecurity| cut_attack_surface || FAIL: "y"
5150 CONFIG_PROC_VMCORE | is not set |grsecurity| cut_attack_surface || FAIL: "y"
5151 CONFIG_PROC_PAGE_MONITOR | is not set |grsecurity| cut_attack_surface || FAIL: "y"
5152 CONFIG_USELIB | is not set |grsecurity| cut_attack_surface || FAIL: "y"
5153 CONFIG_CHECKPOINT_RESTORE | is not set |grsecurity| cut_attack_surface || FAIL: "y"
5154 CONFIG_USERFAULTFD | is not set |grsecurity| cut_attack_surface || FAIL: "y"
5155 CONFIG_HWPOISON_INJECT | is not set |grsecurity| cut_attack_surface || FAIL: "m"
5156 CONFIG_MEM_SOFT_DIRTY | is not set |grsecurity| cut_attack_surface || FAIL: "y"
5157 CONFIG_DEVPORT | is not set |grsecurity| cut_attack_surface || FAIL: "y"
5158 CONFIG_DEBUG_FS | is not set |grsecurity| cut_attack_surface || FAIL: "y"
5159 CONFIG_NOTIFIER_ERROR_INJECTION | is not set |grsecurity| cut_attack_surface || OK
5160 CONFIG_ACPI_TABLE_UPGRADE | is not set | lockdown | cut_attack_surface || FAIL: "y"
5161 CONFIG_ACPI_APEI_EINJ | is not set | lockdown | cut_attack_surface || FAIL: "m"
5162 CONFIG_PROFILING | is not set | lockdown | cut_attack_surface || FAIL: "y"
5163 CONFIG_BPF_SYSCALL | is not set | lockdown | cut_attack_surface || FAIL: "y"
5164 CONFIG_MMIOTRACE_TEST | is not set | lockdown | cut_attack_surface || OK: not found
5165 CONFIG_MMIOTRACE | is not set | my | cut_attack_surface || OK
5166 CONFIG_KEXEC_FILE | is not set | my | cut_attack_surface || FAIL: "y"
5167 CONFIG_LIVEPATCH | is not set | my | cut_attack_surface || FAIL: "y"
5168 CONFIG_USER_NS | is not set | my | cut_attack_surface || FAIL: "y"
5169 CONFIG_IP_DCCP | is not set | my | cut_attack_surface || FAIL: "m"
5170 CONFIG_IP_SCTP | is not set | my | cut_attack_surface || FAIL: "m"
5171 CONFIG_FTRACE | is not set | my | cut_attack_surface || FAIL: "y"
5172 CONFIG_BPF_JIT | is not set | my | cut_attack_surface || FAIL: "y"
5173 CONFIG_ARCH_MMAP_RND_BITS | 32 | my |userspace_protection|| FAIL: "28"
5175 [+] config check is finished: 'OK' - 62 / 'FAIL' - 41
5178 Someone can help me with this, i would be graceful ?
5179 Could be impact because of this ?
5180 CONFIG_GCC_PLUGINS | y | kspp | self_protection || OK
5181 CONFIG_GCC_PLUGIN_RANDSTRUCT | y | kspp | self_protection || OK
5182 CONFIG_GCC_PLUGIN_STRUCTLEAK | y | kspp | self_protection || OK
5183 CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL | y | kspp | self_protection || OK
5184 CONFIG_GCC_PLUGIN_LATENT_ENTROPY | y | kspp | self_protection || OK
5186 #### <img src="https://avatars.githubusercontent.com/u/32568352?v=4" width="50">[Bernhard40](https://github.com/Bernhard40) commented at [2019-04-11 19:26](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/16#issuecomment-482272466):
5188 Could you post `dmesg` output?
5190 #### <img src="https://avatars.githubusercontent.com/u/3471772?v=4" width="50">[bryn1u](https://github.com/bryn1u) commented at [2019-04-14 13:50](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/16#issuecomment-482980574):
5195 I put my KSPP config again but as a screen: https://ufile.io/epovx3h9
5196 Second part of KSPP config: https://ufile.io/n4087vqn
5199 dmesg 1 - https://ufile.io/2reh95ag
5200 dmesg 2 - https://ufile.io/mkt1sv73
5204 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2019-04-14 20:45](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/16#issuecomment-483056865):
5208 As I can understand, you are trying to run Centos 7 with the mainline kernel (5.0.7).
5209 I would recommend you to move by smaller steps.
5211 First -- update your kernel, but use `make oldconfig` with the original kernel config from Centos 7.
5212 Maybe something will break even after this step.
5214 And then try to enable hardening options one by one performing your functional test after each change.
5215 You can speed up this procedure using bisection method (between the initial and final configs).
5217 @Bernhard40, any other advices?
5220 -------------------------------------------------------------------------------
5222 # [\#15 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/15) `closed`: After used KSPP settings, modules ext4, xfs, iptables are disabled.
5224 #### <img src="https://avatars.githubusercontent.com/u/3471772?v=4" width="50">[bryn1u](https://github.com/bryn1u) opened issue at [2019-03-22 13:09](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/15):
5228 Im using centos 7 and i have a weird problem after kernel compilation. Below is my config kernel with KSPP options enabled.
5229 ![kernel1](https://user-images.githubusercontent.com/3471772/54824577-a271db00-4cab-11e9-92fc-4974a17b41d1.png)
5230 ![kernel2](https://user-images.githubusercontent.com/3471772/54824582-a69df880-4cab-11e9-9c34-604be7280fd1.png)
5231 ![kernel3](https://user-images.githubusercontent.com/3471772/54824586-ab62ac80-4cab-11e9-98af-5b5c98baa232.png)
5233 I have no idea why after kernel compiling, modules like for example ext4, xfs and iptables are disabled. I can't login to the system because ext4 module is disable. The only way is to compiling permanently not as a module. But iptables still dosen't work. Which options are responsible for these "issues" ?
5237 #### <img src="https://avatars.githubusercontent.com/u/32568352?v=4" width="50">[Bernhard40](https://github.com/Bernhard40) commented at [2019-03-23 17:18](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/15#issuecomment-475888038):
5239 It could be caused by `CONFIG_STATIC_USERMODEHELPER`. This option needs userspace support which is pretty much non-existent in distros, don't use it.
5241 #### <img src="https://avatars.githubusercontent.com/u/3471772?v=4" width="50">[bryn1u](https://github.com/bryn1u) commented at [2019-03-23 20:07](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/15#issuecomment-475900478):
5243 Thanks Bernhard40. I disabled usermodhelper and it works.
5245 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2019-03-24 11:35](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/15#issuecomment-475950377):
5249 @Bernhard40, thanks for your help!
5251 @bryn1u, I remember we have discussed with you that STATIC_USERMODEHELPER and SECURITY_LOADPIN influence module loading -- in #8.
5253 That's why the script has the following comments:
5255 checklist.append(OptCheck('STATIC_USERMODEHELPER', 'y', 'my', 'self_protection')) # needs userspace support (systemd)
5256 checklist.append(OptCheck('SECURITY_LOADPIN', 'y', 'my', 'self_protection')) # needs userspace support
5260 -------------------------------------------------------------------------------
5262 # [\#14 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/14) `closed`: User namespace useful especially when running containers
5264 #### <img src="https://avatars.githubusercontent.com/u/1397088?v=4" width="50">[jcberthon](https://github.com/jcberthon) opened issue at [2019-03-19 14:59](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/14):
5266 Maybe I'm wrong, but at least with Kernel 5.0 USER_NS is activated by default, so "is not set" or "y" should be equivalent. At the moment, it fails because it is "y" on my configuration.
5268 I know that activating USER_NS can cut the attack surface if it is not needed on a system. But on my system which are running containers, I want to have USER_NS activated. True this is not pure hardening of the Kernel, but if we take into account the whole kernel including the possibilities to use it to make containers, then USER_NS should be part of the whole hardening.
5270 #### <img src="https://avatars.githubusercontent.com/u/32568352?v=4" width="50">[Bernhard40](https://github.com/Bernhard40) commented at [2019-03-19 18:02](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/14#issuecomment-474500985):
5272 > Maybe I'm wrong, but at least with Kernel 5.0 USER_NS is activated by default, so "is not set" or "y" should be equivalent. At the moment, it fails because it is "y" on my configuration.
5274 "is not set" (disabled) is the opposite of "y" (enabled). The fail for "y" is desired outcome.
5276 > I know that activating USER_NS can cut the attack surface if it is not needed on a system. But on my system which are running containers, I want to have USER_NS activated. True this is not pure hardening of the Kernel, but if we take into account the whole kernel including the possibilities to use it to make containers, then USER_NS should be part of the whole hardening.
5278 You have it backwards. **Disabling** USER_NS [cuts the attack surface](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings#sysctls) and is part of kernel hardening. USER_NS (unprivileged) are considered inherently insecure and unfixable.
5280 #### <img src="https://avatars.githubusercontent.com/u/1397088?v=4" width="50">[jcberthon](https://github.com/jcberthon) commented at [2019-03-19 21:20](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/14#issuecomment-474589104):
5282 Thanks for clarifying the first point.
5284 Concerning the second point, I know that username space could increase the attack surface (heck I recall there was like 1,5-2 years ago a privilege escalation flaw with user ns - albeit mitigated when using SELinux), that's especially true if the functionality is not used.
5286 Anyway as the site you mention implicitly state, you can still compile it in and use the sysctl knob to disable it depending on your threat model and your usage of the kernel. So your application could test the sysctl knob rather than the kernel config. e.g. for people using Ubuntu but following the guideline (and because they do not need it), they can disable it in sysctl. When running your script, they should see that it is correctly disabled. What do you think?
5288 _Note that when someone requires to run containers, user ns can be a good evil. It increases some risk but diminished others. It is a trade off which depends on one's threat model. I mean that I clearly prefer to run my containers as non-root user with as little capabilities as possible, so I would not need user namespaces. But I'm also maintaining a CI/CD environment based on Docker, and there it is pretty hard to deny users the use of root inside spawned containers. I can control capabilities, seccomp and SELinux, but not the root user. There I really need user namespace, I have no other choice._
5290 Do you have a source for user ns being considered unfixable?
5292 Anyway, I understand your reasoning for marking user ns as insecure, so I would not be offended if you would decide to close this issue. Of course I would appreciate you take my suggestion into account :-)
5294 #### <img src="https://avatars.githubusercontent.com/u/203012?u=939d6d3b5ff0b9e46e911d8792a40c20408574e2&v=4" width="50">[anthraxx](https://github.com/anthraxx) commented at [2019-03-19 21:32](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/14#issuecomment-474592962):
5296 its not just one like 2 years ago, userns is an endless stream of privilege escalation flaws exposed by root designed functionality accessible to any unprivileged user inside a user namespace over and over again.
5298 In my personal opinion this should remain as is, being an error, and if your personal threat model doesn't care about user_ns you can just ignore the result of kconfig-hardened-check :cat:
5300 #### <img src="https://avatars.githubusercontent.com/u/1397088?v=4" width="50">[jcberthon](https://github.com/jcberthon) commented at [2019-03-19 22:44](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/14#issuecomment-474613483):
5302 Alright, and thanks for the feedback.
5304 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2019-03-20 06:49](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/14#issuecomment-474708180):
5308 I'm a bit late for the discussion.
5310 @jcberthon, thanks for your message.
5311 Yes, the `CONFIG_USER_NS` option provides some isolation between the userspace programs, but the script recommends disabling it to cut the attack surface __of the kernel__.
5312 Let me give the links describing the rationale:
5314 1. A nice LWN article about the corresponding LKML discussion: https://lwn.net/Articles/673597/
5315 2. A twitter thread about USER_NS and security: https://twitter.com/robertswiecki/status/1095447678949953541
5317 @jcberthon, you are right, USER_NS can be disabled using the sysctl - it is even mentioned in the script source code:
5319 checklist.append(OptCheck('USER_NS', 'is not set', 'my', 'cut_attack_surface')) # user.max_user_namespaces=0
5322 (by the way, adding the ability to check kernel boot parameters and sysctl would be really nice)
5324 Thanks for your discussion, I think I should add some clarification of `cut_attack_surface` to the README.
5326 #### <img src="https://avatars.githubusercontent.com/u/32568352?v=4" width="50">[Bernhard40](https://github.com/Bernhard40) commented at [2019-03-20 12:25](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/14#issuecomment-474807051):
5328 > (by the way, adding the ability to check kernel boot parameters and sysctl would be really nice)
5330 I'm not sure if it's good idea for this project to start scanning the running system for security features. I would vote for keeping it simple and just check chosen config file.
5332 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2019-03-20 13:23](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/14#issuecomment-474826371):
5334 > > (by the way, adding the ability to check kernel boot parameters and sysctl would be really nice)
5336 > I'm not sure if it's good idea for this project to start scanning the running system for security features. I would vote for keeping it simple and just check chosen config file.
5338 I agree, I don't like the privileged scanning of a system from the script too.
5339 I mean the script could analyze additional files with the needed information together with the kernel config.
5340 For example, right now we can say nothing about side-channel attack mitigations.
5342 #### <img src="https://avatars.githubusercontent.com/u/1397088?v=4" width="50">[jcberthon](https://github.com/jcberthon) commented at [2019-03-20 23:09](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/14#issuecomment-475063272):
5344 Thank you for the interesting read and for the updated README.
5347 -------------------------------------------------------------------------------
5349 # [\#13 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/13) `closed`: False positive and false negatives
5351 #### <img src="https://avatars.githubusercontent.com/u/32568352?v=4" width="50">[Bernhard40](https://github.com/Bernhard40) opened issue at [2019-03-09 19:13](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/13):
5353 `PAGE_POISONING_NO_SANITY` and `PAGE_POISONING_ZERO` depend on `PAGE_POISONING`. Checking distro config which doesn't enable `PAGE_POISONING` (like Fedora) will show `OK: not found` for the first two even as it's far from ok in this case.
5355 Currently script checks only for `MODULE_SIG_SHA512`. Some distros (like Fedora) may use `SHA256` which I think should be fine as well even if KSPP chose different example.
5357 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2019-03-11 16:27](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/13#issuecomment-471614645):
5360 Thanks for your report, let's discuss it.
5362 > PAGE_POISONING_NO_SANITY and PAGE_POISONING_ZERO depend on PAGE_POISONING. Checking distro config which doesn't enable PAGE_POISONING (like Fedora) will show OK: not found for the first two even as it's far from ok in this case.
5364 Yes, they are dependent on PAGE_POISONING.
5365 These options make this feature weaker, so the script is checking that they are __disabled__.
5366 When the PAGE_POISONING is disabled, the error count is incremented anyway.
5367 I don't think that checking PAGE_POISONING_NO_SANITY and PAGE_POISONING_ZERO should behave differently in that case.
5369 > Currently script checks only for MODULE_SIG_SHA512. Some distros (like Fedora) may use SHA256 which I think should be fine as well even if KSPP chose different example.
5371 The MODULE_SIG_SHA512 option is the KSPP recommendation, it is explicitly indicated by the script.
5372 Distros may have various reasons to do it differently.
5373 One day the script will support the error annotations (the idea is described here: https://github.com/a13xp0p0v/kconfig-hardened-check/pull/9#issuecomment-453810119)
5375 #### <img src="https://avatars.githubusercontent.com/u/32568352?v=4" width="50">[Bernhard40](https://github.com/Bernhard40) commented at [2019-03-12 00:07](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/13#issuecomment-471790830):
5377 > Yes, they are dependent on PAGE_POISONING.
5378 > These options make this feature weaker, so the script is checking that they are disabled.
5379 > When the PAGE_POISONING is disabled, the error count is incremented anyway.
5380 > I don't think that checking PAGE_POISONING_NO_SANITY and PAGE_POISONING_ZERO should behave differently in that case.
5382 Consider distro which have PAGE_POISONING=n. In check it gets:
5384 CONFIG_PAGE_POISONING | y | kspp | self_protection || FAIL: "is not set"
5385 CONFIG_PAGE_POISONING_NO_SANITY | is not set | my | self_protection || OK: not found
5386 CONFIG_PAGE_POISONING_ZERO | is not set | my | self_protection || OK: not found
5388 The sum is: 1xFAIL + 2xOK
5390 Now, consider distro which has PAGE_POISONING=y, PAGE_POISONING_NO_SANITY=y, PAGE_POISONING_ZERO=y. In check it gets:
5392 CONFIG_PAGE_POISONING | y | kspp | self_protection || OK
5393 CONFIG_PAGE_POISONING_NO_SANITY | is not set | my | self_protection || FAIL: "y"
5394 CONFIG_PAGE_POISONING_ZERO | is not set | my | self_protection || FAIL: "y"
5396 The sum is: 2xFAIL + 1xOK
5398 The check shows that distro which disables PAGE_POISONING completely is better than one which enables its weaker version! Specifically for fedora it's 52 errors with the former (actual config) vs 53 errors with the latter.
5400 > The MODULE_SIG_SHA512 option is the KSPP recommendation, it is explicitly indicated by the script.
5402 I read this recommendation as _sign your modules_ rather than _sign your modules using SHA512_. The KSPP page says [But if CONFIG_MODULE=y is needed, at least they must be signed with a per-build key](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings#CONFIGs). Below they show an example with SHA512. I highly doubt they meant SHA512 explicitly and nothing else. IMO they just used one example because iterating it for SHA256/SHA384 would be rather redundant. You may ask Kees about what he had in mind when he wrote this.
5404 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2019-03-12 15:31](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/13#issuecomment-472049899):
5406 > The check shows that distro which disables PAGE_POISONING completely is better than one which enables its weaker version! Specifically for fedora it's 52 errors with the former (actual config) vs 53 errors with the latter.
5408 Right. Please have a look how I've solved this issue.
5409 - I've implemented the AND check: 555b588e7b8a620ee57d53ef771e3b128590de45.
5410 - It's now used for PAGE_POISONING_NO_SANITY and PAGE_POISONING_ZERO - they are not checked if PAGE_POISONING is off: a314e4f1df3893864e398ea8565fefdfc036169b.
5411 - The same approach for HARDENED_USERCOPY_FALLBACK: c83dc6c7c804987999296afba385b2349bdda9ac.
5412 - And I improved the output of final results: 43920b20672cd603f7d5e02544a951eec914636b. Now OKs are counted too.
5414 > You may ask Kees about what he had in mind when he wrote this.
5416 Ok, I will remember that. There are several things which can be added to KSPP wiki. I'll work on that later.
5418 #### <img src="https://avatars.githubusercontent.com/u/32568352?v=4" width="50">[Bernhard40](https://github.com/Bernhard40) commented at [2019-03-12 17:53](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/13#issuecomment-472112024):
5420 > It's now used for PAGE_POISONING_NO_SANITY and PAGE_POISONING_ZERO - they are not checked if PAGE_POISONING is off:
5422 You could also always mark them as failed in that case like `FAIL: "dependency missing"`. That would prevent FAIL count from increasing when enabling only PAGE_POISONING.
5424 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2019-03-12 21:54](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/13#issuecomment-472196588):
5426 > You could also always mark them as failed in that case like FAIL: "dependency missing"
5428 @Bernhard40, nice idea, thank you.
5429 Implemented in d9aca2d28e9f95266bca2da09625d7d2c885a6b2.
5432 -------------------------------------------------------------------------------
5434 # [\#12 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/12) `closed`: CONFIG_MODULE_SIG_FORCE shouldn't be checked if CONFIG_MODULES is not set
5436 #### <img src="https://avatars.githubusercontent.com/u/990588?v=4" width="50">[hannob](https://github.com/hannob) opened issue at [2019-03-03 12:35](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/12):
5438 I have a minimal kernel without modules for a server. I get a warning about CONFIG_MODULE_SIG_FORCE, which should not apply for a kernel without module support.
5440 For several other module-related options the script behaves correctly (saying 'CONFIG_MODULES: OK ("is not set")' indicating this does not apply), but for CONFIG_MODULE_SIG_FORCE it does not do so.
5444 CONFIG_MODULE_SIG_FORCE | y | kspp | self_protection || FAIL: not found
5447 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2019-03-04 13:42](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/12#issuecomment-469256961):
5453 -------------------------------------------------------------------------------
5455 # [\#11 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/11) `closed`: Feature request: Check CONFIG_RESET_ATTACK_MITIGATION
5457 #### <img src="https://avatars.githubusercontent.com/u/990588?v=4" width="50">[hannob](https://github.com/hannob) opened issue at [2019-03-02 08:17](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/11):
5459 Thanks for this tool.
5461 I'd propose to add a check for CONFIG_RESET_ATTACK_MITIGATION.
5462 This is a feature that on modern systems will set a flag on boot that signals the BIOS to wipe the memory if an unclean shutdown happened. This can protect against some forms of cold boot attacks where you reboot into another system and try to read out the memory from the previous run.
5464 Here's the Kernel submission with some explanation:
5465 https://lwn.net/Articles/730006/
5467 It's also explained in this talk:
5468 https://www.youtube.com/watch?v=RqvPZnLkP70 (around minute 35)
5470 #### <img src="https://avatars.githubusercontent.com/u/32568352?v=4" width="50">[Bernhard40](https://github.com/Bernhard40) commented at [2019-03-02 12:47](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/11#issuecomment-468917523):
5472 This option needs userspace support, otherwise it's not recommended for use:
5473 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a5c03c31af2291f13689d11760c0b59fb70c9a5a
5475 https://bugzilla.redhat.com/show_bug.cgi?id=1532058
5477 #### <img src="https://avatars.githubusercontent.com/u/990588?v=4" width="50">[hannob](https://github.com/hannob) commented at [2019-03-03 12:33](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/11#issuecomment-469018559):
5479 Interesting, is there any userspace tool to do this? Or is this basically unsupported in current systems?
5481 #### <img src="https://avatars.githubusercontent.com/u/203012?u=939d6d3b5ff0b9e46e911d8792a40c20408574e2&v=4" width="50">[anthraxx](https://github.com/anthraxx) commented at [2019-03-03 12:49](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/11#issuecomment-469019815):
5483 @hannob I wanted to look into this for systemd, but forgot for quite a while. thanks for reminding me, back then there was no userspace support, theoretically you could add a systemd service but doing it _properly_ is bit more tricky. I'm putting this back onto my todo list and take a dive into how to properly implement this into systemd itself at a place that could guarantee that all other services etc. are already properly shut down.
5485 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2019-03-04 14:52](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/11#issuecomment-469280355):
5487 Hello @hannob @Bernhard40 @anthraxx,
5489 `RESET_ATTACK_MITIGATION` is a nice option, I will add this check to the script with a comment about userspace support.
5491 That case will be similar to the `STATIC_USERMODEHELPER` option, which needs the userspace support as well (but, as I know, enabling it currently breaks systemd workflow on Ubuntu).
5493 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2019-03-04 18:29](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/11#issuecomment-469362767):
5495 Hm... By the way Ubuntu 18 has `RESET_ATTACK_MITIGATION` enabled.
5498 -------------------------------------------------------------------------------
5500 # [\#10 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/10) `closed`: Add support for x86_32, arm, and arm64 architectures
5502 #### <img src="https://avatars.githubusercontent.com/u/1051156?u=82b8caad104296ef90ffe2f5807dc34d82c31c2b&v=4" width="50">[tyhicks](https://github.com/tyhicks) opened issue at [2019-01-14 19:37](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/10):
5504 (This is a continuation of #9)
5506 Some hardening recommendations are dependent on the processor architecture. For example, the KSPP recommendations differ between [x86_32](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings#x86_32) and [x86_64](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings#x86_64).
5508 This pull request adds the ability to reason about the architecture when constructing the checklist. It also teaches the script about `x86_32`, `arm`, and `arm64` specific config recommendations.
5510 I verified that all the example configs in `config_files/` show the same number of config check failures before and after these changes are applied. Of course, the ordering of the options are changed since the ordering used to construct the checklist has been changed.
5512 Some changes since #9 include:
5513 - Drop kernel version detection from the pull request
5514 - Rename `detect_arch_and_version()` to `detect_arch_from_config()`
5515 - Look for `CONFIG_X86_32` and `CONFIG_X86_64` when detecting `x86` sub architecture
5516 - Restrict the accepted `-a <ARCHITECTURE>` values to those found in `SUPPORTED_ARCHS`
5518 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2019-01-14 20:58](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/10#issuecomment-454158772):
5520 Hello @tyhicks , thanks a lot for the follow-up! Let me propose some improvements.
5522 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2019-01-14 21:45](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/10#issuecomment-454173475):
5524 @tyhicks , thanks for your work again!
5525 Let me propose one more idea. What do you think about splitting [KSPP recommended settings](http://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings) onto 4 arch-specific configs in `./config_files/`?
5527 #### <img src="https://avatars.githubusercontent.com/u/1051156?u=82b8caad104296ef90ffe2f5807dc34d82c31c2b&v=4" width="50">[tyhicks](https://github.com/tyhicks) commented at [2019-01-17 18:04](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/10#issuecomment-455270114):
5529 Yes, I can add 4 arch-specific configs in `./config_files/`.
5531 #### <img src="https://avatars.githubusercontent.com/u/1051156?u=82b8caad104296ef90ffe2f5807dc34d82c31c2b&v=4" width="50">[tyhicks](https://github.com/tyhicks) commented at [2019-01-17 23:44](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/10#issuecomment-455373860):
5533 I've rebased on top of your current tree, fixed up a few things, added what I think you were asking for in the arch-specific KSPP files, and force pushed to this branch.
5535 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2019-01-18 12:12](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/10#issuecomment-455526516):
5538 @tyhicks , excuse me please!
5539 I've made a code review 3 days ago, but didn't hit "submit" button, so it is "pending" :(
5540 I've just realized that you haven't seen my review when I looked at your rebased branch.
5543 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2019-01-18 13:01](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/10#issuecomment-455538355):
5545 If you don't have time/desire, I can pick up your branch and polish it myself.
5548 #### <img src="https://avatars.githubusercontent.com/u/1051156?u=82b8caad104296ef90ffe2f5807dc34d82c31c2b&v=4" width="50">[tyhicks](https://github.com/tyhicks) commented at [2019-01-18 23:16](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/10#issuecomment-455718260):
5550 > If you don't have time/desire, I can pick up your branch and polish it myself.
5552 I won't mind if you do the polishing yourself.
5556 No problem. Thanks for all the review comments.
5558 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2019-01-24 08:02](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/10#issuecomment-457102717):
5562 I've finished with arch support based on your work.
5564 Do you have any comments or requests?
5567 #### <img src="https://avatars.githubusercontent.com/u/1051156?u=82b8caad104296ef90ffe2f5807dc34d82c31c2b&v=4" width="50">[tyhicks](https://github.com/tyhicks) commented at [2019-01-24 15:34](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/10#issuecomment-457240527):
5569 Thanks for finishing out the work. It looks very good to me. I'll make use of the changes over the next week or so and submit new pull requests if I spot anything wrong/missing. Thanks again!
5572 -------------------------------------------------------------------------------
5574 # [\#9 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/9) `closed`: Teach the script about target architecture and kernel version
5576 #### <img src="https://avatars.githubusercontent.com/u/1051156?u=82b8caad104296ef90ffe2f5807dc34d82c31c2b&v=4" width="50">[tyhicks](https://github.com/tyhicks) opened issue at [2019-01-12 00:16](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/9):
5578 Some recommendations are dependent on the processor architecture and/or the kernel version. For example, the KSPP recommendations differ between [x86_32](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings#x86_32) and [x86_64](https://kernsec.org/wiki/index.php/Kernel_Self_Protection_Project/Recommended_Settings#x86_64). Additionally, option names change over time such as when `CONFIG_CC_STACKPROTECTOR_STRONG` was [renamed](https://kernsec.org/wiki/index.php?title=Kernel_Self_Protection_Project%2FRecommended_Settings&diff=3983&oldid=3976).
5580 This pull request adds the ability to reason about the architecture and version when constructing the checklist. It also teaches the script about `x86_32`, `arm`, and `arm64` specific config recommendations.
5582 #### <img src="https://avatars.githubusercontent.com/u/1051156?u=82b8caad104296ef90ffe2f5807dc34d82c31c2b&v=4" width="50">[tyhicks](https://github.com/tyhicks) commented at [2019-01-12 00:18](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/9#issuecomment-453698919):
5584 I verified that all the example configs in `config_files/` show the same number of config check failures before and after these changes are applied. Of course, the ordering of the options are changed since the ordering used to construct the checklist has been changed.
5586 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2019-01-12 17:49](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/9#issuecomment-453767322):
5590 Thank you very much for this pull request! Great!
5592 I briefly looked through the patches and I would like to discuss the approach with you before we proceed.
5594 1. Generally I like the way you introduce SUPPORTED_ARCHS. I also like that the script will have this '-a' argument, it's a good idea. I will look closer to this code.
5596 2. It looks to me that introducing kernel versions will bring more troubles than profit.
5597 In fact all these options have a special version when they appeared in the mainline. Some of them were renamed as well. So if we make the script aware of kernel versions, we will have to add full knowledge about them, but I don't think that it's useful.
5598 IMO it's better to check the config against the recent mainline options and support renamed ones using the OR operator. If the user checks some old config with the script, we will print the errors for hardening options which appeared later, and it is nice. Maybe that will even encourage the user to update the kernel for getting these new hardening features.
5601 May I ask you to extract arch support into a separate pull request? We will work further to merge it.
5603 Thanks again for your time!
5605 #### <img src="https://avatars.githubusercontent.com/u/1051156?u=82b8caad104296ef90ffe2f5807dc34d82c31c2b&v=4" width="50">[tyhicks](https://github.com/tyhicks) commented at [2019-01-12 19:48](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/9#issuecomment-453775979):
5607 > Thank you very much for this pull request! Great!
5609 Glad that you find it useful. I plan to use the script and these changes to audit all of the Ubuntu kernel configs and enable reasonable hardening options that aren't yet enabled.
5611 > It looks to me that introducing kernel versions will bring more troubles than profit.
5612 In fact all these options have a special version when they appeared in the mainline. Some of them were renamed as well. So if we make the script aware of kernel versions, we will have to add full knowledge about them, but I don't think that it's useful.
5613 IMO it's better to check the config against the recent mainline options and support renamed ones using the OR operator. If the user checks some old config with the script, we will print the errors for hardening options which appeared later, and it is nice. Maybe that will even encourage the user to update the kernel for getting these new hardening features.
5616 To be honest, I expected that you'd dislike the kernel version checking. I am on the fence about its usefulness, as well. It currently doesn't add much functionality on top of what `OR()` already provides. My long term thought was to extend minimum version checks to all the options (it really isn't too difficult to do that) so that I could then run the script on old Ubuntu kernel configs, such as the `3.13` kernel in Ubuntu 14.04 LTS, and get clean output that doesn't have a bunch of false negatives for that old kernel.
5618 Maybe I'll just drop the version checking now and, in the future, propose some type of external overrides file that lets me ignore the false negatives when running against a given version of an old kernel. Additionally, this would let me specify overrides for certain options that we simply can't enable in a general purpose distro kernel.
5620 > May I ask you to extract arch support into a separate pull request? We will work further to merge it.
5622 Certainly. It might not happen today but I'll get a new PR up very soon.
5624 #### <img src="https://avatars.githubusercontent.com/u/1051156?u=82b8caad104296ef90ffe2f5807dc34d82c31c2b&v=4" width="50">[tyhicks](https://github.com/tyhicks) commented at [2019-01-12 19:51](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/9#issuecomment-453776169):
5626 @a13xp0p0v I have a slightly unrelated question about the script that I'll ask here since I mentioned using this script with our Ubuntu kernel configs. What does `ubuntu18` mean in the `decision` column of the script output? I assume that you're talking about Ubuntu 18.04 LTS but it feels like `kspp` should be used for nearly all of those rows instead of `ubuntu18` as I consider the KSPP project as the "upstream" that makes these recommendations.
5628 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2019-01-13 08:03](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/9#issuecomment-453810119):
5630 > Glad that you find it useful. I plan to use the script and these changes to audit all of the Ubuntu kernel configs and enable reasonable hardening options that aren't yet enabled.
5632 Nice. I want this script to serve all your needs out of the box.
5634 > To be honest, I expected that you'd dislike the kernel version checking. I am on the fence about its usefulness, as well. It currently doesn't add much functionality on top of what `OR()` already provides. My long term thought was to extend minimum version checks to all the options (it really isn't too difficult to do that) so that I could then run the script on old Ubuntu kernel configs, such as the `3.13` kernel in Ubuntu 14.04 LTS, and get clean output that doesn't have a bunch of false negatives for that old kernel.
5636 Ok, I see. In other words we need some functionality for categorizing and muting script errors, right?
5638 I face a similar task as well and currently I solve it manually:
5639 1. check some kernel config using the script;
5640 2. copy errors from the report to a separate file and annotate each error. Examples:
5641 - this option doesn't exist in that old kernel version,
5642 - enabling/disabling this option breaks the user requirement (e.g. some users need HIBERNATION),
5643 - enabling/disabling this option breaks some code (e.g. enabling STATIC_USERMODEHELPER breaks systemd workflow on Ubuntu 18),
5644 - this option is not enabled since the feature is controlled via kernel command line param (e.g. CONFIG_LEGACY_VSYSCALL_NONE is not set, but the kernel command line has vsyscall=none),
5645 - and finally some errors are marked with TODO.
5647 > Maybe I'll just drop the version checking now and, in the future, propose some type of external overrides file that lets me ignore the false negatives when running against a given version of an old kernel. Additionally, this would let me specify overrides for certain options that we simply can't enable in a general purpose distro kernel.
5649 Yes, let's create that!
5651 I see two approaches:
5652 - Support the formatted comments in the kernel config. The script will parse them and mute/annotate the errors in its report.
5653 - Support formatted annotations in a separate file. We will run `./kconfig-hardened-check.py -c config -a annotations` and have a pretty report.
5657 > > May I ask you to extract arch support into a separate pull request? We will work further to merge it.
5659 > Certainly. It might not happen today but I'll get a new PR up very soon.
5661 Thank you! Take your time, we are not in a hurry.
5663 > I have a slightly unrelated question about the script that I'll ask here since I mentioned using this script with our Ubuntu kernel configs. What does ubuntu18 mean in the decision column of the script output? I assume that you're talking about Ubuntu 18.04 LTS but it feels like kspp should be used for nearly all of those rows instead of ubuntu18 as I consider the KSPP project as the "upstream" that makes these recommendations.
5665 The `decision` column helps me to maintain the list of recommendations.
5667 The values in `decision` column have this "rank" for me:
5670 3. grsecurity and lockdown
5674 - `ubuntu18` for hardening recommendations already adopted by Ubuntu 18.04 LTS,
5675 - `kspp` for hardening recommendations that are listed in KSPP recommended settings but __not__ adopted by Ubuntu 18.04 LTS,
5676 - `grsecurity` for `cut_attack_surface` recommendations from their patch which are __not__ in KSPP recommended settings list,
5677 - `lockdown` for `cut_attack_surface` functionality from the lockdown patch series which is __not__ mentioned in KSPP recommended settings list,
5678 - `my` for hardening recommendations which I consider reasonable, but others don't mention.
5680 Thanks for your question, I think I should document that in the README.
5682 #### <img src="https://avatars.githubusercontent.com/u/32568352?v=4" width="50">[Bernhard40](https://github.com/Bernhard40) commented at [2019-01-13 12:31](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/9#issuecomment-453825869):
5684 @a13xp0p0v isn't better to make `kspp` as base for recommendations instead of `ubuntu18`? As @tyhicks mentioned the current order takes it backwards . The alternative would be to use `defconfig` here. I understand that `ubuntu18` is your personal choice but it's highly opinioniated.
5686 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2019-01-14 13:35](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/9#issuecomment-454006535):
5688 @Bernhard40 , thanks for a reasonable comment. I will use `defconfig` as the basis.
5690 #### <img src="https://avatars.githubusercontent.com/u/1051156?u=82b8caad104296ef90ffe2f5807dc34d82c31c2b&v=4" width="50">[tyhicks](https://github.com/tyhicks) commented at [2019-01-14 19:38](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/9#issuecomment-454133942):
5692 Closing this pull request in favor of #10
5695 -------------------------------------------------------------------------------
5697 # [\#8 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/8) `closed`: couldn't mount to /sysroot after compile kernel with KSPP options.
5699 #### <img src="https://avatars.githubusercontent.com/u/3471772?v=4" width="50">[bryn1u](https://github.com/bryn1u) opened issue at [2018-12-17 15:33](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/8):
5703 After kernel compilation im getting issue "unknow filesystem type ext4", "Failed to mount /sysroot"
5704 I was wondering which KSSP feature could be responsible for it ? I was trying many times and always getting the same issue as i mentioned. Sceenshot
5705 https://www.centos.org/forums/download/file.php?id=2571
5706 It looks like my initramfs doesn't have the kernel module for ext4 but why.
5708 Im using Centos 7 with gcc 7.2
5710 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2018-12-18 11:55](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/8#issuecomment-448195919):
5714 I don't know the reason of such behavior on Centos.
5715 Distros can have various issues because of the kernel hardening options, for example systemd on Ubuntu-18 has troubles with kernel modules unloading because of CONFIG_STATIC_USERMODEHELPER.
5717 It would be great if you find the reason and share the result.
5718 I would recommend you to use binary search to do it faster.
5720 #### <img src="https://avatars.githubusercontent.com/u/3471772?v=4" width="50">[bryn1u](https://github.com/bryn1u) commented at [2018-12-18 22:12](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/8#issuecomment-448390343):
5724 I checked many options and recompiled kernel many times to find some answers, but it looks like everything works like a charm. I was doing everything based on Centos 7 with devtoolset-7 enabled to get never version of gcc like 7.2. With CONFIG_SECURITY_LOADPIN enabled im not able to load any module and getting "operation not permitted". Im guessing it's supposed to be like that.
5726 Don't you know if ubuntu developers will enable KSPP options to the ubuntu kernel ? Or only manual compilation is available to get more security features ?
5729 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2018-12-19 11:57](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/8#issuecomment-448569306):
5731 > With CONFIG_SECURITY_LOADPIN enabled im not able to load any module and getting "operation not permitted". Im guessing it's supposed to be like that.
5733 Thanks for information!
5735 That's the description of CONFIG_SECURITY_LOADPIN:
5736 `Any files read through the kernel file reading interface (kernel modules, firmware, kexec images, security policy) can be pinned to the first filesystem used for loading. When enabled, any files that come from other filesystems will be rejected.`
5738 I guess in your case the first modules are loaded from the ramdisk, and later loading from root filesystem fails.
5740 >Don't you know if ubuntu developers will enable KSPP options to the ubuntu kernel ? Or only manual compilation is available to get more security features ?
5742 It's slow but steady process. More and more kernel hardening options are enabled by distros.
5744 #### <img src="https://avatars.githubusercontent.com/u/3471772?v=4" width="50">[bryn1u](https://github.com/bryn1u) commented at [2018-12-22 12:38](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/8#issuecomment-449567219):
5747 I have a weir problem. After successfully compiled kernel i can't use iptables:
5750 > [root@localhost ~]# iptables -L
5751 > iptables v1.4.21: can't initialize iptables table `filter': Table does not exist (do you need to insmod?)
5752 > Perhaps iptables or your kernel needs to be upgraded.
5754 What am i doing wrong ?
5756 Kernel KSSP options:
5759 option name | desired val | decision | reason || check result
5760 ===================================================================================================================
5761 CONFIG_BUG | y | ubuntu18 | self_protection || OK
5762 CONFIG_PAGE_TABLE_ISOLATION | y | ubuntu18 | self_protection || OK
5763 CONFIG_RETPOLINE | y | ubuntu18 | self_protection || OK
5764 CONFIG_X86_64 | y | ubuntu18 | self_protection || OK
5765 CONFIG_X86_SMAP | y | ubuntu18 | self_protection || OK
5766 CONFIG_X86_INTEL_UMIP | y | ubuntu18 | self_protection || OK
5767 CONFIG_STRICT_KERNEL_RWX | y | ubuntu18 | self_protection || OK
5768 CONFIG_DEBUG_WX | y | ubuntu18 | self_protection || OK
5769 CONFIG_RANDOMIZE_BASE | y | ubuntu18 | self_protection || OK
5770 CONFIG_RANDOMIZE_MEMORY | y | ubuntu18 | self_protection || OK
5771 CONFIG_STACKPROTECTOR_STRONG | y | ubuntu18 | self_protection || OK
5772 CONFIG_VMAP_STACK | y | ubuntu18 | self_protection || OK
5773 CONFIG_THREAD_INFO_IN_TASK | y | ubuntu18 | self_protection || OK
5774 CONFIG_SCHED_STACK_END_CHECK | y | ubuntu18 | self_protection || OK
5775 CONFIG_SLUB_DEBUG | y | ubuntu18 | self_protection || OK
5776 CONFIG_SLAB_FREELIST_HARDENED | y | ubuntu18 | self_protection || OK
5777 CONFIG_SLAB_FREELIST_RANDOM | y | ubuntu18 | self_protection || OK
5778 CONFIG_HARDENED_USERCOPY | y | ubuntu18 | self_protection || OK
5779 CONFIG_FORTIFY_SOURCE | y | ubuntu18 | self_protection || OK
5780 CONFIG_LOCK_DOWN_KERNEL | y | ubuntu18 | self_protection || FAIL: not found
5781 CONFIG_STRICT_MODULE_RWX | y | ubuntu18 | self_protection || OK
5782 CONFIG_MODULE_SIG | y | ubuntu18 | self_protection || OK
5783 CONFIG_MODULE_SIG_ALL | y | ubuntu18 | self_protection || OK
5784 CONFIG_MODULE_SIG_SHA512 | y | ubuntu18 | self_protection || FAIL: "is not set"
5785 CONFIG_SYN_COOKIES | y | ubuntu18 | self_protection || OK
5786 CONFIG_DEFAULT_MMAP_MIN_ADDR | 65536 | ubuntu18 | self_protection || OK
5787 CONFIG_BUG_ON_DATA_CORRUPTION | y | kspp | self_protection || OK
5788 CONFIG_PAGE_POISONING | y | kspp | self_protection || OK
5789 CONFIG_GCC_PLUGINS | y | kspp | self_protection || OK
5790 CONFIG_GCC_PLUGIN_RANDSTRUCT | y | kspp | self_protection || OK
5791 CONFIG_GCC_PLUGIN_STRUCTLEAK | y | kspp | self_protection || OK
5792 CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL | y | kspp | self_protection || OK
5793 CONFIG_GCC_PLUGIN_LATENT_ENTROPY | y | kspp | self_protection || OK
5794 CONFIG_REFCOUNT_FULL | y | kspp | self_protection || OK
5795 CONFIG_DEBUG_LIST | y | kspp | self_protection || OK
5796 CONFIG_DEBUG_SG | y | kspp | self_protection || OK
5797 CONFIG_DEBUG_CREDENTIALS | y | kspp | self_protection || OK
5798 CONFIG_DEBUG_NOTIFIERS | y | kspp | self_protection || OK
5799 CONFIG_MODULE_SIG_FORCE | y | kspp | self_protection || FAIL: "is not set"
5800 CONFIG_HARDENED_USERCOPY_FALLBACK | is not set | kspp | self_protection || FAIL: "y"
5801 CONFIG_GCC_PLUGIN_STACKLEAK | y | my | self_protection || FAIL: not found
5802 CONFIG_SLUB_DEBUG_ON | y | my | self_protection || OK
5803 CONFIG_SECURITY_DMESG_RESTRICT | y | my | self_protection || OK
5804 CONFIG_STATIC_USERMODEHELPER | y | my | self_protection || OK
5805 CONFIG_SECURITY_LOADPIN | y | my | self_protection || FAIL: "is not set"
5806 CONFIG_PAGE_POISONING_NO_SANITY | is not set | my | self_protection || OK
5807 CONFIG_PAGE_POISONING_ZERO | is not set | my | self_protection || OK
5808 CONFIG_SLAB_MERGE_DEFAULT | is not set | my | self_protection || OK
5809 CONFIG_SECURITY | y | ubuntu18 | security_policy || OK
5810 CONFIG_SECURITY_YAMA | y | ubuntu18 | security_policy || OK
5811 CONFIG_SECURITY_SELINUX_DISABLE | is not set | ubuntu18 | security_policy || OK
5812 CONFIG_SECCOMP | y | ubuntu18 | cut_attack_surface || OK
5813 CONFIG_SECCOMP_FILTER | y | ubuntu18 | cut_attack_surface || OK
5814 CONFIG_STRICT_DEVMEM | y | ubuntu18 | cut_attack_surface || OK
5815 CONFIG_ACPI_CUSTOM_METHOD | is not set | ubuntu18 | cut_attack_surface || FAIL: "m"
5816 CONFIG_COMPAT_BRK | is not set | ubuntu18 | cut_attack_surface || OK
5817 CONFIG_DEVKMEM | is not set | ubuntu18 | cut_attack_surface || OK
5818 CONFIG_COMPAT_VDSO | is not set | ubuntu18 | cut_attack_surface || OK: not found
5819 CONFIG_X86_PTDUMP | is not set | ubuntu18 | cut_attack_surface || OK
5820 CONFIG_ZSMALLOC_STAT | is not set | ubuntu18 | cut_attack_surface || OK
5821 CONFIG_PAGE_OWNER | is not set | ubuntu18 | cut_attack_surface || OK
5822 CONFIG_DEBUG_KMEMLEAK | is not set | ubuntu18 | cut_attack_surface || OK
5823 CONFIG_BINFMT_AOUT | is not set | ubuntu18 | cut_attack_surface || OK: not found
5824 CONFIG_MMIOTRACE_TEST | is not set | ubuntu18 | cut_attack_surface || OK: not found
5825 CONFIG_IO_STRICT_DEVMEM | y | kspp | cut_attack_surface || OK
5826 CONFIG_LEGACY_VSYSCALL_NONE | y | kspp | cut_attack_surface || OK
5827 CONFIG_BINFMT_MISC | is not set | kspp | cut_attack_surface || FAIL: "m"
5828 CONFIG_INET_DIAG | is not set | kspp | cut_attack_surface || FAIL: "m"
5829 CONFIG_KEXEC | is not set | kspp | cut_attack_surface || OK
5830 CONFIG_PROC_KCORE | is not set | kspp | cut_attack_surface || OK
5831 CONFIG_LEGACY_PTYS | is not set | kspp | cut_attack_surface || OK
5832 CONFIG_IA32_EMULATION | is not set | kspp | cut_attack_surface || OK
5833 CONFIG_X86_X32 | is not set | kspp | cut_attack_surface || OK
5834 CONFIG_MODIFY_LDT_SYSCALL | is not set | kspp | cut_attack_surface || FAIL: "y"
5835 CONFIG_HIBERNATION | is not set | kspp | cut_attack_surface || OK
5836 CONFIG_KPROBES | is not set |grsecurity| cut_attack_surface || FAIL: "y"
5837 CONFIG_UPROBES | is not set |grsecurity| cut_attack_surface || FAIL: "y"
5838 CONFIG_GENERIC_TRACER | is not set |grsecurity| cut_attack_surface || FAIL: "y"
5839 CONFIG_PROC_VMCORE | is not set |grsecurity| cut_attack_surface || FAIL: "y"
5840 CONFIG_PROC_PAGE_MONITOR | is not set |grsecurity| cut_attack_surface || FAIL: "y"
5841 CONFIG_USELIB | is not set |grsecurity| cut_attack_surface || OK
5842 CONFIG_CHECKPOINT_RESTORE | is not set |grsecurity| cut_attack_surface || OK
5843 CONFIG_USERFAULTFD | is not set |grsecurity| cut_attack_surface || OK
5844 CONFIG_HWPOISON_INJECT | is not set |grsecurity| cut_attack_surface || OK
5845 CONFIG_MEM_SOFT_DIRTY | is not set |grsecurity| cut_attack_surface || OK: not found
5846 CONFIG_DEVPORT | is not set |grsecurity| cut_attack_surface || FAIL: "y"
5847 CONFIG_DEBUG_FS | is not set |grsecurity| cut_attack_surface || FAIL: "y"
5848 CONFIG_NOTIFIER_ERROR_INJECTION | is not set |grsecurity| cut_attack_surface || OK
5849 CONFIG_ACPI_TABLE_UPGRADE | is not set | lockdown | cut_attack_surface || FAIL: "y"
5850 CONFIG_ACPI_APEI_EINJ | is not set | lockdown | cut_attack_surface || FAIL: "m"
5851 CONFIG_PROFILING | is not set | lockdown | cut_attack_surface || FAIL: "y"
5852 CONFIG_BPF_SYSCALL | is not set | lockdown | cut_attack_surface || FAIL: "y"
5853 CONFIG_MMIOTRACE | is not set | my | cut_attack_surface || OK
5854 CONFIG_KEXEC_FILE | is not set | my | cut_attack_surface || FAIL: "y"
5855 CONFIG_LIVEPATCH | is not set | my | cut_attack_surface || FAIL: "y"
5856 CONFIG_USER_NS | is not set | my | cut_attack_surface || FAIL: "y"
5857 CONFIG_IP_DCCP | is not set | my | cut_attack_surface || FAIL: "m"
5858 CONFIG_IP_SCTP | is not set | my | cut_attack_surface || FAIL: "m"
5859 CONFIG_FTRACE | is not set | my | cut_attack_surface || FAIL: "y"
5860 CONFIG_BPF_JIT | is not set | my | cut_attack_surface || FAIL: "y"
5861 CONFIG_ARCH_MMAP_RND_BITS | 32 | my |userspace_protection|| FAIL: "28"
5863 [-] config check is NOT PASSED: 29 errors
5867 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2018-12-25 12:27](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/8#issuecomment-449846419):
5870 The error message which you posted makes me think that your issue is about kernel modules loading.
5871 I would recommend you to look at the kernel log for more information and bisect again to find the reason.
5874 -------------------------------------------------------------------------------
5876 # [\#7 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/7) `closed`: Removing security features during kernel compilation.
5878 #### <img src="https://avatars.githubusercontent.com/u/3471772?v=4" width="50">[bryn1u](https://github.com/bryn1u) opened issue at [2018-12-05 13:21](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/7):
5882 Im trying do my best with security options based on your script. I have a litte problems with few options.
5884 When im adding these options:
5886 # Enable GCC Plugins
5887 CONFIG_GCC_PLUGINS=y
5889 # Gather additional entropy at boot time for systems that may not have appropriate entropy sources.
5890 CONFIG_GCC_PLUGIN_LATENT_ENTROPY=y
5892 # Force all structures to be initialized before they are passed to other functions.
5893 CONFIG_GCC_PLUGIN_STRUCTLEAK=y
5894 CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL=y
5896 # Randomize the layout of system structures. This may have dramatic performance impact, so
5897 # use with caution or also use CONFIG_GCC_PLUGIN_RANDSTRUCT_PERFORMANCE=y
5898 CONFIG_GCC_PLUGIN_RANDSTRUCT=y
5900 And make a "make -j 8 deb-pkg" on ubuntu or "make -j8 bzImage ...." on centos, these options are removing immediately from ".config" in kernel-4.19.6 . I have no idea what's going on. Could you tell me what am i doing wrong ?
5902 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2018-12-05 21:08](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/7#issuecomment-444648549):
5906 Kconfig disables these options automatically because your gcc doesn't support plugins.
5907 If you have gcc-7 on Ubuntu, try to install gcc-7-plugin-dev package. It should help.
5909 And thanks for your question. I'll add this information to README.
5911 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2018-12-05 21:31](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/7#issuecomment-444656696):
5913 Added 478e5f266df05b5f75badef59914c8b0e71e3e0e
5915 #### <img src="https://avatars.githubusercontent.com/u/3471772?v=4" width="50">[bryn1u](https://github.com/bryn1u) commented at [2018-12-06 21:08](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/7#issuecomment-445030219):
5919 Now it works :) thanks ! I have one question about CONFIG_GCC_PLUGIN_STACKLEAK . This is the one option which is removing during compilation. Is it any way to enable it or isn't it available in kernel-4.19.7 yet ?
5922 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2018-12-07 06:59](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/7#issuecomment-445141837):
5924 Yes, CONFIG_GCC_PLUGIN_STACKLEAK will be available in Linux 4.20.
5927 -------------------------------------------------------------------------------
5929 # [\#6 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/6) `closed`: Removed long lines on output + minor fix
5931 #### <img src="https://avatars.githubusercontent.com/u/7037785?u=6ac77234884c153e7fd38e3732be16d9760509ea&v=4" width="50">[c0rv4x](https://github.com/c0rv4x) opened issue at [2018-07-30 14:38](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/6):
5933 I removed long lines from `print` and `format` functions.
5934 Also i edited function `get_option_state` now uses `dict.get` method to extract a key from dict with default value
5936 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2018-07-30 20:09](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/6#issuecomment-408993713):
5942 -------------------------------------------------------------------------------
5944 # [\#5 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/5) `closed`: Oop refactoring
5946 #### <img src="https://avatars.githubusercontent.com/u/7037785?u=6ac77234884c153e7fd38e3732be16d9760509ea&v=4" width="50">[c0rv4x](https://github.com/c0rv4x) opened issue at [2018-07-28 21:49](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/5):
5948 Made the program a liitle bit more OOP.
5950 I created a UserConfig class to store the state of the user's config.
5951 Outputter class is responsible for outputting major results (however, not all the prints are there)
5952 OR and OptConifg were moved to a separate file
5953 Checklist got its own class with a method `check(config)` that performs all the checks from the checklist against user's config
5955 #### <img src="https://avatars.githubusercontent.com/u/203012?u=939d6d3b5ff0b9e46e911d8792a40c20408574e2&v=4" width="50">[anthraxx](https://github.com/anthraxx) commented at [2018-07-30 09:43](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/5#issuecomment-408807705):
5957 The last commit adds a ```__pycache__``` directory with bython bytecode cache files, that commit should be amended
5959 #### <img src="https://avatars.githubusercontent.com/u/203012?u=939d6d3b5ff0b9e46e911d8792a40c20408574e2&v=4" width="50">[anthraxx](https://github.com/anthraxx) commented at [2018-07-30 09:50](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/5#issuecomment-408809392):
5961 Cool that you invest time with this, but personally speaking I'm bit mixed here what the justification/gain is to introduce the complexity and split other then "but oop and modules". Right now it's quite handy to just have the whole thing in a single file that could be copied to /usr/bin dir f.e. and I don't think its expected that lots lots lots of additional modules and python functions are needed beyond this.
5963 Otherwise, if the project goes the path to make it more modular, then it should at least also have setup.py dist file (you may want to add one) so it can actually be distributed and used properly as a module and by distros for packaging python.
5965 My 2 cents is that a single file isn't too bad after considering the current scope and content
5967 #### <img src="https://avatars.githubusercontent.com/u/7037785?u=6ac77234884c153e7fd38e3732be16d9760509ea&v=4" width="50">[c0rv4x](https://github.com/c0rv4x) commented at [2018-07-30 10:36](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/5#issuecomment-408821023):
5969 You are right about `__pycache__`, that is my fault.
5971 As for sticking to a single file, i clearly see your point and agree with you. However, OOP style is obviously easier to extend and easier to read. As long as the author (a13xp0p0v) is expecting the tool to grow, i consider that we should stick to an easier form of code in terms of adding code rather that terms of easy-to-run.
5973 Also, thanks for the note on setup.py file, i will surely fix that problem!
5975 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2018-07-30 10:42](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/5#issuecomment-408822137):
5977 Hello @iad42 and @anthraxx ,
5979 Yes, Anatoly, thanks for your time! Your PR made me review the script and gave some new ideas.
5980 I see now what we can improve:
5981 1. currently parsing config file, filling 'OptCheck.state' values in 'checklist' and performing actual checks all mixed in check_config_file(). It would be nice to split them. What approaches do you see?
5982 2. there are two global vars now: 'checklist' and 'debug_mode'. I see that some of design drawbacks are connected with that fact. It would be cool to get rid of them during the refactoring.
5983 3. the script is quite small now, I like that all the functionality stays in a single file.
5984 4. @iad42 , I like how you cut the long lines in printing the output. I want to merge it. Can you put the final ')' on the second line, like that:
5986 print(' CONFIG_{:<32}|{:^13}|{:^10}|{:^20}||{:^28}'.format(
5987 opt.name, opt.expected, opt.decision, opt.reason, opt.result))
5992 #### <img src="https://avatars.githubusercontent.com/u/7037785?u=6ac77234884c153e7fd38e3732be16d9760509ea&v=4" width="50">[c0rv4x](https://github.com/c0rv4x) commented at [2018-07-30 14:39](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/5#issuecomment-408886952):
5996 I created a separate pull request https://github.com/a13xp0p0v/kconfig-hardened-check/pull/6 for the 4th bullet point on your list. Also i added a tiny fix for working with dict
5999 -------------------------------------------------------------------------------
6001 # [\#4 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/4) `closed`: Add more config files
6003 #### <img src="https://avatars.githubusercontent.com/u/4661917?u=bb7aeb3c77839cea055b49b80168666b36315f3d&v=4" width="50">[theLOICofFRANCE](https://github.com/theLOICofFRANCE) opened issue at [2018-07-20 20:31](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/4):
6007 Just like I promised.
6011 #### <img src="https://avatars.githubusercontent.com/u/32568352?v=4" width="50">[Bernhard40](https://github.com/Bernhard40) commented at [2018-07-23 19:03](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/4#issuecomment-407166514):
6013 Don't we overdo with the number of configs here? This project allows everyone for checking any config they want themselves so what is the point of storing them here? One or two as example is enough. Most of them will be outdated sooner or later anyway.
6015 #### <img src="https://avatars.githubusercontent.com/u/203012?u=939d6d3b5ff0b9e46e911d8792a40c20408574e2&v=4" width="50">[anthraxx](https://github.com/anthraxx) commented at [2018-07-23 19:18](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/4#issuecomment-407170808):
6017 Yeah I agree, also they are outdated quite fast and who maintains the configs?
6018 To compare and test stuff, it would make sense to have a small amount of general purpose configs like ubuntu, debian and have some hardened examples like kspp, archlinux-hardened and others. I don't think it is or should be the scope of the project to collect them all
6020 #### <img src="https://avatars.githubusercontent.com/u/4661917?u=bb7aeb3c77839cea055b49b80168666b36315f3d&v=4" width="50">[theLOICofFRANCE](https://github.com/theLOICofFRANCE) commented at [2018-07-24 12:11](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/4#issuecomment-407384626):
6024 Allow me first of all to take stock of the results:
6026 **pentoo-hardened-2018.0rc7.config** = **30 errors** (config of iso image)
6027 **Archlinux-hardened.config** = 33 errors (config available via **gitweb**)
6028 Qubes-latest.config = 38 errors (config of linux package)
6029 **Alpinelinux-edge.config** = 44 errors (config available via **gitweb**)
6030 Fedora-Rawhide.config = 48 errors (config of linux package)
6031 **Archlinux-Testing.config** = 49 errors (config available via **gitweb**)
6032 debian-sid-amd64.config = 49 errors (config of linux package)
6033 Kali-linux.config = 49 errors (config of linux package)
6034 Owl-3.1config = 50 errors (config of linux package)
6035 Parrot-security-4.1.config = 52 errors (config of linux package)
6036 ubuntu-bionic-generic.config = 52 errors (config of linux package)
6037 **oracle-uek5.config** = 54 errors (config available via **gitweb**)
6038 Mageia-cauldron.config = 57 errors (config of linux package)
6039 **SLE15.config** = 58 errors (config available via **gitweb**)
6040 **Opensuse-git.config** = 62 errors (config available via **gitweb**)
6041 Trisquel-Flidas.config = 63 errors (config of linux package)
6043 All config available via **gitweb** are easy to maintain with a bash script.
6044 Then for some I didn't use the stable branch but the development branch to have an up-to-date config.
6046 So I lets @a13xp0p0v choose what he prefers.
6048 But I wish in any case to maintain pentoo-hardened in view of its result :smiley:
6050 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2018-07-24 23:06](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/4#issuecomment-407580227):
6052 Hello @HacKurx @anthraxx @Bernhard40 ,
6054 Yes, we don't have a goal to collect all the configs and update them.
6055 At the same time I appreciate @HacKurx efforts.
6057 So what do you think about this solution:
6058 1. drop the configs of minor distributions (Owl-3.1config, Kali-linux.config, Parrot-security-4.1.config, Mageia-cauldron.config, Trisquel-Flidas.config);
6059 2. add the concrete release/version to the config file names ("sid" and "rawhide" are bad version names since they just mean "unstable", right?);
6060 3. add a links.txt with the available links to the configs.
6062 Does it sound reasonable to you?
6064 #### <img src="https://avatars.githubusercontent.com/u/32568352?v=4" width="50">[Bernhard40](https://github.com/Bernhard40) commented at [2018-07-25 11:41](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/4#issuecomment-407725269):
6066 Yeah, keeping well know distros and non-rolling release kernels make sense.
6068 #### <img src="https://avatars.githubusercontent.com/u/4661917?u=bb7aeb3c77839cea055b49b80168666b36315f3d&v=4" width="50">[theLOICofFRANCE](https://github.com/theLOICofFRANCE) commented at [2018-07-25 19:28](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/4#issuecomment-407868315):
6072 > Does it sound reasonable to you?
6074 Yeah, okay, I'll take care of it.
6078 > Yeah, keeping well know distros and non-rolling release kernels make sense.
6080 I know, but for old kernels we need use more OR class. Example: CONFIG_DEBUG_SET_MODULE_RONX, CONFIG_DEBUG_KERNEL, CONFIG_DEBUG_RODATA.
6082 In addition certain points must be corrected, as for example the recommendation "CONFIG_LKDTM" is impossible to respect without breaking the recommendation of Grsecurity on DEBUG_FS.
6084 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2018-07-27 21:29](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/4#issuecomment-408543338):
6086 Hello @HacKurx , thanks for your work.
6088 1. I've commented out the LKDTM rule. You are right about it.
6090 2. I'll check what we can do about CONFIG_DEBUG_SET_MODULE_RONX, CONFIG_DEBUG_KERNEL, CONFIG_DEBUG_RODATA.
6092 3. I've merged some of your commits, so now 'config' directory has:
6093 - Alpinelinux-edge.config (I want to keep it)
6094 - Archlinux-hardened.config (ditto)
6095 - debian-stretch.config
6096 - oracle-uek5.config
6098 - ubuntu-bionic-generic.config
6100 May I ask you to do a bit more work to make it excellent?
6101 - could you check the links for Alpine Linux in your links.txt? They both give similar result.
6102 - could you find links for debian-stretch and ubuntu-bionic configs?
6103 - could you add configs for some stable versions of Pentoo Hardened and openSUSE?
6104 If so, in the result we will have some consistence between links.txt and config files.
6108 #### <img src="https://avatars.githubusercontent.com/u/4661917?u=bb7aeb3c77839cea055b49b80168666b36315f3d&v=4" width="50">[theLOICofFRANCE](https://github.com/theLOICofFRANCE) commented at [2018-07-28 06:57](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/4#issuecomment-408587814):
6112 > could you check the links for Alpine Linux in your links.txt? They both give similar result.
6114 Because the edge version currently uses the same kernel as the stable 3.8 version.
6116 > could you find links for debian-stretch and ubuntu-bionic configs?
6118 Not sure, but I'll look.
6120 > could you add configs for some stable versions of Pentoo Hardened and openSUSE?
6122 Yes of course the links are in the file.
6124 I'll take care of it soon.
6125 Thank you too. Best regards.
6127 #### <img src="https://avatars.githubusercontent.com/u/4661917?u=bb7aeb3c77839cea055b49b80168666b36315f3d&v=4" width="50">[theLOICofFRANCE](https://github.com/theLOICofFRANCE) commented at [2018-08-01 21:45](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/4#issuecomment-409734659):
6131 > I'll check what we can do about CONFIG_DEBUG_SET_MODULE_RONX, CONFIG_DEBUG_KERNEL, CONFIG_DEBUG_RODATA.
6133 Thank you, I just saw your changes regarding that. If you want to be thorough then you should also do the same for :
6135 PAGE_TABLE_ISOLATION = PAX_PER_CPU_PGD, MEMORY_UDEREF_MELTDOWN
6136 RANDOMIZE_BASE, RANDOMIZE_MEMORY = PAX_ASLR
6137 HARDENED_USERCOPY = PAX_USERCOPY
6138 GCC_PLUGIN_RANDSTRUCT = GRKERNSEC_RANDSTRUCT
6139 GCC_PLUGIN_STRUCTLEAK = PAX_MEMORY_STRUCTLEAK
6140 GCC_PLUGIN_STRUCTLEAK_BYREF_ALL = PAX_MEMORY_STRUCTLEAK ?
6141 GCC_PLUGIN_LATENT_ENTROPY = PAX_LATENT_ENTROPY
6142 REFCOUNT_FULL = PAX_REFCOUNT
6143 GCC_PLUGIN_STACKLEAK = PAX_MEMORY_STACKLEAK
6144 SECURITY_YAMA = GRKERNSEC
6147 It's be a good friendly gesture.
6149 I'm still looking for some points and I'm quite busy but I always take care of them.
6153 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2018-08-03 20:52](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/4#issuecomment-410373163):
6157 > PAGE_TABLE_ISOLATION = PAX_PER_CPU_PGD, MEMORY_UDEREF_MELTDOWN
6159 Umm... Where can I learn more about these options?
6161 > RANDOMIZE_BASE, RANDOMIZE_MEMORY = PAX_ASLR
6163 No, I'm absolutely sure that KASLR != PAX_ASLR.
6165 > HARDENED_USERCOPY = PAX_USERCOPY
6166 > GCC_PLUGIN_RANDSTRUCT = GRKERNSEC_RANDSTRUCT
6167 > GCC_PLUGIN_STRUCTLEAK = PAX_MEMORY_STRUCTLEAK
6168 > GCC_PLUGIN_STRUCTLEAK_BYREF_ALL = PAX_MEMORY_STRUCTLEAK ?
6169 > GCC_PLUGIN_LATENT_ENTROPY = PAX_LATENT_ENTROPY
6170 > REFCOUNT_FULL = PAX_REFCOUNT
6171 > GCC_PLUGIN_STACKLEAK = PAX_MEMORY_STACKLEAK
6173 Have you seen my Linux Kernel Defence Map?
6174 https://github.com/a13xp0p0v/linux-kernel-defence-map
6175 Please have a look, I've displayed the origins of these features (and praised grsecurity) in that map.
6177 > SECURITY_YAMA = GRKERNSEC
6179 Excuse me, I don't see the connection between these options. Can you share more details?
6183 #### <img src="https://avatars.githubusercontent.com/u/4661917?u=bb7aeb3c77839cea055b49b80168666b36315f3d&v=4" width="50">[theLOICofFRANCE](https://github.com/theLOICofFRANCE) commented at [2018-08-04 14:56](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/4#issuecomment-410455183):
6187 > Umm... Where can I learn more about these options?
6190 config PAGE_TABLE_ISOLATION
6191 bool "Remove the kernel mapping in user mode"
6193 - depends on X86_64 && SMP
6194 + depends on X86_64 && SMP && !PAX_PER_CPU_PGD && BROKEN
6196 This enforces a strict kernel and user space isolation, in order
6197 to close hardware side channels on kernel address information.
6203 +config PAX_MEMORY_UDEREF_MELTDOWN
6204 + bool "Prevent i386 Meltdown attacks (READ HELP!)"
6206 + depends on X86_32 && PAX_MEMORY_UDEREF
6208 + By saying Y here, UDEREF will be enhanced to fully close off
6209 + Meltdown attacks against the kernel. This will prevent the
6210 + creation of expand-down segments and will limit all TLS segments
6211 + to the end of the userland address space.
6214 If you want to know more, you just have to convince a large company (google? microsoft ^^) to finance their research in a public way :innocent:
6216 > No, I'm absolutely sure that KASLR != PAX_ASLR.
6218 Oops I confused PAX_RANDUSTACK(depends on PAX_ASLR) and PAX_RANDKSTACK.
6220 > Excuse me, I don't see the connection between these options. Can you share more details?
6223 config SECURITY_YAMA
6225 - depends on SECURITY
6226 + depends on SECURITY && !GRKERNSEC
6230 Because not compatible.
6232 > Have you seen my Linux Kernel Defence Map?
6234 Great ! I'll look into it.
6236 For the rest I couldn't find a link for the complete debian and ubuntu configurations. The reason is that the files are generated automatically:
6237 https://salsa.debian.org/kernel-team/linux/tree/master/debian/config
6238 https://salsa.debian.org/kernel-team/linux/raw/master/debian/config/amd64/config
6240 What about CRYPTO_SPECK, what do you think?
6242 Thanks you to again.
6244 #### <img src="https://avatars.githubusercontent.com/u/32568352?v=4" width="50">[Bernhard40](https://github.com/Bernhard40) commented at [2018-08-04 16:14](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/4#issuecomment-410460070):
6246 > If you want to know more, you just have to convince a large company (google? microsoft ^^) to finance their research in a public way 😇
6248 So, until that happens there is no point for adding support for options which almost no one can use.
6250 #### <img src="https://avatars.githubusercontent.com/u/4661917?u=bb7aeb3c77839cea055b49b80168666b36315f3d&v=4" width="50">[theLOICofFRANCE](https://github.com/theLOICofFRANCE) commented at [2018-08-04 17:30](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/4#issuecomment-410465146):
6252 > So, until that happens there is no point for adding support for options which almost no one can use.
6254 So you want to create a false error to the persons who uses it?
6255 KSPP's advances come from grsecurity don't forget it.
6256 Besides the old versions are still a source of inspiration, right?
6258 #### <img src="https://avatars.githubusercontent.com/u/32568352?v=4" width="50">[Bernhard40](https://github.com/Bernhard40) commented at [2018-08-04 17:53](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/4#issuecomment-410466573):
6260 If someone uses grsecurity private code then they should seek support from grsecurity which they pay for, not from volunteers working for free.
6262 Old versions are dead, nothing we can do about it.
6264 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2018-08-04 20:51](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/4#issuecomment-410476855):
6266 Hello @HacKurx and @Bernhard40 ,
6268 Please don't start another holy war about grsecurity.
6269 - Yes, Brad and PaX Team are genius.
6270 - Yes, a lot of KSPP work is inspired by (and sometimes copied from) grsecurity. The map shows that fact explicitly.
6271 - Yes, almost all the mainline kernel self protection features are not compatible with grsecurity (and even marked as BROKEN).
6273 @HacKurx , it's great that you have access to the recent grsecurity patches, lucky you.
6274 I don't have it, and I guess they will never give it to me.
6275 So I would like to focus on the mainline kconfig options. Moreover, grsecurity users really don't need this funny script at all.
6277 Thanks for understanding.
6279 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2018-08-08 12:36](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/4#issuecomment-411389774):
6283 I've merged the rest of your PR with some fixes I previously mentioned.
6284 Thank you very much.
6288 #### <img src="https://avatars.githubusercontent.com/u/4661917?u=bb7aeb3c77839cea055b49b80168666b36315f3d&v=4" width="50">[theLOICofFRANCE](https://github.com/theLOICofFRANCE) commented at [2018-08-08 21:57](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/4#issuecomment-411565682):
6292 > it's great that you have access to the recent grsecurity patches
6294 Well, not really. It's complicated... Let's just say that I have elements that you don't have and that out of respect I didn't publish them. Spender and Pipacs have always answered my questions which is not the case with Linus for example (at the terrorist attack in my country I asked him to rename the version name to "Pray for Paris") but he didn't even take the time to answer...
6296 > So I would like to focus on the mainline kconfig options.
6298 Ok no problem. Rest assured I am not here for divide. I do not forget that if we discuss together it is above all because we appreciate at security in linux ;)
6300 > I've merged the rest of your PR with some fixes I previously mentioned.
6302 Great, thank you. I haven't found much interesting since.
6307 -------------------------------------------------------------------------------
6309 # [\#3 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/3) `closed`: Add Grsecurity recommendation on BINFMT_AOUT
6311 #### <img src="https://avatars.githubusercontent.com/u/4661917?u=bb7aeb3c77839cea055b49b80168666b36315f3d&v=4" width="50">[theLOICofFRANCE](https://github.com/theLOICofFRANCE) opened issue at [2018-07-18 18:52](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/3):
6315 Recommendation starting from grsecurity-2.2.0-2.6.32.22-201009241805.patch.
6316 Sorry, Linux historical interest is not secure ;)
6318 Sorry for the tabulations in my code :D
6322 #### <img src="https://avatars.githubusercontent.com/u/32568352?v=4" width="50">[Bernhard40](https://github.com/Bernhard40) commented at [2018-07-18 19:14](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/3#issuecomment-406043222):
6324 I'm curious, does anyone seen kernel with that option enabled in last 10 years?
6326 #### <img src="https://avatars.githubusercontent.com/u/4661917?u=bb7aeb3c77839cea055b49b80168666b36315f3d&v=4" width="50">[theLOICofFRANCE](https://github.com/theLOICofFRANCE) commented at [2018-07-18 19:49](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/3#issuecomment-406052730):
6328 Today his is not the case but it is necessary to warn users better about the old code that is dangerous and that Linus will never want to delete.
6330 Because otherwise I'm sure he's got geeks who'll activate him for fun...
6332 #### <img src="https://avatars.githubusercontent.com/u/4661917?u=bb7aeb3c77839cea055b49b80168666b36315f3d&v=4" width="50">[theLOICofFRANCE](https://github.com/theLOICofFRANCE) commented at [2018-07-18 20:13](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/3#issuecomment-406059551):
6334 @Bernhard40 to be precise (extraction from linux-4.18-rc5) shows that it's still using a little. The equipment on ARM being more recent.
6336 m68k/configs/mvme147_defconfig:CONFIG_BINFMT_AOUT=m
6337 m68k/configs/apollo_defconfig:CONFIG_BINFMT_AOUT=m
6338 m68k/configs/multi_defconfig:CONFIG_BINFMT_AOUT=m
6339 m68k/configs/amiga_defconfig:CONFIG_BINFMT_AOUT=m
6340 m68k/configs/bvme6000_defconfig:CONFIG_BINFMT_AOUT=m
6341 m68k/configs/hp300_defconfig:CONFIG_BINFMT_AOUT=m
6342 m68k/configs/atari_defconfig:CONFIG_BINFMT_AOUT=m
6343 m68k/configs/q40_defconfig:CONFIG_BINFMT_AOUT=m
6344 m68k/configs/mac_defconfig:CONFIG_BINFMT_AOUT=m
6345 m68k/configs/sun3_defconfig:CONFIG_BINFMT_AOUT=m
6346 m68k/configs/sun3x_defconfig:CONFIG_BINFMT_AOUT=m
6347 m68k/configs/mvme16x_defconfig:CONFIG_BINFMT_AOUT=m
6349 arm/configs/iop32x_defconfig:CONFIG_BINFMT_AOUT=y
6350 arm/configs/badge4_defconfig:CONFIG_BINFMT_AOUT=m
6351 arm/configs/corgi_defconfig:CONFIG_BINFMT_AOUT=m
6352 arm/configs/neponset_defconfig:CONFIG_BINFMT_AOUT=y
6353 arm/configs/imote2_defconfig:CONFIG_BINFMT_AOUT=m
6354 arm/configs/lart_defconfig:CONFIG_BINFMT_AOUT=y
6355 arm/configs/ebsa110_defconfig:CONFIG_BINFMT_AOUT=y
6356 arm/configs/hackkit_defconfig:CONFIG_BINFMT_AOUT=y
6357 arm/configs/ezx_defconfig:CONFIG_BINFMT_AOUT=m
6358 arm/configs/jornada720_defconfig:CONFIG_BINFMT_AOUT=y
6359 arm/configs/rpc_defconfig:CONFIG_BINFMT_AOUT=y
6360 arm/configs/nuc960_defconfig:CONFIG_BINFMT_AOUT=y
6361 arm/configs/nuc950_defconfig:CONFIG_BINFMT_AOUT=y
6362 arm/configs/spitz_defconfig:CONFIG_BINFMT_AOUT=m
6363 arm/configs/footbridge_defconfig:CONFIG_BINFMT_AOUT=y
6364 arm/configs/netwinder_defconfig:CONFIG_BINFMT_AOUT=y
6365 arm/configs/iop13xx_defconfig:CONFIG_BINFMT_AOUT=y
6366 arm/configs/iop33x_defconfig:CONFIG_BINFMT_AOUT=y
6368 #### <img src="https://avatars.githubusercontent.com/u/4661917?u=bb7aeb3c77839cea055b49b80168666b36315f3d&v=4" width="50">[theLOICofFRANCE](https://github.com/theLOICofFRANCE) commented at [2018-07-19 19:02](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/3#issuecomment-406381446):
6370 No thanks to you @a13xp0p0v
6372 I have corrected as requested, I hope it will suit you.
6373 I've done everything since the github editor which explains the many commit.
6375 Too bad kconfig is so limited with conditions because it would be nice to have a menu to choose its security level (basic, custom, paranoid) when configuring the linux kernel.
6377 So I took my inspiration from grsec to make something simpler:
6378 https://github.com/HacKurx/public-sharing/blob/master/disables_unsecured_options.patch
6380 Thanks, best regards.
6382 #### <img src="https://avatars.githubusercontent.com/u/203012?u=939d6d3b5ff0b9e46e911d8792a40c20408574e2&v=4" width="50">[anthraxx](https://github.com/anthraxx) commented at [2018-07-19 20:43](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/3#issuecomment-406408269):
6384 @HacKurx btw, i have seen you added Arch Linux config: there is a hardened arch kernel as well with more protective options.
6386 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2018-07-19 21:08](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/3#issuecomment-406414918):
6390 Cool thanks, I'll merge it soon!
6392 I only will not take dropping "not found" from OK status, since it is important information:
6393 explicit "is not set" is different from the option absence in the config file, I want it to be displayed in the script output.
6398 #### <img src="https://avatars.githubusercontent.com/u/4661917?u=bb7aeb3c77839cea055b49b80168666b36315f3d&v=4" width="50">[theLOICofFRANCE](https://github.com/theLOICofFRANCE) commented at [2018-07-20 11:56](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/3#issuecomment-406579032):
6401 > there is a hardened arch kernel as well with more protective options.
6403 Yes indeed. It's fixed.
6407 I will have fun adding main distributions config but it would be necessary to create a folder not to pollute it.
6408 This will allow an easy comparison to be made.
6410 What do you think of that?
6412 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2018-07-20 12:26](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/3#issuecomment-406585795):
6414 Yes, moving configs into a separate directory is a good idea.
6416 #### <img src="https://avatars.githubusercontent.com/u/4661917?u=bb7aeb3c77839cea055b49b80168666b36315f3d&v=4" width="50">[theLOICofFRANCE](https://github.com/theLOICofFRANCE) commented at [2018-07-20 14:59](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/3#issuecomment-406627110):
6420 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2018-07-20 18:10](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/3#issuecomment-406683275):
6423 Thanks for your work, it's merged (except "not found" dropping).
6426 #### <img src="https://avatars.githubusercontent.com/u/4661917?u=bb7aeb3c77839cea055b49b80168666b36315f3d&v=4" width="50">[theLOICofFRANCE](https://github.com/theLOICofFRANCE) commented at [2018-07-20 18:54](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/3#issuecomment-406695869):
6428 Thank you to you too.
6429 I will complete the config_files folder because the results are very interesting :)
6431 See you soon. Best regards,
6434 -------------------------------------------------------------------------------
6436 # [\#2 PR](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/2) `closed`: Feature/improvements
6438 #### <img src="https://avatars.githubusercontent.com/u/203012?u=939d6d3b5ff0b9e46e911d8792a40c20408574e2&v=4" width="50">[anthraxx](https://github.com/anthraxx) opened issue at [2018-06-20 22:14](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/2):
6440 Improve the source to make it easier to iterate over options by making the checks and all kernel config options a dictionary. Additionally implement logical operator to support or conditional checks.
6442 Refactor option parsing to use pythons argparse
6444 #### <img src="https://avatars.githubusercontent.com/u/203012?u=939d6d3b5ff0b9e46e911d8792a40c20408574e2&v=4" width="50">[anthraxx](https://github.com/anthraxx) commented at [2018-06-20 22:16](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/2#issuecomment-398915150):
6446 At the end lots of lines changed, please ask anything you want to suggest any changes you would like to see. Even through the changes look massive, I believe they will pay out and make some stuff easier to maintain and access for potential future features.
6448 I'm happy to take any feedback :cat:
6450 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2018-06-21 20:50](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/2#issuecomment-399239396):
6452 Thank you very much for your time spent on that!
6453 I like the ideas behind your changes and I want to merge them in the end.
6455 Currently I have 2 concerns about the changes:
6456 1. the commits are really big, I would like to split them. From the top of my head, we can split infrastructure changes from new checks, etc.
6457 2. we should consider the case: MODULES or (MODULE_SIG and MODULE_SIG_ALL and MODULE_SIG_SHA512).
6459 How much time would you like to spend on this? I don't have a right to ask you for more.
6460 At least I see your ideas and I can split (and learn) the commits myself.
6464 #### <img src="https://avatars.githubusercontent.com/u/203012?u=939d6d3b5ff0b9e46e911d8792a40c20408574e2&v=4" width="50">[anthraxx](https://github.com/anthraxx) commented at [2018-06-21 23:13](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/2#issuecomment-399271969):
6466 All of this sounds reasonable to me! I already spent some time on this and I'm sure I may contribute in the future as well so I would be super happy to change the commits as long as it satisfies you!
6467 I will split out the DEVMEM and STACKPROTECTOR changes and see if I can split at even more. Should be easy with rebase edit.
6469 Latter case you described should easily be possible with an AND class that is like the OR class, everything else should work out of the box.
6474 #### <img src="https://avatars.githubusercontent.com/u/32568352?v=4" width="50">[Bernhard40](https://github.com/Bernhard40) commented at [2018-06-22 20:50](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/2#issuecomment-399578012):
6476 Just FYI, in Linux 4.18 `CC_STACKPROTECTOR_STRONG` [was renamed](https://github.com/torvalds/linux/blob/v4.18-rc1/arch/Kconfig#L585) to `STACKPROTECTOR_STRONG` and `CC_STACKPROTECTOR_AUTO` is gone.
6478 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2018-06-25 16:27](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/2#issuecomment-400013145):
6480 Thanks for the info, @Bernhard40. I'll update the STACKPROTECTOR config option when 4.18 is released.
6482 #### <img src="https://avatars.githubusercontent.com/u/203012?u=939d6d3b5ff0b9e46e911d8792a40c20408574e2&v=4" width="50">[anthraxx](https://github.com/anthraxx) commented at [2018-06-25 22:47](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/2#issuecomment-400119687):
6484 @a13xp0p0v I have splitted up the commits as much as made sense, can you please take a look? Really don't fear nitpicking, I'm used to do open-source :yum:
6486 PS: this also handles STACKPROTECTOR_STRONG by using the OR operator.
6488 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2018-06-26 21:26](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/2#issuecomment-400467818):
6490 Thanks a lot for your work, @anthraxx !
6491 I'll review this version in a couple of days.
6494 #### <img src="https://avatars.githubusercontent.com/u/203012?u=939d6d3b5ff0b9e46e911d8792a40c20408574e2&v=4" width="50">[anthraxx](https://github.com/anthraxx) commented at [2018-07-09 18:23](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/2#issuecomment-403574284):
6496 @a13xp0p0v round 2, fight! :cat:
6498 #### <img src="https://avatars.githubusercontent.com/u/203012?u=939d6d3b5ff0b9e46e911d8792a40c20408574e2&v=4" width="50">[anthraxx](https://github.com/anthraxx) commented at [2018-07-14 09:00](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/2#issuecomment-405010041):
6500 Well I personally don't think it's a good idea to parse and check one line separately and don't really see why It can't be a dict. Curious how you want to check AND and OR logic on other opts if the config it not fully parsed yet. Personally, parsing it yet again for such logic sounds like non optimal algorithm/approach to me.
6502 #### <img src="https://avatars.githubusercontent.com/u/203012?u=939d6d3b5ff0b9e46e911d8792a40c20408574e2&v=4" width="50">[anthraxx](https://github.com/anthraxx) commented at [2018-07-14 09:02](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/2#issuecomment-405010151):
6504 Why not just check for existence before assigning parsed_options[config] and call it a day?
6506 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2018-07-14 20:05](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/2#issuecomment-405046688):
6509 You are right. AND & OR logic can't be implemented if we check the config file line by line.
6510 Moreover, separating parsing the file and checks should be a good design solution.
6512 So the first commit in the series is fine.
6513 I would only ask to add the assertion to get_option_state() and call this function outside the Opt class method (just use the Opt.name from outside).
6514 I would also ask to reorder the series:
6515 1. all arch changes and renaming;
6519 If you have no time/motivation for that work, I will do it myself.
6521 Thanks again, @anthraxx. I'm glad to have your attention to this project.
6523 #### <img src="https://avatars.githubusercontent.com/u/203012?u=939d6d3b5ff0b9e46e911d8792a40c20408574e2&v=4" width="50">[anthraxx](https://github.com/anthraxx) commented at [2018-07-14 20:57](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/2#issuecomment-405049389):
6525 Yay! No worries, I like to discuss solutions and opinions as collaborative work and exchange is much more effective!
6526 I would be happy to make the changes as you requested, will push an update and rebased version very soon.
6529 #### <img src="https://avatars.githubusercontent.com/u/4661917?u=bb7aeb3c77839cea055b49b80168666b36315f3d&v=4" width="50">[theLOICofFRANCE](https://github.com/theLOICofFRANCE) commented at [2018-07-19 19:14](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/2#issuecomment-406384461):
6531 I don't know if you're doing it, but CONFIG_ARCH_MMAP_RND_BITS should be replaced by:
6533 CONFIG_ARCH_MMAP_RND_BITS_MIN=28
6534 CONFIG_ARCH_MMAP_RND_BITS_MAX=32
6537 found in Linux kernels: 4.5–4.17, 4.18-rc+HEAD
6539 #### <img src="https://avatars.githubusercontent.com/u/203012?u=939d6d3b5ff0b9e46e911d8792a40c20408574e2&v=4" width="50">[anthraxx](https://github.com/anthraxx) commented at [2018-07-19 20:44](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/2#issuecomment-406408491):
6541 @HacKurx no, i really want to get this PR through finally. After that me, you or whoever can make that CONFIG_ARCH_MMAP_RND_BITS change.
6543 #### <img src="https://avatars.githubusercontent.com/u/203012?u=939d6d3b5ff0b9e46e911d8792a40c20408574e2&v=4" width="50">[anthraxx](https://github.com/anthraxx) commented at [2018-07-19 20:48](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/2#issuecomment-406409433):
6545 @a13xp0p0v I have made the adjustments you wanted to see:
6546 - get_option_state is moved out of the class and assigned before checking
6547 - reordered all commits (wow, this was quite some work >.>)
6549 I really hope we can get this in soon, I'm still there to make any changes if you request some but quite a lot of time already went in to make you happy :cat: :cat:
6551 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2018-07-19 20:56](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/2#issuecomment-406411723):
6555 Cool, thanks for your work, I'm going to do the review soon.
6556 Yes, we've already spent plenty of time on that, because it's not so easy: this PR changes almost everything :)
6558 Anyway, I like your ideas, they will be merged in the end.
6560 #### <img src="https://avatars.githubusercontent.com/u/203012?u=939d6d3b5ff0b9e46e911d8792a40c20408574e2&v=4" width="50">[anthraxx](https://github.com/anthraxx) commented at [2018-07-19 20:58](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/2#issuecomment-406412140):
6562 @a13xp0p0v Yay thanks, don't get me wrong I really like to work with you on this and i really enjoy it very much. Also I'm 100% on your side to get commits that make it into the tree proper, I just wanted to get that the rework conflicted a lot off my chest :smile:
6564 #### <img src="https://avatars.githubusercontent.com/u/203012?u=939d6d3b5ff0b9e46e911d8792a40c20408574e2&v=4" width="50">[anthraxx](https://github.com/anthraxx) commented at [2018-07-19 21:15](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/2#issuecomment-406416764):
6566 @a13xp0p0v just in case you already pulled my branch, please re-pull as there was a typo in the STACKPROTECTOR option, sorry. tested and reviewd every single commit independent from each other again
6568 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2018-07-20 18:09](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/2#issuecomment-406683207):
6572 I've cherry-picked all your architecture improvements and added some minor fixes (please have a look).
6573 You've done a great job, I appreciate it!
6575 Now we are ready to merge your OR and AND support.
6576 I have some questions, could you answer please?
6578 #### <img src="https://avatars.githubusercontent.com/u/203012?u=939d6d3b5ff0b9e46e911d8792a40c20408574e2&v=4" width="50">[anthraxx](https://github.com/anthraxx) commented at [2018-07-21 08:12](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/2#issuecomment-406779757):
6580 These are used to print the table and use the very first option of a logical class to represent the group by showing the first entries name and expected value
6582 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2018-07-24 22:00](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/2#issuecomment-407566128):
6585 Thanks for your explanation.
6586 It took me some time to realize that self.opts[0] is the option which that OR-check is about.
6587 I.e. OR class use case is: OR(<X_is_hardened>, <X_is_disabled>)
6589 I've merged your OR class with my minor fixes.
6591 I don't think that we need AND right now. Rationale: our config checks are already implicitly connected with AND; if any of them fails, the error count increments anyway. Do you agree?
6593 I also have a question about your STACKPROTECTOR commit.
6594 As I see in the kernel git history, the "CC_" prefix is dropped from both STACKPROTECTOR and STACKPROTECTOR_STRONG. So how about having:
6596 - checklist.append(OptCheck('CC_STACKPROTECTOR', 'y', 'ubuntu18', 'self_protection'))
6597 - checklist.append(OptCheck('CC_STACKPROTECTOR_STRONG','y', 'ubuntu18', 'self_protection'))
6598 + checklist.append(OR(OptCheck('CC_STACKPROTECTOR', 'y', 'ubuntu18', 'self_protection'), \
6599 + OptCheck('STACKPROTECTOR', 'y', 'ubuntu18', 'self_protection')))
6600 + checklist.append(OR(OptCheck('CC_STACKPROTECTOR_STRONG','y', 'ubuntu18', 'self_protection'), \
6601 + OptCheck('STACKPROTECTOR_STRONG','y', 'ubuntu18', 'self_protection')))
6604 #### <img src="https://avatars.githubusercontent.com/u/203012?u=939d6d3b5ff0b9e46e911d8792a40c20408574e2&v=4" width="50">[anthraxx](https://github.com/anthraxx) commented at [2018-07-24 22:41](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/2#issuecomment-407575301):
6606 @a13xp0p0v Hmm true, it is for >= 4.18 but for all kernels before 4.18 this would generate an error where non should be. Having CC_STACKPROTECTOR_STRONG without CC_STACKPROTECTOR is a totally correct setting pre 4.18 which would yield to an error.
6607 Its shitty, but the more generally compatible way would be to combine the different "correct sets" with the logical class to just have a single checklist.append for STACKPROTECTOR
6609 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2018-07-24 23:19](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/2#issuecomment-407582510):
6613 - checklist.append(OptCheck('CC_STACKPROTECTOR', 'y', 'ubuntu18', 'self_protection'))
6614 - checklist.append(OptCheck('CC_STACKPROTECTOR_STRONG','y', 'ubuntu18', 'self_protection'))
6615 + checklist.append(OR(OptCheck('CC_STACKPROTECTOR_STRONG','y', 'ubuntu18', 'self_protection'), \
6616 + OptCheck('STACKPROTECTOR_STRONG','y', 'ubuntu18', 'self_protection')))
6619 It fits your logic "be strong or fail".
6620 At the same time it fits the case of old configs, where there is no CC_STACKPROTECTOR, right?
6622 #### <img src="https://avatars.githubusercontent.com/u/203012?u=939d6d3b5ff0b9e46e911d8792a40c20408574e2&v=4" width="50">[anthraxx](https://github.com/anthraxx) commented at [2018-07-25 07:05](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/2#issuecomment-407655722):
6624 yeah, i think that should work :smiley_cat:
6626 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2018-07-25 11:45](https://github.com/a13xp0p0v/kernel-hardening-checker/pull/2#issuecomment-407726202):
6628 Done with STACKPROTECTOR and MODULES.
6629 @anthraxx we have finished with this pull request.
6630 Thanks for your excellent work :thumbsup:
6633 -------------------------------------------------------------------------------
6635 # [\#1 Issue](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/1) `closed`: Couple ideas
6637 #### <img src="https://avatars.githubusercontent.com/u/32568352?v=4" width="50">[Bernhard40](https://github.com/Bernhard40) opened issue at [2018-06-20 13:19](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/1):
6639 Shouldn't [NAMESPACES](https://github.com/a13xp0p0v/kconfig-hardened-check/blob/master/kconfig-hardened-check.py#L94) be replaced by `USER_NS`? AFAIK only user namespaces have security concerns, others are fine. Disabling them all will negatively affect many applications which use various namespaces for sandboxing.
6641 Since linux 4.16 there is `CC_STACKPROTECTOR_AUTO` kconfig which effectively replaces [CC_STACKPROTECTOR_STRONG](https://github.com/a13xp0p0v/kconfig-hardened-check/blob/master/kconfig-hardened-check.py#L54) and make it false negative in script.
6643 Script doesn't check for [DEVMEM](https://github.com/a13xp0p0v/kconfig-hardened-check/blob/master/kspp-recommendations.config#L18) which when set to `n` make [STRICT_DEVMEM](https://github.com/a13xp0p0v/kconfig-hardened-check/blob/master/kconfig-hardened-check.py#L38) and [IO_STRICT_DEVMEM](https://github.com/a13xp0p0v/kconfig-hardened-check/blob/master/kconfig-hardened-check.py#L65) false negative.
6647 #### <img src="https://avatars.githubusercontent.com/u/203012?u=939d6d3b5ff0b9e46e911d8792a40c20408574e2&v=4" width="50">[anthraxx](https://github.com/anthraxx) commented at [2018-06-20 13:23](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/1#issuecomment-398746587):
6649 I already nearly finished a PR for the DEVMEM and CC_STACKPROTECTOR_* case by adding context aware logic to the option checks.
6650 Pull request incoming later today, it extends the options with logical operators like OR()
6652 #### <img src="https://avatars.githubusercontent.com/u/203012?u=939d6d3b5ff0b9e46e911d8792a40c20408574e2&v=4" width="50">[anthraxx](https://github.com/anthraxx) commented at [2018-06-20 19:14](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/1#issuecomment-398864576):
6654 @a13xp0p0v please no force push, that creates weird merge diffs when working on something :smile_cat:
6656 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2018-06-20 20:43](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/1#issuecomment-398890140):
6658 @Bernhard40 , thanks a lot for the ideas. I agree. Just fixed the namespaces mistake.
6659 @anthraxx , thanks, cool! Waiting for your PR.
6660 And, yes, no more force push from me.
6662 #### <img src="https://avatars.githubusercontent.com/u/1419667?u=de82e29061c3ef5f1c19f95528f8a82b08051fd2&v=4" width="50">[a13xp0p0v](https://github.com/a13xp0p0v) commented at [2018-07-04 15:38](https://github.com/a13xp0p0v/kernel-hardening-checker/issues/1#issuecomment-402512111):
6664 Closing, since @anthraxx PR will resolve it.
6667 -------------------------------------------------------------------------------