Concrete5 <= 5.7.3.1 (sendmail) Remote Code Execution Vulnerability

https://www.concrete5.org

• Affected Versions:

Version 5.7.3.1 and probably other versions.

• Vulnerability Description:

The vulnerable code is located in /concrete/controllers/single_page/dashboard/system/registration/open.php:

21switch ($this->post('registration_type')) {
22    case "enabled":
23        Config::save('concrete.user.registration.enabled', true);
24        Config::save('concrete.user.registration.validate_email', false);
25        Config::save('concrete.user.registration.approval', false);
26        Config::save('concrete.user.registration.notification', $this->post('register_notification'));
27        Config::save(
28            'concrete.user.registration.notification_email',
29            Loader::helper('security')->sanitizeString(
30                $this->post('register_notification_email')));
31        break;

User input passed through the “register_notification_email” POST parameter is not properly sanitized before being stored into a configuration setting at lines 27-30 (the sanitizeString() method doesn’t check if it is a valid email address). This value is used as a sender email address to send out a notification email when a new user is being registered, and this is done using the mail() PHP function, specifically passing such value to its fifth parameter. So, when sendmail is used to send out such an email, it is possible to alter the command line and tell the sendmail program to log all the email traffic in an arbitrary file chosen by the attacker, resulting in an arbitrary PHP code execution. This vulnerability is mitigated by the fact that it can be exploited only by authenticated administrator users (even though it could be exploited via a Cross-Site Request Forgery attack as well) and only if the email is being sent with sendmail.

• Solution:

Update to version 5.7.4 or later.

• Disclosure Timeline:

[05/05/2015] – Vulnerability details sent through HackerOne

[05/05/2015] – Vendor said a patch has been committed and will be available in the next version

[07/05/2015] – Version 5.7.4 released along with the patch for this vulnerability

[06/06/2015] – Vulnerability publicly disclosed on HackerOne

[11/06/2015] – CVE number requested

[11/06/2015] – Publication of this advisory

[23/06/2015] – CVE number assigned

• CVE Reference:

The Common Vulnerabilities and Exposures project (cve.mitre.org) has assigned the name CVE-2015-4722 to this vulnerability.

• Credits:

Vulnerability discovered by Egidio Romano of Minded Security.

• Other References:

https://mindedsecurity.com/advisories/msa110615-1

https://hackerone.com/reports/59663