CVE-2014-9912
Critical · 9.8CVSS
9.8
EPSS
4.9%
Published
Jan 4, 2017
CISA due date
—
Cloudanix analysis
A programming error in older versions of the PHP language allowed remote attackers to crash or take over web servers by sending specially crafted text that the server tried to display in different languages.
- 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
The vulnerability is a buffer overflow in PHP's ICU integration triggered by an overly long first argument to locale_get_display_name, allowing memory corruption that can lead to denial of service or arbitrary code execution.
Why it matters to the business
Unpatched PHP installations remain exposed to remote crashes or code execution that can disrupt web services or enable full server compromise; the issue is decades old with no active exploitation campaigns reported, so immediate business risk is low for updated environments.
How an attack unfolds
An attacker sends an HTTP request that causes a PHP application to invoke locale_get_display_name with a crafted long locale string; the call reaches the vulnerable ICU uresbund.cpp path without length checks, overflowing a buffer and potentially allowing control of execution flow.
How to fix it
Upgrade PHP to versions 5.3.29 or later, 5.4.30 or later, or 5.5.14 or later. Disable the intl extension if locale display name functionality is not required. Apply vendor patches or rebuild PHP with updated ICU libraries.
How to confirm the fix worked
Confirm PHP version is at or above the fixed releases listed in the advisory; test that locale_get_display_name rejects or safely truncates long inputs without crashing; review application code for direct calls to the affected function.
Typical attack path
- Identify a web endpoint or script that calls locale_get_display_name or related intl functions
- Craft a request containing an excessively long first argument to the function
- Trigger the buffer overflow to crash the process or attempt code execution
- If code execution succeeds, establish persistence or move laterally within the server
How to detect it
Search web server and PHP error logs for segmentation faults or buffer overflow crashes occurring during calls involving locale or intl functions; look for unusually long locale strings in application request logs.
What your security team should do
- Immediately inventory all PHP deployments and prioritize upgrades for internet-facing systems
- Disable the intl extension where feasible until patches are applied
- Monitor for any new exploit code targeting this memory corruption path
- Add the affected function to application security testing suites
The record
The get_icu_disp_value_src_php function in ext/intl/locale/locale_methods.c in PHP before 5.3.29, 5.4.x before 5.4.30, and 5.5.x before 5.5.14 does not properly restrict calls to the ICU uresbund.cpp component, which allows remote attackers to cause a denial of service (buffer overflow) or possibly have unspecified other impact via a locale_get_display_name call with a long first argument.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| SUSE:Linux Enterprise Server 11 SP4 | php53 | 0 | 5.3.17-94.1 |
| SUSE:Linux Enterprise Server for SAP Applications 11 SP4 | php53 | 0 | 5.3.17-94.1 |
| SUSE:Linux Enterprise Software Development Kit 11 SP4 | php53 | 0 | 5.3.17-94.1 |
| Ubuntu:14.04:LTS | php5 | 0 | 5.5.9+dfsg-1ubuntu4.21 |
Related vulnerabilities
- CVE-2017-16642 In PHP before 5.6.32, 7.x before 7.0.25, and 7.1.x before 7.1.11, an error in the date… Also affects php53
- CVE-2017-12933 The finish_nested_data function in ext/standard/var_unserializer.re in PHP before 5.6.31… Also affects php53
- CVE-2017-7890 The GIF decoding function gdImageCreateFromGifCtx in gd_gif_in.c in the GD Graphics… Also affects php53
- CVE-2016-10166 Integer underflow in the _gdContributionsAlloc function in gd_interpolation.c in the GD… Also affects php53
- CVE-2016-6911 The dynamicGetbuf function in the GD Graphics Library (aka libgd) before 2.2.4 allows… Also affects php53
- 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 php53
- CVE-2016-10161 The object_common1 function in ext/standard/var_unserializer.c in PHP before 5.6.30… Also affects php53
- 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 php53