- Advisory ID: DRUPAL-SA-CONTRIB-2016-029
- Project: Services (third-party module)
- Version: 7.x
- Date: 2017-March-08
- Security risk: 21/25 ( Highly Critical) AC:None/A:None/CI:All/II:All/E:Theoretical/TD:Default
- Vulnerability: Arbitrary PHP code execution
This module provides a standardized solution for building API's so that external clients can communicate with Drupal.
The module accepts user submitted data in PHP's serialization format ("Content-Type: application/vnd.php.serialized") which can lead to arbitrary remote code execution.
This vulnerability is mitigated by the fact that an attacker must know your Service Endpoint's path, and the Service Endpoint must have "application/vnd.php.serialized" enabled as a request parser. The module does not create endpoints by default, however the "application/vnd.php.serialized" request parser is enabled by default on any endpoints created by a site builder.
CVE identifier(s) issued
- A CVE identifier will be requested, and added upon issuance, in accordance with Drupal Security Team processes.
- Services 7.x-3.x versions prior to 7.x-3.19.
Drupal core is not affected. If you do not use the contributed Services module, there is nothing you need to do.
Install the latest version:
- If you use the Services 3.x module for Drupal 7.x, upgrade to Services 7.x-3.19
You may disable "application/vnd.php.serialized" under "Request parsing" in Drupal to prevent the exploit: /admin/structure/services/list/[my-endpoint]/server
However, installing the latest version of the Services module is highly recommended.
Also see the Services project page.
Contact and More Information
The Drupal security team can be reached at security at drupal.org or via the contact form at https://www.drupal.org/contact.
Follow the Drupal Security Team on Twitter at https://twitter.com/drupalsecurity
Edited 2017 March 9th to add details about which elements of the vulnerability are default or not.