Prevention of Privilege Escalation
The Solaris kernel prevents privilege escalation. Privilege escalation is when a privilege enables a
process to do more than the process should be able to do. To
prevent a process from gaining more privileges than the process should have, certain
system modifications require the full set of privileges. For example, a file or
process that is owned by root (UID=0) can only be changed by
a process with the full set of privileges. The root user does not
require privileges to change a file that root owns. However, a non-root user
must have all privileges in order to change a file that is owned
by root.
Similarly, operations that provide access to devices require all privileges in the effective
set.
The file_chown_self and proc_owner privileges are subject to privilege escalation. The file_chown_self privilege allows
a process to give away its files. The proc_owner privilege allows a process
to inspect processes that the process does not own.
The file_chown_self privilege is limited by the rstchown system variable. When the
rstchown variable is set to zero, the file_chown_self privilege is removed from the initial
inheritable set of the system and of all users. For more information on
the rstchown system variable, see the chown(1) man page.
The file_chown_self privilege is most safely assigned to a particular command, placed in
a profile, and assigned to a role for use in a profile shell.
The proc_owner privilege is not sufficient to switch a process UID to 0.
To switch a process from any UID to UID=0 requires all privileges.
Because the proc_owner privilege gives unrestricted read access to all files on the
system, the privilege is most safely assigned to a particular command, placed in
a profile, and assigned to a role for use in a profile shell.
Caution - A user's account can be modified to include the file_chown_self privilege or
the proc_owner privilege in the user's initial inheritable set. You should have overriding
security reasons for placing such powerful privileges in the inheritable set of privileges for
any user, role, or system.
For details of how privilege escalation is prevented for devices, see Privileges and Devices.