PHP is a general-purpose scripting language widely used to develop web-based applications. It can run inside a web server using the mod_php module or the CGI version of PHP, or can run stand-alone in a CLI.
Several security vulnerabilities were found and fixed in version 4.3.8 of PHP. The strip_tags() function, used to sanitize user input, could in certain cases allow tags containing \0 characters (CAN-2004-0595). When memory_limit is used, PHP might unsafely interrupt other functions (CAN-2004-0594). The ftok and itpc functions were missing safe_mode checks. It was possible to bypass open_basedir restrictions using MySQL's LOAD DATA LOCAL function. Furthermore, the IMAP extension was incorrectly allocating memory and alloca() calls were replaced with emalloc() for better stack protection.
Successfully exploited, the memory_limit problem could allow remote excution of arbitrary code. By exploiting the strip_tags vulnerability, it is possible to pass HTML code that would be considered as valid tags by the Microsoft Internet Explorer and Safari browsers. Using ftok, itpc or MySQL's LOAD DATA LOCAL, it is possible to bypass PHP configuration restrictions.
There is no known workaround that would solve all these problems. All users are encouraged to upgrade to the latest available versions.
All PHP, mod_php and php-cgi users should upgrade to the latest stable version:
# emerge sync
# emerge -pv ">=dev-php/php-4.3.8"
# emerge ">=dev-php/php-4.3.8"
# emerge -pv ">=dev-php/mod_php-4.3.8"
# emerge ">=dev-php/mod_php-4.3.8"
# emerge -pv ">=dev-php/php-cgi-4.3.8"
# emerge ">=dev-php/php-cgi-4.3.8"