-
CONFIG_STACK_POINTER_RANDOM
¶
Initial stack pointer randomization bounds
Type: int
Help¶
This option performs a limited form of Address Space Layout Randomization by offsetting some random value to a thread’s initial stack pointer upon creation. This hinders some types of security attacks by making the location of any given stack frame non-deterministic.
This feature can waste up to the specified size in bytes the stack region, which is carved out of the total size of the stack region. A reasonable minimum value would be around 100 bytes if this can be spared.
This is currently only implemented for systems whose stack pointers grow towards lower memory addresses.
Direct dependencies¶
!STACK_GROWS_UP
&& MULTITHREADING
&& (TEST_RANDOM_GENERATOR
|| ENTROPY_HAS_DRIVER
)
(Includes any dependencies from ifs and menus.)
Default¶
0
Kconfig definition¶
At <Zephyr>/kernel/Kconfig:698
Included via <Zephyr>/Kconfig:8
→ <Zephyr>/Kconfig.zephyr:30
Menu path: (Top) → General Kernel Options → Security Options
config STACK_POINTER_RANDOM int "Initial stack pointer randomization bounds" default 0 depends on !STACK_GROWS_UP
&&MULTITHREADING
&& (TEST_RANDOM_GENERATOR
||ENTROPY_HAS_DRIVER
) help This option performs a limited form of Address Space Layout Randomization by offsetting some random value to a thread's initial stack pointer upon creation. This hinders some types of security attacks by making the location of any given stack frame non-deterministic. This feature can waste up to the specified size in bytes the stack region, which is carved out of the total size of the stack region. A reasonable minimum value would be around 100 bytes if this can be spared. This is currently only implemented for systems whose stack pointers grow towards lower memory addresses.
(The ‘depends on’ condition includes propagated dependencies from ifs and menus.)