Cloudanix VulnDB

CVE-2016-2099

Critical · 9.8

CVSS

9.8

EPSS

6.6%

Published

May 13, 2016

CISA due date

—

Cloudanix analysis

Monitor only SSVC: Track

An old XML handling component contains a memory bug that lets attackers who send specially crafted documents potentially take control of the affected computer.

Exploitation
Remote Unauthenticated
Attacker needs
None
Complexity
Low
Impact
Remote Code Execution
Component
Library
Class
Use After Free
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

Use-after-free condition in DTDScanner.cpp triggered by an invalid character during XML DTD validation, enabling memory corruption that can lead to arbitrary code execution or crashes.

Why it matters to the business

Systems parsing untrusted XML documents face risk of remote code execution and full host compromise; the issue affects legacy deployments of an XML library still present in older distributions and downstream products.

How an attack unfolds

An attacker crafts an XML document containing an invalid character in the DTD section and supplies it to any application using the vulnerable Xerces C++ parser; during DTD scanning the freed memory is accessed, allowing control of execution flow.

How to fix it

Upgrade Apache Xerces C++ to a version newer than 3.1.3; rebuild and redeploy all dependent applications; replace or remove any bundled copies of the vulnerable library in operating-system packages or third-party software.

How to confirm the fix worked

Inventory all installations of Xerces C++ and confirm versions exceed 3.1.3; run regression tests with XML inputs containing invalid DTD characters; monitor application stability under malformed XML loads.

Typical attack path

  1. Identify an application or service that uses Apache Xerces C++ to parse external XML input
  2. Craft an XML document containing an invalid character inside a DTD declaration
  3. Deliver the document via network, file upload, or other input channel accepted by the target
  4. Trigger DTD validation path in validators/DTD/DTDScanner.cpp to induce the use-after-free
  5. Leverage resulting memory corruption for code execution or denial of service

How to detect it

Search application and system logs for unexpected crashes or segmentation faults during XML parsing; inspect process memory dumps for patterns consistent with use-after-free in DTD handling; correlate with inbound XML containing malformed DTD sections.

What your security team should do

  • Prioritize upgrade of Xerces C++ in all internet-facing or untrusted-input parsers
  • Scan software bill-of-materials for any remaining 3.1.3 or earlier instances
  • Apply compensating controls such as input sanitization or XML schema enforcement until upgrades complete
  • Review logging for XML parsing errors or crashes that could indicate probing attempts

The record

Use-after-free vulnerability in validators/DTD/DTDScanner.cpp in Apache Xerces C++ 3.1.3 and earlier allows context-dependent attackers to have unspecified impact via an invalid character in an XML document.

Affected packages

Ecosystem Package Introduced Fixed
Debian:11 xerces-c 0 3.1.3+debian-2
Debian:12 xerces-c 0 3.1.3+debian-2
Debian:13 xerces-c 0 3.1.3+debian-2
Debian:7 xerces-c 0 3.1.1-3+deb7u3
Debian:8 xerces-c 0 3.1.1-5.1+deb8u2
Mageia:5 xerces-c 0 3.1.2-1.2.mga5
SUSE:Linux Enterprise Desktop 12 SP1 xerces-c 0 3.1.1-12.3
SUSE:Linux Enterprise Server 12 SP1 xerces-c 0 3.1.1-12.3
SUSE:Linux Enterprise Server for SAP Applications 12 SP1 xerces-c 0 3.1.1-12.3
SUSE:Linux Enterprise Software Development Kit 12 SP1 xerces-c 0 3.1.1-12.3
Ubuntu:14.04:LTS xerces-c 0 3.1.1-5.1+deb8u2build0.14.04.1
Ubuntu:Pro:16.04:LTS xerces-c 0 3.1.3+debian-1ubuntu0.1~esm1
Ubuntu:Pro:18.04:LTS xerces-c 0 3.2.0+debian-2ubuntu0.1~esm1
openSUSE:Tumbleweed xerces-c 0 3.1.4-1.3

Related vulnerabilities