A bug in GNU C Library allows unprivileged user to preload libraries located in /lib or /usr/lib directories into SUID programs even if those libraries have not been marked as such by system administrator.
LD_PRELOAD variable is honoured normally even for SUID/SGID applications (but removed afterwards from environment) if it does not contain `/' characters, but there is a special check which only preloads found libraries if they have the SUID bit set. However, if a library has been found in /etc/ld.so.cache, this check was not performed. As a result, a malicious user could preload some /lib or /usr/lib library before SUID/SGID application and create or overwrite a file he did not have permissions to. Also, LD_PROFILE output from SUID programs would go into /var/tmp, making it vulnerable to various link attacks.