The glibc implementation of unsetenv() fails to properly remove one of two successive occurrences of the same environment variable if the variable is redundently passed to a program.
The glibc implementation of unsetenv(), if called to remove an environment variable that occurs two times in succession on the environment variable list, will fail to remove one of the occurences due to an off-by-one error in the implementation.
An attacker can pass multiple occurrences of a sensitive environment variable (such as LD_LIBRARY_PATH, LD_PRELOAD, etc.) to a setuid root program. Even if glibc forces that program to ignore these variables, they may be passed along to a program called from the setuid root program. Using this indirect execution, an attacker might cause malicious code to be executed as root.
Apply vendor patches; see the Systems Affected section below.
The original report of this vulnerability was by Tymm Twillman <firstname.lastname@example.org>.
This document was last modified by Tim Shimeall.
|Date First Published:||2001-05-17|
|Date Last Updated:||2002-09-13 17:19 UTC|