summaryrefslogtreecommitdiffstats
path: root/platforms/toolchain_hardening.in
blob: 291d5a834770af8cfdbe2a2e04736c1828ef4672 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
## SECTION=architecture_options

menu "hardening options             "

choice
	prompt "Stack Protector"
	help
	  This is a mainline GCC feature, which adds safety checks against
	  stack overwrites. This renders many potential code injection
	  attacks into aborting situations. In the best case this turns
	  code injection vulnerabilities into denial of service or into
	  non-issues (depending on the application).
	  http://en.wikipedia.org/wiki/Stack-smashing_protection

config TARGET_HARDEN_STACK_NONE
	bool
	prompt "disabled                   "

config TARGET_HARDEN_STACK
	bool
	prompt "cc -fstack-protector       "

config TARGET_HARDEN_STACK_STRONG
	bool
	prompt "cc -fstack-protector-strong"

config TARGET_HARDEN_STACK_ALL
	bool
	prompt "cc -fstack-protector-all   "

endchoice

config TARGET_HARDEN_FORTIFY
	bool
	prompt "Enable glibc protections (cc -D_FORTIFY_SOURCE=2)"
	help
	  During code generation the compiler knows a great deal of
	  information about buffer sizes (where possible), and attempts to
	  replace insecure unlimited length buffer function calls with
	  length-limited ones. This is especially useful for old, crufty
	  code.

config TARGET_HARDEN_RELRO
	bool
	prompt "Enable 'RELocation Read-Only' (ld -z relro)"
	help
	  Several ELF sections need to be written to by the linker, but can
	  be turned read-only after starting. Most notably this prevents
	  GOT overwrites attacks.

config TARGET_HARDEN_BINDNOW
	bool
	prompt "Enable 'Bind Now' (ld -z now)"
	help
	  Perform all dynamic bindings at start-up instead of on-demand.
	  This prevents PLT overwrite attacks.

config TARGET_HARDEN_PIE
	bool
	prompt "Enable 'Position Independent Executables' (-fPIE -pie)"
	help
	  Position Independent Executable are needed for effective Address
	  Space Layout randomization.
	  http://en.wikipedia.org/wiki/ASLR


endmenu