qdPM <= 9.1 (executeExport) PHP Object Injection Vulnerability

http://qdpm.net

• Affected Versions:

Version 9.1 and prior versions.

• Vulnerability Description:

The vulnerability is located in the /core/apps/qdPM/modules/timeReport/actions/actions.class.php script, specifically within the timeReportActions::executeExport() method:

295public function executeExport(sfWebRequest $request)
296{        
297  $separator = "\t";
298  $format = $request->getParameter('format');
299  $filename = $request->getParameter('filename');
300   
301  $export = unserialize($request->getParameter('export'));

User input passed through the “export” request parameter is not properly sanitized before being used in a call to the unserialize() function at line 301. This can be exploited by malicious users to inject arbitrary PHP objects into the application scope, allowing them to carry out a variety of attacks, such as executing arbitrary OS commands.

• Proof of Concept:

http://karmainsecurity.com/pocs/CVE-2020-26165

• Solution:

Upgrade to version 9.2 or later.

• Disclosure Timeline:

[29/02/2020] – Vendor notified

[08/04/2020] – No response, vendor contacted again

[09/04/2020] – Vendor replies they will fix the vulnerability in a summer release

[30/09/2020] – Summer is gone and a new version hasn’t been released, vendor contacted again

[30/09/2020] – Vendor replies they’re working on version 10, and should be ready in this year

[30/09/2020] – CVE number requested and assigned

[02/12/2020] – Vendor informed about public disclosure by the end of the year

[30/12/2020] – Public disclosure

[01/07/2021] – Version 9.2 released

• CVE Reference:

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

• Credits:

Vulnerability discovered by Egidio Romano.