This vulnerability occurs when an application tries to lower its system privileges but fails to verify that the operation was successful.
When a program temporarily elevates its permissions to perform a sensitive task, it should reliably revert to a less-privileged state afterward. If the code doesn't properly confirm this privilege drop—perhaps due to a missing error check or a flawed verification logic—the application continues running with its elevated access rights. This creates a critical security gap, as an attacker could potentially exploit the retained high privileges to perform unauthorized actions, access restricted data, or modify system settings. Essentially, the intended security boundary fails, leaving the system exposed to the very risks the privilege drop was meant to prevent.
Impact: Gain Privileges or Assume Identity
If privileges are not dropped, neither are access rights of the user. Often these rights can be prevented from being dropped.
Impact: Gain Privileges or Assume IdentityHide Activities
If privileges are not dropped, in some cases the system may record actions as the user which is being impersonated rather than the impersonator.
Strategy: Separation of Privilege
Effectiveness: High
c++Medium