X2Engine <= 4.1.7 (SiteController.php) PHP Object Injection Vulnerability
• Software Link:
• Affected Versions:
All versions from 2.8 to 4.1.7.
• Vulnerability Description:
The vulnerable code is located in the “actionSendErrorReport” method defined in /protected/controllers/SiteController.php:
public function actionSendErrorReport(){ if(isset($_POST['report'])){ $errorReport = $_POST['report']; $errorReport = unserialize(base64_decode($errorReport)); if(isset($_POST['email'])){ $errorReport['email'] = $_POST['email']; }
User input passed through the “report” POST parameter is not properly sanitized before being used in a call to the “unserialize()” function at line 156. This can be exploited to inject arbitrary PHP objects into the application scope, and could allow an attacker to carry out Server-Side Request Forgery (SSRF) and possibly other attacks via specially crafted serialized objects.
• Solution:
Apply the vendor patch or update to version 4.2 or later.
• Disclosure Timeline:
[31/07/2014] – Vendor notified
[31/07/2014] – Vendor released security patch: http://x2community.com/?showtopic=1804
[01/08/2014] – CVE number requested
[16/08/2014] – CVE number assigned
[05/09/2014] – Version 4.2 released
[23/09/2014] – Public disclosure
• CVE Reference:
The Common Vulnerabilities and Exposures project (cve.mitre.org)
has assigned the name CVE-2014-5297 to this vulnerability.
• Credits:
Vulnerability discovered by Egidio Romano.