CVE-2018-1311
High · 8.1CVSS
8.1
EPSS
9.5%
Published
Dec 18, 2019
CISA due date
—
Cloudanix analysis
An old flaw in a common tool for reading structured data files can let attackers take control of affected programs if they receive specially made input.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- High
- Impact
- Remote Code Execution
- Component
- Library
- Class
- Use After Free
- Remediation
- No Fix Yet
- Effort
- Other
- Patch risk
- Other
What it actually does
Use-after-free vulnerability triggered during external DTD scanning in the Xerces-C XML parser, resulting in memory corruption that can be leveraged for arbitrary code execution or denial of service.
Why it matters to the business
Applications using vulnerable Xerces-C versions for XML handling face remote compromise risk when DTD processing is enabled; widespread library adoption means legacy deployments remain exposed years after disclosure, though stable low EPSS indicates limited active exploitation.
How an attack unfolds
An attacker supplies a specially crafted XML document containing an external DTD reference that causes the parser to access freed memory during scanning, allowing control of execution flow.
How to fix it
Upgrade affected packages to fixed versions including org/ffmpeg.git commit 5d737a3d0ca2bf0f0c6170096d9d1ca230cf9ee0 or lynx 2.8.9dev11-1; alternatively disable DTD processing via the DOM parser feature or the XERCES_DISABLE_DTD environment variable.
How to confirm the fix worked
Confirm updated library versions in all deployments, test XML parsing with DTDs explicitly disabled to ensure no crashes occur on crafted inputs, and review build configurations for DTD settings.
Typical attack path
- Identify target application accepting XML input with DTD processing enabled
- Craft and deliver malicious XML referencing an external DTD
- Trigger use-after-free during DTD scanning to corrupt memory
- Achieve code execution or crash the process
How to detect it
Monitor application logs and crash reports for segmentation faults or memory errors during XML parsing involving external DTD references; review process dumps for signs of memory reuse after free in parser code paths.
What your security team should do
- Immediately audit and update all instances of Xerces-C and dependent products such as ffmpeg and lynx
- Enforce DTD disabling in parser configurations as a compensating control
- Incorporate version checks for this library into regular dependency scanning
The record
The Apache Xerces-C 3.0.0 to 3.2.3 XML parser contains a use-after-free error triggered during the scanning of external DTDs. This flaw has not been addressed in the maintained version of the library and has no current mitigation other than to disable DTD processing. This can be accomplished via the DOM using a standard parser feature, or via SAX using the XERCES_DISABLE_DTD environment variable.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Debian:10 | xerces-c | 0 | 3.2.2+debian-1+deb10u1 |
| Debian:11 | xerces-c | 0 | 3.2.3+debian-2 |
| Debian:12 | xerces-c | 0 | 3.2.3+debian-2 |
| Debian:13 | xerces-c | 0 | 3.2.3+debian-2 |
| Debian:9 | xerces-c | 0 | 3.1.4+debian-2+deb9u2 |
| Mageia:7 | xerces-c | 0 | 3.2.2-2.1.mga7 |
| Red Hat:enterprise_linux:6::client | xerces-c | 0 | 0:3.0.1-21.el6_10 |
| Red Hat:enterprise_linux:6::client | xerces-c-debuginfo | 0 | 0:3.0.1-21.el6_10 |
| Red Hat:enterprise_linux:6::client | xerces-c-devel | 0 | 0:3.0.1-21.el6_10 |
| Red Hat:enterprise_linux:6::client | xerces-c-doc | 0 | 0:3.0.1-21.el6_10 |
| Red Hat:enterprise_linux:6::computenode | xerces-c | 0 | 0:3.0.1-21.el6_10 |
| Red Hat:enterprise_linux:6::computenode | xerces-c-debuginfo | 0 | 0:3.0.1-21.el6_10 |
| Red Hat:enterprise_linux:6::computenode | xerces-c-devel | 0 | 0:3.0.1-21.el6_10 |
| Red Hat:enterprise_linux:6::computenode | xerces-c-doc | 0 | 0:3.0.1-21.el6_10 |
| Red Hat:enterprise_linux:6::server | xerces-c | 0 | 0:3.0.1-21.el6_10 |
| Red Hat:enterprise_linux:6::server | xerces-c-debuginfo | 0 | 0:3.0.1-21.el6_10 |
| Red Hat:enterprise_linux:6::server | xerces-c-devel | 0 | 0:3.0.1-21.el6_10 |
| Red Hat:enterprise_linux:6::server | xerces-c-doc | 0 | 0:3.0.1-21.el6_10 |
| Red Hat:enterprise_linux:6::workstation | xerces-c | 0 | 0:3.0.1-21.el6_10 |
| Red Hat:enterprise_linux:6::workstation | xerces-c-debuginfo | 0 | 0:3.0.1-21.el6_10 |
| Red Hat:enterprise_linux:6::workstation | xerces-c-devel | 0 | 0:3.0.1-21.el6_10 |
| Red Hat:enterprise_linux:6::workstation | xerces-c-doc | 0 | 0:3.0.1-21.el6_10 |
| Red Hat:enterprise_linux:7::client | xerces-c | 0 | 0:3.1.1-10.el7_7 |
| Red Hat:enterprise_linux:7::client | xerces-c-debuginfo | 0 | 0:3.1.1-10.el7_7 |
| Red Hat:enterprise_linux:7::client | xerces-c-devel | 0 | 0:3.1.1-10.el7_7 |
| Red Hat:enterprise_linux:7::client | xerces-c-doc | 0 | 0:3.1.1-10.el7_7 |
| Red Hat:enterprise_linux:7::computenode | xerces-c | 0 | 0:3.1.1-10.el7_7 |
| Red Hat:enterprise_linux:7::computenode | xerces-c-debuginfo | 0 | 0:3.1.1-10.el7_7 |
| Red Hat:enterprise_linux:7::computenode | xerces-c-devel | 0 | 0:3.1.1-10.el7_7 |
| Red Hat:enterprise_linux:7::computenode | xerces-c-doc | 0 | 0:3.1.1-10.el7_7 |
| Red Hat:enterprise_linux:7::server | xerces-c | 0 | 0:3.1.1-10.el7_7 |
| Red Hat:enterprise_linux:7::server | xerces-c-debuginfo | 0 | 0:3.1.1-10.el7_7 |
| Red Hat:enterprise_linux:7::server | xerces-c-devel | 0 | 0:3.1.1-10.el7_7 |
| Red Hat:enterprise_linux:7::server | xerces-c-doc | 0 | 0:3.1.1-10.el7_7 |
| Red Hat:enterprise_linux:7::workstation | xerces-c | 0 | 0:3.1.1-10.el7_7 |
| Red Hat:enterprise_linux:7::workstation | xerces-c-debuginfo | 0 | 0:3.1.1-10.el7_7 |
| Red Hat:enterprise_linux:7::workstation | xerces-c-devel | 0 | 0:3.1.1-10.el7_7 |
| Red Hat:enterprise_linux:7::workstation | xerces-c-doc | 0 | 0:3.1.1-10.el7_7 |
| SUSE:Enterprise Storage 6 | xerces-c | 0 | 3.1.4-3.6.1 |
| SUSE:Enterprise Storage 7.1 | xerces-c | 0 | 3.1.4-150200.10.11.1 |
| SUSE:Enterprise Storage 7.1 | xerces-c | 0 | 3.2.3-150300.3.6.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP1-ESPOS | xerces-c | 0 | 3.1.4-3.6.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP1-LTSS | xerces-c | 0 | 3.1.4-3.6.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP2-LTSS | xerces-c | 0 | 3.1.4-150200.10.11.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP3-LTSS | xerces-c | 0 | 3.1.4-150200.10.11.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP3-LTSS | xerces-c | 0 | 3.2.3-150300.3.6.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS | xerces-c | 0 | 3.2.3-150300.3.6.1 |
| SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS | xerces-c | 0 | 3.2.3-150300.3.6.1 |
| SUSE:Linux Enterprise High Performance Computing 15-ESPOS | xerces-c | 0 | 3.1.4-3.6.1 |
| SUSE:Linux Enterprise High Performance Computing 15-LTSS | xerces-c | 0 | 3.1.4-3.6.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP2 | xerces-c | 0 | 3.1.4-10.3.1 |
| SUSE:Linux Enterprise Module for Basesystem 15 SP5 | xerces-c | 0 | 3.2.3-150300.3.6.1 |
| SUSE:Linux Enterprise Server 12 SP5 | xerces-c | 0 | 3.1.1-13.6.1 |
| SUSE:Linux Enterprise Server 12 SP5 | xerces-c | 0 | 3.1.1-13.12.1 |
| SUSE:Linux Enterprise Server 15 SP1-BCL | xerces-c | 0 | 3.1.4-3.6.1 |
| SUSE:Linux Enterprise Server 15 SP1-LTSS | xerces-c | 0 | 3.1.4-3.6.1 |
| SUSE:Linux Enterprise Server 15 SP2-LTSS | xerces-c | 0 | 3.1.4-150200.10.11.1 |
| SUSE:Linux Enterprise Server 15 SP3-LTSS | xerces-c | 0 | 3.1.4-150200.10.11.1 |
| SUSE:Linux Enterprise Server 15 SP3-LTSS | xerces-c | 0 | 3.2.3-150300.3.6.1 |
| SUSE:Linux Enterprise Server 15 SP4-LTSS | xerces-c | 0 | 3.2.3-150300.3.6.1 |
| SUSE:Linux Enterprise Server 15-LTSS | xerces-c | 0 | 3.1.4-3.6.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP5 | xerces-c | 0 | 3.1.1-13.6.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP5 | xerces-c | 0 | 3.1.1-13.12.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 | xerces-c | 0 | 3.1.4-3.6.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP1 | xerces-c | 0 | 3.1.4-3.6.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP2 | xerces-c | 0 | 3.1.4-150200.10.11.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP3 | xerces-c | 0 | 3.1.4-150200.10.11.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP3 | xerces-c | 0 | 3.2.3-150300.3.6.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP4 | xerces-c | 0 | 3.2.3-150300.3.6.1 |
| SUSE:Linux Enterprise Software Development Kit 12 SP5 | xerces-c | 0 | 3.1.1-13.6.1 |
| SUSE:Linux Enterprise Software Development Kit 12 SP5 | xerces-c | 0 | 3.1.1-13.12.1 |
| SUSE:Manager Proxy 4.0 | xerces-c | 0 | 3.1.4-3.6.1 |
| SUSE:Manager Proxy 4.3 | xerces-c | 0 | 3.2.3-150300.3.6.1 |
| SUSE:Manager Retail Branch Server 4.0 | xerces-c | 0 | 3.1.4-3.6.1 |
| SUSE:Manager Server 4.0 | xerces-c | 0 | 3.1.4-3.6.1 |
| SUSE:Manager Server 4.3 | xerces-c | 0 | 3.2.3-150300.3.6.1 |
| Ubuntu:20.04:LTS | xerces-c | 0 | 3.2.2+debian-1ubuntu0.1 |
| Ubuntu:20.04:LTS | xerces-c | 0 | 3.2.2+debian-1ubuntu0.2 |
| Ubuntu:22.04:LTS | xerces-c | 0 | 3.2.3+debian-3ubuntu0.1 |
| Ubuntu:23.10 | xerces-c | 0 | 3.2.4+debian-1ubuntu0.23.10.1 |
| Ubuntu:Pro:14.04:LTS | xerces-c | 0 | 3.1.1-5.1+deb8u4ubuntu0.1~esm1 |
| Ubuntu:Pro:14.04:LTS | xerces-c | 0 | 3.1.1-5.1+deb8u4ubuntu0.1~esm2 |
| Ubuntu:Pro:16.04:LTS | xerces-c | 0 | 3.1.3+debian-1ubuntu0.1~esm2 |
| Ubuntu:Pro:16.04:LTS | xerces-c | 0 | 3.1.3+debian-1ubuntu0.1~esm3 |
| Ubuntu:Pro:18.04:LTS | xerces-c | 0 | 3.2.0+debian-2ubuntu0.1~esm2 |
| Ubuntu:Pro:18.04:LTS | xerces-c | 0 | 3.2.0+debian-2ubuntu0.1~esm3 |
| Ubuntu:Pro:22.04:LTS | xerces-c | 0 | 3.2.3+debian-3ubuntu0.1 |
| Ubuntu:Pro:22.04:LTS | xerces-c | 0 | 3.2.3+debian-3ubuntu0.1~esm1 |
| openSUSE:Leap 15.2 | xerces-c | 0 | 3.1.4-lp152.5.3.1 |
| openSUSE:Leap 15.3 | xerces-c | 0 | 3.1.4-10.3.1 |
| openSUSE:Leap 15.5 | xerces-c | 0 | 3.2.3-150300.3.6.1 |
| openSUSE:Tumbleweed | xerces-c | 0 | 3.2.5-1.1 |
Related vulnerabilities
- CVE-2023-37536 An integer overflow in xerces-c++ 3.2.3 in BigFix Platform allows remote attackers to… Also affects xerces-c
- CVE-2016-4463 Stack-based buffer overflow in Apache Xerces-C++ before 3.1.4 allows context-dependent… Also affects xerces-c
- CVE-2016-2099 Use-after-free vulnerability in validators/DTD/DTDScanner.cpp in Apache Xerces C++ 3.1.3… Also affects xerces-c
- CVE-2015-0252 internal/XMLReader.cpp in Apache Xerces-C before 3.1.2 allows remote attackers to cause a… Also affects xerces-c
- CVE-2026-109618 PHP uses longjmp() for out-of-memory (OOM) errors to exit the current context and abort… CWE-416
- CVE-2026-109619 PHP has various global state that temporarily points into request memory. CWE-416
- CVE-2026-112402 Pillow is a Python imaging library. CWE-416
- CVE-2026-112396 Pillow is a Python imaging library. CWE-416