Simplified doc-site generation
[AGL/documentation.git] / docs / 2_Architecture_Guides / 2.2_Security_Blueprint / 4_Kernel / 1.2.4.0_Abstract.md
1 ---
2 edit_link: ''
3 title: Introduction
4 origin_url: >-
5   https://raw.githubusercontent.com/automotive-grade-linux/docs-sources/master/docs/security-blueprint/part-4/0_Abstract.md
6 ---
7
8 <!-- WARNING: This file is generated by fetch_docs.js using /home/boron/Documents/AGL/docs-webtemplate/site/_data/tocs/architecture/master/security_blueprint-security-blueprint-book.yml -->
9
10 # Part 4 - Kernel
11
12 ## Abstract
13
14 **System Hardening:** Best practices associated with the configuration of an
15 embedded Linux based operating system. This section includes both hardening of
16 the kernel itself, as well as specific configurations and patches used to
17 protect against known vulnerabilities within the build and configuration of the
18 root filesystem.
19
20 At the Kernel level, we must ensure that no console can be launched. It could be
21 used to change the behavior of the system or to have more information about it.
22 Another aspect is the protection of the memory used by the Kernel.
23
24 The next sub-sections contain information on various kernel configuration
25 options to enhance the security in the kernel (3.10.17) and also for
26 applications compiled to take advantage of these security features.
27 Additionally, there are also configuration options that protect from known
28 vulnerable configuration options. Here's a high level summary of various kernel
29 configurations that shall be required for deployment.
30
31 ## Kernel Version
32
33 The choice of kernel version for the AGL system is essential to its security.
34 Depending on the type of board and eventual production system, different kernel
35 versions are used. For example, one of the systems under study uses the
36 Linux kernel version 3.10, while another uses the Linux kernel version 4.4.
37 For the Linux kernel version 3.10.31, there are 25 known vulnerabilities.
38 These vulnerabilities would allow an attacker to gain privileges,
39 bypass access restrictions, allow memory to be corrupted, or cause denial of service.
40 In contrast, the Linux kernel version of 4.4 has many fewer known vulnerabilities.
41 For this reason, we would in general recommend the later kernel version as a basis
42 for the platform.
43
44 Note that, although there are fewer known vulnerabilities in the most recent kernel
45 versions there may be many unknown vulnerabilities underlying.
46 A rule of thumb is to update the kernel as much as possible to avoid the problems
47 you do know, but you should not be complacent in the trust that you place in it.
48 A defense-in-depth approach would then apply.
49
50 If there are constraints and dependencies in upgrading to a newer kernel version
51 (e.g. device drivers, board support providers) and you are forced to an older
52 Linux kernel version, there need to be additional provisions made to reduce
53 the risk of kernel exploits, which can include memory monitoring, watch-dog services,
54 and system call hooking. In this case, further defense-in-depth techniques
55 may be required to mitigate the risk of attacks to known vulnerabilities,
56 which can also include runtime integrity verification of components
57 that are vulnerable to tampering.
58
59 ## Kernel Build Configuration
60
61 The kernel build configuration is extremely important for determining the level
62 of access to services and to reduce the breadth of the attack surface.
63 Linux contains a great and flexible number of capabilities and this is only controlled
64 through the build configuration. For example, the `CONFIG_MODULES` parameter
65 allows kernel modules to be loaded at runtime extending the capabilities of the kernel.
66 This capability needs to be either inhibited or controlled at runtime through
67 other configuration parameters. For example, `CONFIG_MODULE_SIG_FORCE=y` ensures
68 that only signed modules are loaded. There is a very large number of kernel
69 configuration parameters, and these are discussed in detail in this section.