The PHP Group plans to release new versions of the PHP processor on Tuesday in order to patch two publicly known critical remote code execution vulnerabilities, one of which was improperly addressed in a May 3 update.
One of the vulnerabilities is known as CVE-2012-1823 and is located in php-cgi, a component that allows PHP to run in a Common Gateway Interface (CGI) configuration. It was discovered and reported privately to the PHP Group in mid-January by a team of computer security enthusiasts called De Eindbazen.
[ Get your websites up to speed with HTML5 today using the techniques in InfoWorld's HTML5 Deep Dive PDF how-to report. | Learn how to secure your Web browsers in InfoWorld's "Web Browser Security Deep Dive" PDF guide. ]
The bug allows for URL query strings that contain the "-" character to be interpreted by the php-cgi binary as command line switches, such as -s, -d, -c. The vulnerability can be exploited to disclose source code from PHP scripts or to remotely execute arbitrary code on vulnerable systems.
On May 3, the PHP Group released PHP 5.3.12 and PHP 5.4.2 as emergency updates in order to address the remote code execution flaw after technical details about it were accidentally made public.
However, shortly afterward, Stefan Esser, the creator of the Suhosin PHP security extension, and other security experts pointed out via Twitter that the CVE-2012-1823 fix included in PHP 5.3.12 and PHP 5.4.2 can easily be bypassed.
The PHP Group acknowledged the ineffectiveness of its original patch on Sunday and announced plans to release new updates on Tuesday. "These [upcoming] releases will fix the CGI flaw and another CGI-related issue in apache_request_header (5.4 only)," the PHP developers wrote.
The announcement also included a workaround for CVE-2012-1823 based on Apache's mod_rewrite module that can be used to block queries containing "-". However, the workaround's generic rewrite conditions could end up blocking legitimate queries like "?top-40" as well, so every Web server administrator needs to alter the workaround to fit their particular needs.
The second issue to be patched on Tuesday, which involves the apache_request_header, is a heap buffer overflow vulnerability that can also be exploited for remote code execution, Georg Wicherski, the malware analyst and exploit developer who discovered it, said Friday on Twitter.
In follow-up tweets Wicherski explained how the vulnerability can be exploited and posted a link to a patch that has been sent to the PHP developers for review several weeks ago.
Esser believes that not getting patches right the first time and being forced to release new ones for the same vulnerability can create confusion among users. The security researcher took issue with the fact that the PHP Group did not post an alert quicker on the php.net front page to alert users that the PHP 5.3.12 and PHP 5.4.2 updates were broken.
A Web server admin who installs one of those updates and then sees a warning about the vulnerability on a news website the following day, might think that he already has the problem covered, he said Friday on Twitter.