Related Posts Word Press Plugin Cross Site Scripting Vulnerability -CVE-2011-0760
Copyright and Disclaimer
The information in this advisory is Copyright 2010 Conviso and provided so that the society can understand the risk they may be facing by running affected software, hardware or other components used on their systems. In case you wish to copy information from this advisory, you must either copy all of it or refer to this document (including our URL). No guarantee is provided for the accuracy of this information, or damage you may cause your systems in testing.
Conviso is a consulting company specialized on application security. Our values are based on the allocation of the adequate competencies on the field, a clear and direct speech with the market, collaboration and partnership with our customers and business partners and constant investments on methodology and research improvement.
This advisory has been discovered as part of a general investigation into the security of software used in the IT environments of our customers. For more information about our company and services provided, please check our website at http://www.conviso.com.br.
The Security Research
Conviso maintains a virtual team dedicated to explore our customer’s environments in order to identify technical vulnerabilities in software and hardware, developing real-world mitigation solutions and processes to maintain more secure environments. Leaded by Wagner Elias, our CTO, this team is named Conviso Labs and also contribute to important world-class organizations projects and organizations.
The vulnerability described in this security advisory was discovered by Gabriel Quadros on December 22nd 2010 during a internal security research.
The WordPress Related Posts Plugin, available at http://WordPress.org/extend/plugins/wp-related-posts/ shows the posts related to others posts. This advisory describes multiple Stored Cross Site Scripting (XSS) vulnerabilities and one Cross Site Request Forgery (CSRF) vulnerability on the plugin.
As a result, an attacker can gain elevated access privileges to sensitive page content, session cookies, and a variety of other information maintained by the web browser on behalf of the WordPress administrator. Furthermore, the attacker can perform actions with administrative privileges.
This problem was confirmed in the latest version of the plugin – WP Related Posts 1.0, other versions maybe also affected.
CVSS Scoring System
Conviso calculated the scores using the online CVSS calculator found at http://www.patchadvisor.com/PatchAdvisor/CVSSCalculator.aspx and described at http://www.first.org/cvss/cvss-guide.pdf.
The CVSS score is: 6.4
- Base Score: 6.7
- Temporal Score: 6.4
We used the following values to calculate the scores:
- Base score is: AV:N/AC:L/Au:N/C:C/I:C/A:N
- Temporal score is: E:F/RL:U/RC:C
The plugin’s configuration page is vulnerable to Stored Cross Site Scripting. The three fields wp_relatedposts_ title, wp_relatedposts_num and wp_relatedposts_type are received through POST or GET and included on the response page with inadequate sanitization. The vulnerable code is shown bellow:
158: <tr valign=”top”>
159: <th scope=”row”>Title:</th>
160: <td><input type=”text”
162: <tr valign=”top”>
163: <th scope=”row”>Number posts:</th>
164: <td><input type=”text”
166: <tr valign=”top”>
167: <th scope=”row”>Related on:</th>
169: <select name=”wp_relatedposts_type”>
Another vulnerable piece of code is the one which prints the related posts list. The title, eceived through the parameter wp_relatedposts_title, is included with little sanitization into suchs lists. The vulnerable code is shown bellow:
79: $relatedpost.= ‘<br><br><br><h3>’ . $options[‘title’] . ‘</h3><ul>’;
120: $relatedpost.= ‘<br><br><br><h3>’ . $options[‘title’] . ‘</h3><ul>’;
The developers have not provided a patch or workaround. The solution should add code to sanitize the values before including them using the htmlspecialchars() function or equivalent. Furthermore, a mechanism to protect against the CSRF is needed to prevent an attacker from changing the plugin’s configuration.
The Common Vulnerabilities and Exposures (CVE) project has assigned the name CVE-2011-0760 to this issue.