SPIP 3.1.2 Server Side Request Forgery (CVE-2016-7999)

SPIP 3.1.2 Server Side Request Forgery (CVE-2016-7999)

Product Description

SPIP is a publishing system for the Internet, which put importance on collaborative working, multilingual environments and ease of use. It is free software, distributed under the GNU/GPL licence.

Vulnerability Description

It's possible to send HTTP/FTP requests using the valider_xml file. Attackers can make it look like the server is sending the request, possibly bypassing access controls such as a firewall that would prevent the attacker from accessing the URLs directly.

Access Vector: remote

Security Risk: medium

Vulnerability: CWE-918

CVSS Base Score: 5.5 (Medium)

CVE-ID: CVE-2016-7999

Proof of Concept

http://spip-dev.srv/ecrire/?exec=valider_xml&var_url=http://router-dev.srv/
http://spip-dev.srv/ecrire/?exec=valider_xml&var_url=ftp://ftp.debian.org/

Vulnerable code

The FTP connection is initialized by the is_dir function inside valider_xml, line 79 :

if (is_dir($url)) {

Other PHP Wrappers supporting is_dir can be called using this function.

The HTTP connection is initiated at line 123:

$res = $transformer_xml(recuperer_page($url));

Timeline (dd/mm/yyyy)

  • 15/09/2016 : Initial discovery
  • 26/09/2016 : Contact with SPIP Team
  • 27/09/2016 : Answer from SPIP Team, sent advisory details
  • 27/09/2016 : Server Side Request Forgery vulnerability correct vulnerabilities.
  • 30/09/2016 : SPIP 3.1.3 Released

Fixes

  • https://core.spip.net/projects/spip/repository/revisions/23188
  • https://core.spip.net/projects/spip/repository/revisions/23193

Affected versions

  • Version <= 3.1.2

Credits

  • Nicolas CHATELAIN, Sysdream (n.chatelain -at- sysdream -dot- com)