PEAR XML_RPC is the PEAR-ified version of Useful Inc's XML-RPC for PHP, which is "a PHP implementation of the XML-RPC protocol. It has support for HTTP transport, proxies and authentication".
A malformed XMLRPC request can result in execution of arbitrary injected PHP code.
Vulnerable Systems:
* PEAR XML_RPC version 1.3.3 and prior
* PHPXMLRPC version 1.1.1 and prior
Immune Systems:
* PEAR XML_RPC version 1.4.0
* PHPXMLRPC version 1.2
When the library parses XMLRPC requests/responses, it constructs a string of PHP code, that is later evaluated. This means any failure to properly handle the construction of this string can result in arbitrary execution of PHP code.
In late June a problem was discovered, that certain XML tags where using single quotes around embedded user input and single quotes where not escaped. This allowed a typical injection attack. While all these escaping problems were believed to be fixed, new ways to inject code where find.
This new injection vulnerability is cause by not properly handling the situation, when certain XML tags are nested in the parsed document, that were never meant to be nested at all. This can be easily exploited in a way, that user-input is placed outside of string delimiters within the evaluation string, which obviously results in arbitrary code execution.
Therefore Hardened have added a XML tag nesting verification into the code and additionally removed all call to eval(). Therefore the resulting patch eliminates the current and the possibility for future eval() holes. Additionally this means from the diff between a vulnerable and a not vulnerable version it is not possible to find the position of the flaw easily.
Disclosure Timeline:
22. July 2005 - Contact with both library vendors established. Issue is discussed and a patch that eliminates the use of eval() is developed, improved and tested.
12. August 2005 - Affected applications are contacted and asked for beta test of the patches.
14. August 2005 - Vendors release bugfixed versions, after information about this vulnerability leaked through one of the affected applications to the public.
15. August 2005 - Public disclosure