SECURITY-FLAGS(7) Standards, Environments, and Macros SECURITY-FLAGS(7)
NAME
security-flags - process security flags
DESCRIPTION
Each process on an illumos system has an associated set of security-flags
which describe additional per-process security and exploit mitigation
features which are enabled for that process.
There are four sets of these flags for each process, the effective set
(abbreviated
E) are the set which currently apply to the process and are
immutable. The inheritable set (abbreviated
I) are the flags which will
become effective the next time the process calls one of the
exec(2) family of functions, and will be inherited as both the effective and
inheritable sets by any child processes. The upper set (abbreviated
U)
specify the maximal flags that a process can have in its inheritable set.
The lower set (abbreviated
L) specify the minimal amount of flags that a
process must have in its inheritable set. The inheritable set may be
changed at any time, subject to permissions and the lower and upper sets.
To change the security-flags of a process one must have both permissions
equivalent to those required to send a signal to the process and have the
PRIV_PROC_SECFLAGS privilege.
Currently available features are:
Address Space Layout Randomisation (
ASLR)
The base addresses of the stack, heap and shared library
(including
ld.so) mappings are randomised, the bases of mapped
regions other than those using
MAP_FIXED are randomised.
Currently, executable base addresses are
not randomised, due
to which the mitigation provided by this feature is currently
limited.
This flag may also be enabled by the presence of the
DT_SUNW_ASLR dynamic tag in the
.dynamic section of the
executable file. If this tag has a value of 1, ASLR will be
enabled. If the flag has a value of
0 ASLR will be disabled.
If the tag is not present, the value of the ASLR flag will be
inherited as normal.
Forbid mappings at NULL (
FORBIDNULLMAP)
Mappings with an address of 0 are forbidden, and return EINVAL
rather than being honored.
Make the userspace stack non-executable (
NOEXECSTACK)
The stack will be mapped without executable permission, and
attempts to execute it will fault.
System default security-flags are configured via properties on the
svc:/system/process-security service, which contains a boolean property
per-flag in the
default,
lower and
upper, property groups. The value
indicates the setting of the flag, flags with no value take their
defaults. For example, to enable ASLR by default you would execute the
following commands:
# svccfg -s svc:/system/process-security setprop default/aslr = true
To restore the setting to the defaults you would execute:
# svccfg -s svc:/system/process-security delpropvalue default/aslr true
This can be done by any user with the
solaris.smf.value.process-security authorization.
Since security-flags are strictly inherited, this will not take effect
until the system or zone is next booted.
SEE ALSO
psecflags(1),
brk(2),
exec(2),
mmap(2),
mmapobj(2),
privileges(7),
rbac(7),
svccfg(8) June 6, 2016
SECURITY-FLAGS(7)