Abstract
Failure to adhere to the principle of least privilege
amplifies the risk posed by other vulnerabilities.
Description
Programs that run with root privileges have caused
innumerable Unix security disasters. It is imperative that
you carefully review privileged programs for all kinds of
security problems, but it is equally important that
privileged programs drop back to an unprivileged state as
quickly as possible in order to limit the amount of damage
that an overlooked vulnerability might be able to cause.
Privilege management functions can behave in some
less-than-obvious ways, and they have different quirks on
different platforms. These inconsistencies are particularly
pronounced if you are transitioning from one non-root user
to another.
Signal handlers and spawned processes run at the
privilege of the owning process, so if a process is running
as root when a signal fires or a sub-process is executed,
the signal handler or sub-process will operate with root
privileges. An attacker may be able to leverage these
elevated privileges to do further damage.