CVE-2017-10672
Critical · 9.8CVSS
9.8
EPSS
7.9%
Published
Jun 29, 2017
CISA due date
—
Cloudanix analysis
A flaw in a common Perl library for handling XML data lets attackers remotely take control of affected systems without needing any login credentials.
- 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 the XML-LibXML Perl module triggered when attacker-controlled arguments are passed to replaceChild, enabling arbitrary code execution.
Why it matters to the business
Remote compromise of systems processing untrusted XML via Perl, potentially leading to data theft, service disruption, or full environment takeover; widespread exposure in dependent packages increases urgency despite low current EPSS.
How an attack unfolds
An attacker supplies specially crafted input to a Perl application using XML-LibXML that invokes replaceChild with attacker-controlled node arguments, triggering the use-after-free to corrupt memory and execute arbitrary code; public exploits have been available since disclosure.
How to fix it
Update affected packages to the fixed versions provided (mysql-8.0 and related Chainguard images to 8.0.38-r0 or newer) and ensure the underlying XML-LibXML Perl module is upgraded beyond 2.0129; apply vendor patches immediately and rebuild any containers or distributions that embed the vulnerable library.
How to confirm the fix worked
Verify installed package versions match or exceed the stated fixed releases; test applications with known-safe XML inputs and monitor for crashes or unexpected behavior under fuzzing of replaceChild operations.
Typical attack path
- Locate Perl applications or services that depend on the vulnerable XML-LibXML module and accept untrusted XML input.
- Craft malicious XML structures or arguments targeting the replaceChild call to induce the use-after-free.
- Deliver the payload via network request, file upload, or API to trigger memory corruption.
- Leverage the resulting code execution to establish persistence, escalate privileges, or exfiltrate data.
How to detect it
Inspect web server and application logs for Perl process crashes or segmentation faults during XML parsing; search for repeated replaceChild-related errors or anomalous memory behavior in Perl interpreters handling external input.
What your security team should do
- Prioritize patching all instances of the listed packages to the 8.0.38-r0 fixed versions within the next 30 days given the critical CVSS and available exploits.
- Scan inventories for any Perl XML-LibXML usage and enforce dependency updates in build pipelines.
- Implement input sanitization and sandboxing for XML processing as a defense-in-depth measure.
- Review logs for historical indicators of exploitation on internet-facing Perl services.
The record
Use-after-free in the XML-LibXML module through 2.0129 for Perl allows remote attackers to execute arbitrary code by controlling the arguments to a replaceChild call.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Debian:11 | libxml-libxml-perl | 0 | 2.0128+dfsg-5 |
| Debian:12 | libxml-libxml-perl | 0 | 2.0128+dfsg-5 |
| Debian:13 | libxml-libxml-perl | 0 | 2.0128+dfsg-5 |
| Debian:7 | libxml-libxml-perl | 0 | 2.0001+dfsg-1+deb7u2 |
| Debian:8 | libxml-libxml-perl | 0 | 2.0116+dfsg-1+deb8u2 |
| Debian:9 | libxml-libxml-perl | 0 | 2.0128+dfsg-1+deb9u1 |
| Mageia:5 | perl-XML-LibXML | 0 | 2.12.100-1.1.mga5 |
| Mageia:6 | perl-XML-LibXML | 0 | 2.12.900-1.1.mga6 |
| SUSE:Linux Enterprise Desktop 12 SP2 | perl-XML-LibXML | 0 | 2.0019-6.3.5 |
| SUSE:Linux Enterprise Desktop 12 SP3 | perl-XML-LibXML | 0 | 2.0019-6.3.5 |
| SUSE:Linux Enterprise Point of Sale 11 SP3 | perl-XML-LibXML | 0 | 1.66-3.3.1 |
| SUSE:Linux Enterprise Server 11 SP3-LTSS | perl-XML-LibXML | 0 | 1.66-3.3.1 |
| SUSE:Linux Enterprise Server 11 SP3-TERADATA | perl-XML-LibXML | 0 | 1.66-3.3.1 |
| SUSE:Linux Enterprise Server 11 SP4 | perl-XML-LibXML | 0 | 1.66-3.3.1 |
| SUSE:Linux Enterprise Server 12 SP2 | perl-XML-LibXML | 0 | 2.0019-6.3.5 |
| SUSE:Linux Enterprise Server 12 SP3 | perl-XML-LibXML | 0 | 2.0019-6.3.5 |
| SUSE:Linux Enterprise Server for Raspberry Pi 12 SP2 | perl-XML-LibXML | 0 | 2.0019-6.3.5 |
| SUSE:Linux Enterprise Server for SAP Applications 11 SP4 | perl-XML-LibXML | 0 | 1.66-3.3.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP2 | perl-XML-LibXML | 0 | 2.0019-6.3.5 |
| SUSE:Linux Enterprise Server for SAP Applications 12 SP3 | perl-XML-LibXML | 0 | 2.0019-6.3.5 |
| Ubuntu:14.04:LTS | libxml-libxml-perl | 0 | 2.0108+dfsg-1ubuntu0.2 |
| Ubuntu:16.04:LTS | libxml-libxml-perl | 0 | 2.0123+dfsg-1ubuntu0.1 |
Related vulnerabilities
- CVE-2015-3451 The _clone function in XML::LibXML before 2.0119 does not properly set the… Also affects libxml-libxml-perl
- CVE-2017-16932 parser.c in libxml2 before 2.9.5 does not prevent infinite recursion in parameter… Also affects perl-XML-LibXML
- CVE-2017-0663 A remote code execution vulnerability in libxml2 could enable an attacker using a… Also affects perl-XML-LibXML
- CVE-2016-9318 libxml2 2.9.4 and earlier, as used in XMLSec 1.2.23 and earlier and other products, does… Also affects perl-XML-LibXML
- 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