CVE-2016-6296
Critical · 9.8CVSS
9.8
EPSS
6.3%
Published
Jul 25, 2016
CISA due date
—
Cloudanix analysis
Older versions of PHP contain a flaw that lets remote attackers crash the server or potentially run malicious code simply by sending a specially crafted request to XML-RPC features.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Remote Code Execution
- Component
- Library
- Class
- Memory Corruption
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Integer signedness error in simplestring_addn triggers heap-based buffer overflow when processing an oversized first argument to xmlrpc_encode_request, enabling memory corruption that can lead to denial of service or arbitrary code execution.
Why it matters to the business
Attackers can remotely crash PHP applications or execute code on unpatched systems, resulting in service outages, data breaches, or full host compromise; widespread use of affected PHP versions increases organizational exposure.
How an attack unfolds
An attacker crafts a malicious request containing an excessively long parameter and supplies it to a PHP application that invokes xmlrpc_encode_request; the signedness error causes an undersized allocation followed by an overflow write, corrupting heap memory and allowing control-flow hijacking or process termination.
How to fix it
Upgrade PHP to version 5.5.38 or later, 5.6.24 or later, or 7.0.9 or later; if immediate patching is impossible, disable the xmlrpc extension or restrict access to functions that invoke xmlrpc_encode_request.
How to confirm the fix worked
Verify installed PHP version against the fixed releases; perform runtime testing with an oversized argument to xmlrpc_encode_request and confirm absence of overflow or crash; review application code for direct or indirect calls to the affected function.
Typical attack path
- Identify a web endpoint or script that calls xmlrpc_encode_request with attacker-controlled input
- Send HTTP request containing an oversized first argument to trigger the signedness error
- Exploit resulting heap overflow to achieve code execution or cause denial of service
How to detect it
Inspect web server and application logs for unusually long values passed to xmlrpc_encode_request; correlate with PHP process crashes, segmentation faults, or anomalous memory consumption; review historical access logs around the time of any service instability for oversized XML-RPC payloads.
- xmlrpc_encode_request
- simplestring_addn
What your security team should do
- Apply the appropriate PHP security update without delay given the critical CVSS and public exploit availability
- Audit all applications for use of xmlrpc_encode_request and xmlrpc-epi and remove or replace the functionality where feasible
- Implement web application firewall rules to block abnormally large parameters in XML-RPC traffic
- Monitor vulnerability disclosure feeds for any newly reported exploitation of this memory corruption issue
The record
Integer signedness error in the simplestring_addn function in simplestring.c in xmlrpc-epi through 0.54.2, as used in PHP before 5.5.38, 5.6.x before 5.6.24, and 7.x before 7.0.9, allows remote attackers to cause a denial of service (heap-based buffer overflow) or possibly have unspecified other impact via a long first argument to the PHP xmlrpc_encode_request function.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Debian:11 | xmlrpc-epi | 0 | 0.54.2-1.2 |
| Debian:12 | xmlrpc-epi | 0 | 0.54.2-1.2 |
| Debian:13 | xmlrpc-epi | 0 | 0.54.2-1.2 |
| Debian:14 | xmlrpc-epi | 0 | 0.54.2-1.2 |
| Debian:7 | php5 | 0 | 5.4.45-0+deb7u5 |
| Debian:7 | xmlrpc-epi | 0 | 0.54.2-1+deb7u1 |
| Debian:8 | php5 | 0 | 5.6.24+dfsg-0+deb8u1 |
| Debian:8 | xmlrpc-epi | 0 | 0.54.2-1.1+deb8u1 |
| Mageia:5 | php | 0 | 5.6.24-1.mga5 |
| Mageia:5 | php-timezonedb | 0 | 2016.6-1.mga5 |
| Mageia:5 | timezone | 0 | 2016f-1.mga5 |
| Mageia:5 | xmlrpc-epi | 0 | 0.54.2-5.1.mga5 |
| Red Hat:rhel_software_collections:2::el6 | rh-php56 | 0 | 0:2.3-1.el6 |
| Red Hat:rhel_software_collections:2::el6 | rh-php56-php | 0 | 0:5.6.25-1.el6 |
| Red Hat:rhel_software_collections:2::el6 | rh-php56-php-bcmath | 0 | 0:5.6.25-1.el6 |
| Red Hat:rhel_software_collections:2::el6 | rh-php56-php-cli | 0 | 0:5.6.25-1.el6 |
| Red Hat:rhel_software_collections:2::el6 | rh-php56-php-common | 0 | 0:5.6.25-1.el6 |
| Red Hat:rhel_software_collections:2::el6 | rh-php56-php-dba | 0 | 0:5.6.25-1.el6 |
| Red Hat:rhel_software_collections:2::el6 | rh-php56-php-dbg | 0 | 0:5.6.25-1.el6 |
| Red Hat:rhel_software_collections:2::el6 | rh-php56-php-debuginfo | 0 | 0:5.6.25-1.el6 |
| Red Hat:rhel_software_collections:2::el6 | rh-php56-php-devel | 0 | 0:5.6.25-1.el6 |
| Red Hat:rhel_software_collections:2::el6 | rh-php56-php-embedded | 0 | 0:5.6.25-1.el6 |
| Red Hat:rhel_software_collections:2::el6 | rh-php56-php-enchant | 0 | 0:5.6.25-1.el6 |
| Red Hat:rhel_software_collections:2::el6 | rh-php56-php-fpm | 0 | 0:5.6.25-1.el6 |
| Red Hat:rhel_software_collections:2::el6 | rh-php56-php-gd | 0 | 0:5.6.25-1.el6 |
| Red Hat:rhel_software_collections:2::el6 | rh-php56-php-gmp | 0 | 0:5.6.25-1.el6 |
| Red Hat:rhel_software_collections:2::el6 | rh-php56-php-imap | 0 | 0:5.6.25-1.el6 |
| Red Hat:rhel_software_collections:2::el6 | rh-php56-php-intl | 0 | 0:5.6.25-1.el6 |
| Red Hat:rhel_software_collections:2::el6 | rh-php56-php-ldap | 0 | 0:5.6.25-1.el6 |
| Red Hat:rhel_software_collections:2::el6 | rh-php56-php-mbstring | 0 | 0:5.6.25-1.el6 |
| Red Hat:rhel_software_collections:2::el6 | rh-php56-php-mysqlnd | 0 | 0:5.6.25-1.el6 |
| Red Hat:rhel_software_collections:2::el6 | rh-php56-php-odbc | 0 | 0:5.6.25-1.el6 |
| Red Hat:rhel_software_collections:2::el6 | rh-php56-php-opcache | 0 | 0:5.6.25-1.el6 |
| Red Hat:rhel_software_collections:2::el6 | rh-php56-php-pdo | 0 | 0:5.6.25-1.el6 |
| Red Hat:rhel_software_collections:2::el6 | rh-php56-php-pear | 0 | 1:1.9.5-4.el6 |
| Red Hat:rhel_software_collections:2::el6 | rh-php56-php-pgsql | 0 | 0:5.6.25-1.el6 |
| Red Hat:rhel_software_collections:2::el6 | rh-php56-php-process | 0 | 0:5.6.25-1.el6 |
| Red Hat:rhel_software_collections:2::el6 | rh-php56-php-pspell | 0 | 0:5.6.25-1.el6 |
| Red Hat:rhel_software_collections:2::el6 | rh-php56-php-recode | 0 | 0:5.6.25-1.el6 |
| Red Hat:rhel_software_collections:2::el6 | rh-php56-php-snmp | 0 | 0:5.6.25-1.el6 |
| Red Hat:rhel_software_collections:2::el6 | rh-php56-php-soap | 0 | 0:5.6.25-1.el6 |
| Red Hat:rhel_software_collections:2::el6 | rh-php56-php-tidy | 0 | 0:5.6.25-1.el6 |
| Red Hat:rhel_software_collections:2::el6 | rh-php56-php-xml | 0 | 0:5.6.25-1.el6 |
| Red Hat:rhel_software_collections:2::el6 | rh-php56-php-xmlrpc | 0 | 0:5.6.25-1.el6 |
| Red Hat:rhel_software_collections:2::el6 | rh-php56-runtime | 0 | 0:2.3-1.el6 |
| Red Hat:rhel_software_collections:2::el6 | rh-php56-scldevel | 0 | 0:2.3-1.el6 |
| Red Hat:rhel_software_collections:2::el7 | rh-php56 | 0 | 0:2.3-1.el7 |
| Red Hat:rhel_software_collections:2::el7 | rh-php56-php | 0 | 0:5.6.25-1.el7 |
| Red Hat:rhel_software_collections:2::el7 | rh-php56-php-bcmath | 0 | 0:5.6.25-1.el7 |
| Red Hat:rhel_software_collections:2::el7 | rh-php56-php-cli | 0 | 0:5.6.25-1.el7 |
| Red Hat:rhel_software_collections:2::el7 | rh-php56-php-common | 0 | 0:5.6.25-1.el7 |
| Red Hat:rhel_software_collections:2::el7 | rh-php56-php-dba | 0 | 0:5.6.25-1.el7 |
| Red Hat:rhel_software_collections:2::el7 | rh-php56-php-dbg | 0 | 0:5.6.25-1.el7 |
| Red Hat:rhel_software_collections:2::el7 | rh-php56-php-debuginfo | 0 | 0:5.6.25-1.el7 |
| Red Hat:rhel_software_collections:2::el7 | rh-php56-php-devel | 0 | 0:5.6.25-1.el7 |
| Red Hat:rhel_software_collections:2::el7 | rh-php56-php-embedded | 0 | 0:5.6.25-1.el7 |
| Red Hat:rhel_software_collections:2::el7 | rh-php56-php-enchant | 0 | 0:5.6.25-1.el7 |
| Red Hat:rhel_software_collections:2::el7 | rh-php56-php-fpm | 0 | 0:5.6.25-1.el7 |
| Red Hat:rhel_software_collections:2::el7 | rh-php56-php-gd | 0 | 0:5.6.25-1.el7 |
| Red Hat:rhel_software_collections:2::el7 | rh-php56-php-gmp | 0 | 0:5.6.25-1.el7 |
| Red Hat:rhel_software_collections:2::el7 | rh-php56-php-intl | 0 | 0:5.6.25-1.el7 |
| Red Hat:rhel_software_collections:2::el7 | rh-php56-php-ldap | 0 | 0:5.6.25-1.el7 |
| Red Hat:rhel_software_collections:2::el7 | rh-php56-php-mbstring | 0 | 0:5.6.25-1.el7 |
| Red Hat:rhel_software_collections:2::el7 | rh-php56-php-mysqlnd | 0 | 0:5.6.25-1.el7 |
| Red Hat:rhel_software_collections:2::el7 | rh-php56-php-odbc | 0 | 0:5.6.25-1.el7 |
| Red Hat:rhel_software_collections:2::el7 | rh-php56-php-opcache | 0 | 0:5.6.25-1.el7 |
| Red Hat:rhel_software_collections:2::el7 | rh-php56-php-pdo | 0 | 0:5.6.25-1.el7 |
| Red Hat:rhel_software_collections:2::el7 | rh-php56-php-pear | 0 | 1:1.9.5-4.el7 |
| Red Hat:rhel_software_collections:2::el7 | rh-php56-php-pgsql | 0 | 0:5.6.25-1.el7 |
| Red Hat:rhel_software_collections:2::el7 | rh-php56-php-process | 0 | 0:5.6.25-1.el7 |
| Red Hat:rhel_software_collections:2::el7 | rh-php56-php-pspell | 0 | 0:5.6.25-1.el7 |
| Red Hat:rhel_software_collections:2::el7 | rh-php56-php-recode | 0 | 0:5.6.25-1.el7 |
| Red Hat:rhel_software_collections:2::el7 | rh-php56-php-snmp | 0 | 0:5.6.25-1.el7 |
| Red Hat:rhel_software_collections:2::el7 | rh-php56-php-soap | 0 | 0:5.6.25-1.el7 |
| Red Hat:rhel_software_collections:2::el7 | rh-php56-php-xml | 0 | 0:5.6.25-1.el7 |
| Red Hat:rhel_software_collections:2::el7 | rh-php56-php-xmlrpc | 0 | 0:5.6.25-1.el7 |
| Red Hat:rhel_software_collections:2::el7 | rh-php56-runtime | 0 | 0:2.3-1.el7 |
| Red Hat:rhel_software_collections:2::el7 | rh-php56-scldevel | 0 | 0:2.3-1.el7 |
| SUSE:Linux Enterprise Module for Web and Scripting 12 | php5 | 0 | 5.5.14-73.1 |
| SUSE:Linux Enterprise Module for Web and Scripting 12 | php7 | 0 | 7.0.7-15.1 |
| SUSE:Linux Enterprise Server 11 SP2-LTSS | php5 | 0 | 5.2.14-0.7.30.89.1 |
| SUSE:Linux Enterprise Server 11 SP2-LTSS | php53 | 0 | 5.3.17-55.1 |
| SUSE:Linux Enterprise Server 11 SP4 | php53 | 0 | 5.3.17-79.2 |
| SUSE:Linux Enterprise Server for SAP Applications 11 SP4 | php53 | 0 | 5.3.17-79.2 |
| SUSE:Linux Enterprise Software Development Kit 11 SP4 | php53 | 0 | 5.3.17-79.2 |
| SUSE:Linux Enterprise Software Development Kit 12 SP1 | php5 | 0 | 5.5.14-73.1 |
| SUSE:Linux Enterprise Software Development Kit 12 SP1 | php7 | 0 | 7.0.7-15.1 |
| Ubuntu:14.04:LTS | php5 | 0 | 5.5.9+dfsg-1ubuntu4.19 |
| Ubuntu:14.04:LTS | xmlrpc-epi | 0 | 0.54.2-1+deb7u1ubuntu0.14.04.2 |
| Ubuntu:16.04:LTS | php7.0 | 0 | 7.0.8-0ubuntu0.16.04.2 |
| Ubuntu:16.04:LTS | xmlrpc-epi | 0 | 0.54.2-1.1ubuntu0.1 |
Related vulnerabilities
- CVE-2017-12933 The finish_nested_data function in ext/standard/var_unserializer.re in PHP before 5.6.31… Also affects php5
- CVE-2016-10158 The exif_convert_any_to_int function in ext/exif/exif.c in PHP before 5.6.30, 7.0.x… Also affects php5
- CVE-2016-10161 The object_common1 function in ext/standard/var_unserializer.c in PHP before 5.6.30… Also affects php5
- CVE-2016-7479 In all versions of PHP 7, during the unserialization process, resizing the 'properties'… Also affects php5
- CVE-2016-7478 Zend/zend_exceptions.c in PHP, possibly 5.x before 5.6.28 and 7.x before 7.0.13, allows… Also affects php5
- CVE-2016-7418 The php_wddx_push_element function in ext/wddx/wddx.c in PHP before 5.6.26 and 7.x before… Also affects php5
- CVE-2016-7124 ext/standard/var_unserializer.c in PHP before 5.6.25 and 7.x before 7.0.10 mishandles… Also affects php5
- CVE-2016-5771 spl_array.c in the SPL extension in PHP before 5.5.37 and 5.6.x before 5.6.23 improperly… Also affects php5