Piwik 2.14.3 PHP Object Injection Vulnerability

ID 1337DAY-ID-24497
Type zdt
Reporter EgiX
Modified 2015-11-04T00:00:00


Piwik versions 2.14.3 and below suffer from a PHP object injection vulnerability that can lead to remote code execution.

Piwik <= 2.14.3 (DisplayTopKeywords) PHP Object Injection Vulnerability

[-] Software Link:


[-] Affected Versions:

Version 2.14.3 and prior versions.  

[-] Vulnerability Description:

The vulnerability is caused by the DisplayTopKeywords() function
defined in the /plugins/Referrers/Controller.php script:

358.  function DisplayTopKeywords($url = "", $api)
359.  {
360.      // Do not spend more than 1 second fetching the data
361.      @ini_set("default_socket_timeout", $timeout = 1);
362.      // Get the Keywords data
363.      $url = empty($url) ? "http://" . $_SERVER["HTTP_HOST"] ...
364.      $api = $api . "&url=" . urlencode($url);
365.      $keywords = @unserialize(file_get_contents($api));

The content retrieved by the "file_get_contents()" function located at the URL defined in
the $api variable is passed directly to the "unserialize()" function at line 365, and this
can be exploited to inject arbitrary objects into the application scope, allowing remote
attackers to carry out Server-Side Request Forgery (SSRF) attacks, to include and execute
arbitrary PHP code, and possibly other attacks. Successful exploitation of this vulnerability
requires the application running with certain configuration settings allowing to manipulate
the value of the $api variable through HTTP headers (like Host or X-Forwarded-Host).

[-] Solution:

Update to version 2.15.0 or later.

[-] Disclosure Timeline:

[27/08/2015] - Vendor notified
[09/09/2015] - Issue fixed on the GitHub repository: http://git.io/vly3D
[06/10/2015] - CVE number requested
[14/10/2015] - CVE number assigned
[22/10/2015] - Version 2.15.0 released: https://piwik.org/changelog/piwik-2-15-0
[04/11/2015] - Public disclosure

[-] CVE Reference:

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

[-] Credits:

Vulnerability discovered by Egidio Romano.

#  0day.today [2018-04-05]  #