CVE-2015-7499
NoneCVSS
—
EPSS
6.4%
Published
Dec 15, 2015
CISA due date
—
Cloudanix analysis
A flaw in a widely used library for reading XML files could let attackers see pieces of memory they should not have access to.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Data Exposure
- Component
- Library
- Class
- Memory Corruption
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Heap-based buffer overflow in the xmlGROW function within parser.c allows reading beyond allocated memory bounds, exposing adjacent heap contents containing sensitive process data.
Why it matters to the business
Attackers can extract fragments of process memory from systems parsing untrusted XML, increasing risk of credential or data leakage across widely deployed operating systems and applications.
How an attack unfolds
An attacker supplies a specially crafted XML document to a vulnerable application using libxml2; the parser's xmlGROW routine overflows the heap buffer, and the resulting memory contents are returned or leaked through the application's response or error handling.
How to fix it
Upgrade libxml2 to version 2.9.3 or later on all affected systems; rebuild or redeploy dependent applications against the patched library; verify no custom builds retain the vulnerable parser.c code.
How to confirm the fix worked
Confirm installed libxml2 version is 2.9.3 or newer using package manager queries or xml2-config --version; run regression tests with known boundary XML inputs to ensure no overflow occurs.
Typical attack path
- Identify an application or service that processes attacker-controlled XML using a vulnerable libxml2 version
- Craft malicious XML input designed to trigger excessive growth in the parser buffer
- Submit the input via network request, file upload, or API call
- Observe or extract leaked heap memory fragments containing sensitive process information
How to detect it
Review application logs and network captures for unusually large or malformed XML payloads; inspect process memory dumps or error logs for unexpected data leakage patterns; correlate with use of libxml2 versions prior to 2.9.3.
What your security team should do
- Prioritize patching libxml2 on internet-facing systems and those handling untrusted XML
- Inventory all applications linking against libxml2 and schedule upgrades
- Monitor EPSS score for any future increase indicating rising exploit likelihood
The record
Heap-based buffer overflow in the xmlGROW function in parser.c in libxml2 before 2.9.3 allows context-dependent attackers to obtain sensitive process memory information via unspecified vectors.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| RubyGems | nokogiri | 1.6.0 | 1.6.7.2 |
| Debian:11 | libxml2 | 0 | 2.9.3+dfsg1-1 |
| Debian:12 | libxml2 | 0 | 2.9.3+dfsg1-1 |
| Debian:13 | libxml2 | 0 | 2.9.3+dfsg1-1 |
| Debian:6.0 | libxml2 | 0 | 2.7.8.dfsg-2+squeeze16 |
| Debian:7 | libxml2 | 0 | 2.8.0+dfsg1-7+wheezy5 |
| Debian:8 | libxml2 | 0 | 2.9.1+dfsg1-5+deb8u1 |
| Mageia:5 | libxml2 | 0 | 2.9.3-1.mga5 |
| Red Hat:enterprise_linux:6::client | libxml2 | 0 | 0:2.7.6-20.el6_7.1 |
| Red Hat:enterprise_linux:6::client | libxml2-debuginfo | 0 | 0:2.7.6-20.el6_7.1 |
| Red Hat:enterprise_linux:6::client | libxml2-devel | 0 | 0:2.7.6-20.el6_7.1 |
| Red Hat:enterprise_linux:6::client | libxml2-python | 0 | 0:2.7.6-20.el6_7.1 |
| Red Hat:enterprise_linux:6::client | libxml2-static | 0 | 0:2.7.6-20.el6_7.1 |
| Red Hat:enterprise_linux:6::computenode | libxml2 | 0 | 0:2.7.6-20.el6_7.1 |
| Red Hat:enterprise_linux:6::computenode | libxml2-debuginfo | 0 | 0:2.7.6-20.el6_7.1 |
| Red Hat:enterprise_linux:6::computenode | libxml2-devel | 0 | 0:2.7.6-20.el6_7.1 |
| Red Hat:enterprise_linux:6::computenode | libxml2-python | 0 | 0:2.7.6-20.el6_7.1 |
| Red Hat:enterprise_linux:6::computenode | libxml2-static | 0 | 0:2.7.6-20.el6_7.1 |
| Red Hat:enterprise_linux:6::server | libxml2 | 0 | 0:2.7.6-20.el6_7.1 |
| Red Hat:enterprise_linux:6::server | libxml2-debuginfo | 0 | 0:2.7.6-20.el6_7.1 |
| Red Hat:enterprise_linux:6::server | libxml2-devel | 0 | 0:2.7.6-20.el6_7.1 |
| Red Hat:enterprise_linux:6::server | libxml2-python | 0 | 0:2.7.6-20.el6_7.1 |
| Red Hat:enterprise_linux:6::server | libxml2-static | 0 | 0:2.7.6-20.el6_7.1 |
| Red Hat:enterprise_linux:6::workstation | libxml2 | 0 | 0:2.7.6-20.el6_7.1 |
| Red Hat:enterprise_linux:6::workstation | libxml2-debuginfo | 0 | 0:2.7.6-20.el6_7.1 |
| Red Hat:enterprise_linux:6::workstation | libxml2-devel | 0 | 0:2.7.6-20.el6_7.1 |
| Red Hat:enterprise_linux:6::workstation | libxml2-python | 0 | 0:2.7.6-20.el6_7.1 |
| Red Hat:enterprise_linux:6::workstation | libxml2-static | 0 | 0:2.7.6-20.el6_7.1 |
| Red Hat:enterprise_linux:7::client | libxml2 | 0 | 0:2.9.1-6.el7_2.2 |
| Red Hat:enterprise_linux:7::client | libxml2-debuginfo | 0 | 0:2.9.1-6.el7_2.2 |
| Red Hat:enterprise_linux:7::client | libxml2-devel | 0 | 0:2.9.1-6.el7_2.2 |
| Red Hat:enterprise_linux:7::client | libxml2-python | 0 | 0:2.9.1-6.el7_2.2 |
| Red Hat:enterprise_linux:7::client | libxml2-static | 0 | 0:2.9.1-6.el7_2.2 |
| Red Hat:enterprise_linux:7::computenode | libxml2 | 0 | 0:2.9.1-6.el7_2.2 |
| Red Hat:enterprise_linux:7::computenode | libxml2-debuginfo | 0 | 0:2.9.1-6.el7_2.2 |
| Red Hat:enterprise_linux:7::computenode | libxml2-devel | 0 | 0:2.9.1-6.el7_2.2 |
| Red Hat:enterprise_linux:7::computenode | libxml2-python | 0 | 0:2.9.1-6.el7_2.2 |
| Red Hat:enterprise_linux:7::computenode | libxml2-static | 0 | 0:2.9.1-6.el7_2.2 |
| Red Hat:enterprise_linux:7::server | libxml2 | 0 | 0:2.9.1-6.el7_2.2 |
| Red Hat:enterprise_linux:7::server | libxml2-debuginfo | 0 | 0:2.9.1-6.el7_2.2 |
| Red Hat:enterprise_linux:7::server | libxml2-devel | 0 | 0:2.9.1-6.el7_2.2 |
| Red Hat:enterprise_linux:7::server | libxml2-python | 0 | 0:2.9.1-6.el7_2.2 |
| Red Hat:enterprise_linux:7::server | libxml2-static | 0 | 0:2.9.1-6.el7_2.2 |
| Red Hat:enterprise_linux:7::workstation | libxml2 | 0 | 0:2.9.1-6.el7_2.2 |
| Red Hat:enterprise_linux:7::workstation | libxml2-debuginfo | 0 | 0:2.9.1-6.el7_2.2 |
| Red Hat:enterprise_linux:7::workstation | libxml2-devel | 0 | 0:2.9.1-6.el7_2.2 |
| Red Hat:enterprise_linux:7::workstation | libxml2-python | 0 | 0:2.9.1-6.el7_2.2 |
| Red Hat:enterprise_linux:7::workstation | libxml2-static | 0 | 0:2.9.1-6.el7_2.2 |
| SUSE:Linux Enterprise Desktop 11 SP3 | libxml2 | 0 | 2.7.6-0.34.1 |
| SUSE:Linux Enterprise Desktop 11 SP3 | libxml2-python | 0 | 2.7.6-0.34.4 |
| SUSE:Linux Enterprise Desktop 11 SP4 | libxml2 | 0 | 2.7.6-0.34.1 |
| SUSE:Linux Enterprise Desktop 11 SP4 | libxml2-python | 0 | 2.7.6-0.34.4 |
| SUSE:Linux Enterprise Desktop 12 | libxml2 | 0 | 2.9.1-13.1 |
| SUSE:Linux Enterprise Desktop 12 | python-libxml2 | 0 | 2.9.1-13.1 |
| SUSE:Linux Enterprise Desktop 12 SP1 | libxml2 | 0 | 2.9.1-13.1 |
| SUSE:Linux Enterprise Desktop 12 SP1 | python-libxml2 | 0 | 2.9.1-13.1 |
| SUSE:Linux Enterprise Server 11 SP3 | libxml2 | 0 | 2.7.6-0.34.1 |
| SUSE:Linux Enterprise Server 11 SP3 | libxml2-python | 0 | 2.7.6-0.34.4 |
| SUSE:Linux Enterprise Server 11 SP3-TERADATA | libxml2 | 0 | 2.7.6-0.34.1 |
| SUSE:Linux Enterprise Server 11 SP3-TERADATA | libxml2-python | 0 | 2.7.6-0.34.4 |
| SUSE:Linux Enterprise Server 11 SP4 | libxml2 | 0 | 2.7.6-0.34.1 |
| SUSE:Linux Enterprise Server 11 SP4 | libxml2-python | 0 | 2.7.6-0.34.4 |
| SUSE:Linux Enterprise Server 12 | libxml2 | 0 | 2.9.1-13.1 |
| SUSE:Linux Enterprise Server 12 | python-libxml2 | 0 | 2.9.1-13.1 |
| SUSE:Linux Enterprise Server 12 SP1 | libxml2 | 0 | 2.9.1-13.1 |
| SUSE:Linux Enterprise Server 12 SP1 | python-libxml2 | 0 | 2.9.1-13.1 |
| SUSE:Linux Enterprise Server for SAP Applications 11 SP3 | libxml2 | 0 | 2.7.6-0.34.1 |
| SUSE:Linux Enterprise Server for SAP Applications 11 SP3 | libxml2-python | 0 | 2.7.6-0.34.4 |
| SUSE:Linux Enterprise Server for SAP Applications 11 SP4 | libxml2 | 0 | 2.7.6-0.34.1 |
| SUSE:Linux Enterprise Server for SAP Applications 11 SP4 | libxml2-python | 0 | 2.7.6-0.34.4 |
| SUSE:Linux Enterprise Server for SAP Applications 12 | libxml2 | 0 | 2.9.1-13.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 | python-libxml2 | 0 | 2.9.1-13.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP1 | libxml2 | 0 | 2.9.1-13.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP1 | python-libxml2 | 0 | 2.9.1-13.1 |
| SUSE:Linux Enterprise Software Development Kit 11 SP3 | libxml2 | 0 | 2.7.6-0.34.1 |
| SUSE:Linux Enterprise Software Development Kit 11 SP4 | libxml2 | 0 | 2.7.6-0.34.1 |
| SUSE:Linux Enterprise Software Development Kit 12 | libxml2 | 0 | 2.9.1-13.1 |
| SUSE:Linux Enterprise Software Development Kit 12 SP1 | libxml2 | 0 | 2.9.1-13.1 |
| Ubuntu:14.04:LTS | libxml2 | 0 | 2.9.1+dfsg1-3ubuntu4.6 |
| Ubuntu:14.04:LTS | libxml2 | 0 | 2.9.1+dfsg1-3ubuntu4.7 |
| gem | nokogiri | 1.6.0.0a | 1.6.7.2 |
| openSUSE:Tumbleweed | libxml2 | 0 | 2.9.4-1.22 |
| openSUSE:Tumbleweed | ruby3.2-rubygem-nokogiri | 0 | 1.13.9-1.7 |
| openSUSE:Tumbleweed | rubygem-nokogiri | 0 | 1.13.3-1.1 |
| openSUSE:Tumbleweed | rubygem-nokogiri | 0 | 1.6.8.1-1.3 |
| openSUSE:Tumbleweed | rubygem-nokogiri | 0 | 1.15.5-1.5 |
| openSUSE:Tumbleweed | rubygem-nokogiri | 0 | 1.18.2-1.1 |
| openSUSE:Tumbleweed | rubygem-nokogiri | 0 | 1.18.9-1.4 |
Related vulnerabilities
- GHSA-vcc3-rw6f-jv97 Duplicate Advisory: Use-after-free in libxml2 via Nokogiri::XML::Reader Also affects nokogiri
- GHSA-pxvg-2qj5-37jq Nokogiri updates packaged libxml2 to v2.10.4 to resolve multiple CVEs Also affects nokogiri
- GHSA-2qc6-mcvw-92cw Update bundled libxml2 to v2.10.3 to resolve multiple CVEs Also affects nokogiri
- GHSA-cgx6-hpwq-fhv5 Integer Overflow or Wraparound in libxml2 affects Nokogiri Also affects nokogiri
- GHSA-gx8x-g87m-h5q6 Denial of Service (DoS) in Nokogiri on JRuby Also affects nokogiri
- GHSA-xxx9-3xcr-gjj3 XML Injection in Xerces Java affects Nokogiri Also affects nokogiri
- GHSA-v6gp-9mmm-c6p5 Out-of-bounds Write in zlib affects Nokogiri Also affects nokogiri
- GHSA-fq42-c5rg-92c2 Vulnerable dependencies in Nokogiri Also affects nokogiri