CVE-2026-86144
Medium · 5.6CVSS
5.6
EPSS
0.2%
Published
Sep 5, 2026
CISA due date
—
Cloudanix analysis
A widely used XML library can ignore a setting meant to keep document loading offline, so processing certain included files might quietly reach the network and leak data, slow systems, or touch internal services.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- High
- Impact
- Data Exposure
- Component
- Library
- Class
- XXE
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
In libxml2 before 2.15.4, xmlXIncludeProcess and xmlXIncludeProcessTree fail to propagate parseFlags (notably XML_PARSE_NONET) into XInclude processing. Network-disable and other parser restrictions the caller applied to the parent document therefore do not bind to included resources. A custom resource loader can then perform unexpected network fetches during XInclude resolution, enabling XML external entity injection, server-side request forgery against attacker-chosen URLs, or denial of service from a slow or unbounded remote include. Impact is confidentiality, integrity, and availability at low severity with changed scope (CVSS 5.6, AV:L/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:L).
Why it matters to the business
Organizations running Red Hat libxml2 or cert-manager stacks that parse XML with XInclude can face limited data leakage, internal-network probing, or service slowdowns if untrusted or attacker-influenced XML is processed. The issue is 31 days old, is not in CISA KEV, has no known exploit maturity, and requires local access plus high attack complexity, so mass opportunistic compromise is unlikely. Residual risk is highest where cert-manager or other libxml2 consumers sit on Kubernetes control planes or process XML from less-trusted sources, because even a local, constrained bypass of XML_PARSE_NONET can reach internal APIs or stall certificate/issuance workflows. Apply RHSA-2026:72470 on a normal-to-elevated patch cycle rather than emergency KEV timelines.
How an attack unfolds
An attacker who can place or influence XML that a vulnerable libxml2 consumer processes with XInclude (for example via a local file, config, or pipeline that eventually calls xmlXIncludeProcess or xmlXIncludeProcessTree) relies on parseFlags not being copied onto the include path. If the application intended XML_PARSE_NONET or equivalent isolation, that intent is not enforced for included documents. A custom loader then retrieves the href over the network, which can pull attacker-controlled content (XXE-style disclosure), hit internal HTTP/HTTPS endpoints (SSRF), or stall on a deliberately slow remote resource (DoS). No named threat actors or ransomware campaigns are associated; exploitation is situational and depends on a local XML supply path plus a loader that performs network I/O when flags are missing.
How to fix it
Upgrade libxml2 to 2.15.4 or later (upstream). On Red Hat, apply RHSA-2026:72470: libxml2 el8 2.9.7-21.el8_10.9; libxml2 el9 2.9.13-14.el9_8.5; libxml2 el10 2.12.5-10.el10_2.4; libxml2-main 2.15.4-0.1.hum1; cert-manager/cert-manager operator-rhel9:1790589855; cert-manager/cert-manager-istio csr-rhel9:1790589914; cert-manager/jetstack-cert manager-rhel9:1790589912. Until patched, avoid XInclude on untrusted XML, do not register network-capable custom loaders for XInclude, and restrict egress from XML-processing hosts so failed NONET enforcement cannot reach the internet or sensitive internal endpoints.
How to confirm the fix worked
Confirm installed packages meet the RHSA-2026:72470 NEVRAs or that libxml2 reports 2.15.4+. Re-scan images and hosts for older libxml2/cert-manager builds. In application tests, process a benign XInclude with XML_PARSE_NONET set and verify no network fetch occurs (packet capture or an instrumented loader). Inventory callers of xmlXIncludeProcess and xmlXIncludeProcessTree and confirm they no longer depend on flags that were silently dropped.
Typical attack path
- Gain a local or otherwise in-process ability to supply XML that a libxml2-based component will process with XInclude (xmlXIncludeProcess or xmlXIncludeProcessTree).
- Ensure the victim path uses a custom resource loader and that the caller’s parseFlags—especially XML_PARSE_NONET—are the only intended network/entity controls.
- Cause XInclude resolution so flags are not propagated and the loader fetches a remote or attacker-chosen resource.
- Use the unconstrained fetch for limited file/entity disclosure, SSRF against reachable internal URLs, or a slow-resource hang that degrades the XML-processing service.
- Observe leaked content, internal responses, or service impact; no privilege escalation beyond the parser process is implied by this flaw alone.
How to detect it
There is no public exploit activity, KEV listing, or named actor tradecraft for this issue. Hunt for unexpected outbound HTTP/HTTPS or DNS from processes that parse XML (libxml2, cert-manager controllers/operators) around the time untrusted XML or XInclude was processed. Review application and container logs for XInclude resolution, custom loader errors, long-running include fetches, or sudden parser hangs. On hosts, inspect XML inputs and configs for xi:include / XInclude namespaces that point at http(s) URLs. Correlate with egress firewall or service-mesh logs showing parser identities contacting unusual destinations. Absence of these artifacts does not prove non-exploitation; it only indicates no noisy network side effects were recorded.
- xi:include
- xmlns:xi="http://www.w3.org/2001/XInclude"
- xmlXIncludeProcess
- xmlXIncludeProcessTree
- XInclude
- libxml2
- cert-manager
What your security team should do
- Patch Red Hat libxml2 and cert-manager packages in RHSA-2026:72470 on all el8/el9/el10 and operator images; treat as a scheduled high-priority library update, not a KEV emergency.
- Inventory binaries and containers linking libxml2 that enable XInclude or custom resource loaders, especially cert-manager on Kubernetes.
- Block or tightly allowlist egress from XML-parsing workloads until upgrades complete.
- Disable XInclude or reject untrusted XML in any remaining unpatched consumers.
- After patching, verify package versions and that XML_PARSE_NONET is honored for includes; add regression tests around XInclude plus NONET.
The record
In xinclude in libxml2 before 2.15.4, xmlXIncludeProcess and xmlXIncludeProcessTree do not propagate parseFlags. This has security relevance for, for example, the XML_PARSE_NONET flag, if (without it) a custom resource loader accesses the internet and triggers XML external entity injection, SSRF, or a denial of service (e.g., for an attacker-controlled internet resource that is intentionally slow).
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-114722 Roundcube Webmail before 1.6.20 and 1.7.x before 1.7.5 is affected by a CSS scoping… CWE-669
- CVE-2026-106555 In sshd in OpenSSH before 10.6, GSSAPIAuthentication authentication state can incorrectly… CWE-669
- CVE-2026-106553 In sshd in OpenSSH before 10.6, credentials can incorrectly persist after failure of a… CWE-669
- CVE-2026-98125 In the Linux kernel, the following vulnerability has been resolved: smb/client: fix stale… CWE-669
- CVE-2026-92952 vm2 versions 3.11.4 through 3.11.6 incompletely filter Node.js registered internal… CWE-669
- CVE-2026-25832 In Mbed TLS 3.6.x before 3.6.7 and 4.1.x before 4.1.2, the TLS 1.3 client accepts… CWE-669
- CVE-2023-32803 The ca-certificates package before ca-certificates-2021.2.50-72 for Amazon Linux 2 (AL2)… CWE-669
- CVE-2026-89162 In PCRE2 before 10.48, pcre2_serialize_encode might disclose two bytes to an adversary… CWE-669