Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessGain local system access
-
DeliveryInvoke xmlcatalog --shell mode
-
ExploitSupply oversized input string
-
ExecutionOverflow stack buffers in usershell()
-
PersistCorrupt stack frame and return address
-
ImpactCrash process or redirect execution
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Stack buffer bounds checking
MITRE ATT&CK
1 technique across 1 tactic: Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires that the attacker or victim explicitly invoke the xmlcatalog utility with the --shell flag to enter interactive shell mode - this is a non-default, non-automated invocation that is not triggered during any normal XML processing workflow or library API call. Local system access is required (AV:L per CVSS 4.0); the vulnerability cannot be triggered remotely. Active user interaction is required (UI:A per CVSS 4.0): a user must deliberately run xmlcatalog in shell mode and supply the malicious input, making self-exploitation or social engineering the realistic attack path. An attack precondition must be met (AT:P): the xmlcatalog binary must be installed, accessible, and actively used in --shell mode. The overflow is bounded to the xmlcatalog process and does not affect libxml2 when used as a shared library by other applications. Primary limiting factors are: mandatory local access, non-default interactive invocation mode, required user-initiated action, and modern stack protections (SSP/ASLR) that impede reliable code execution beyond a crash. |
| Impact | The CVSS 4.0 score of 1.8 (AV:L/AC:L/AT:P/PR:N/UI:A/VC:N/VI:N/VA:L/SC:L/SI:L/SA:N) places this at the lowest practical severity tier. Attack Vector is Local, requiring authenticated shell access to the host; there is no remote attack path. User Interaction is Active (UI:A), meaning a user must deliberately invoke xmlcatalog with the --shell flag - not an incidental or automated action. The Attack Prerequisites flag (AT:P) further acknowledges that this interactive mode must be in use. No EPSS score was provided in the available intelligence; the CVE is absent from CISA KEV, confirming no known active exploitation. No public proof-of-concept code has been identified. The 'RCE' tag reflects the theoretical worst case - control-flow hijack via stack corruption - but practical exploitation against hardened modern systems is unlikely, with a process crash being the realistic outcome. The maintainers' explicit position that this is a bug rather than a vulnerability further deprioritizes urgency. The overall signal set consistently indicates a narrow, low-risk issue with a minimal real-world attack surface. |
| Exploit ScenarioDerived | A local user on a Linux system runs xmlcatalog with the --shell flag to enter interactive mode, then supplies or pipes an excessively long input string, overflowing the fixed-size command/arg/argv buffers in usershell() and corrupting the stack frame. On systems without effective stack canaries or with exploitable memory layouts, this could permit a ROP-chain or shellcode execution within the xmlcatalog process context; on hardened systems, the realistic outcome is a process crash. No public exploit code has been identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jun 29, 2026
Stack-based buffer overflows in libxml2's xmlcatalog utility enable memory corruption and potential arbitrary code execution when the tool is invoked in its interactive --shell mode. The usershell() function writes user-supplied input into fixed-size stack buffers (command, arg, argv) without any length validation, allowing overflow of adjacent stack memory including return addresses. Real-world risk is very low: exploitation requires local access, deliberate user invocation of a non-default shell mode, and an attack precondition - reflected in the CVSS 4.0 score of 1.8 - with no public exploit or active exploitation identified. Notably, libxml2 maintainers disputed the security classification, treating this as a bug rather than a vulnerability.
RemediationAI
The upstream fix is available as GitLab commit c2e233fc (https://gitlab.gnome.org/GNOME/libxml2/-/commit/c2e233fc1b341685fc99621b2768b503f777a72e); a formally tagged patched release version has not been confirmed from available data - monitor the libxml2 GNOME GitLab repository for a tagged release incorporating this commit and apply it once available. As an immediate compensating control, restrict or remove execution permissions on the xmlcatalog binary for unprivileged users (e.g., chmod 750 /usr/bin/xmlcatalog or equivalent), which fully eliminates the attack surface with no impact on the libxml2 library's XML parsing functionality used by other applications and services. Enforcing a policy that prohibits interactive use of xmlcatalog --shell mode in production environments provides additional risk reduction at no operational cost. Note that because the libxml2 maintainers dispute the security classification, downstream Linux distribution maintainers may not backport this fix on an accelerated schedule, requiring manual application from the upstream commit if organizational policy demands earlier remediation.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
libxml2 (CPE: cpe:2.3:a:xmlsoft:libxml2:*:*:*:*:*:*:*:*) is an open-source XML parsing library maintained by the GNOME project and shipped in virtually all Linux and Unix distributions. The affected component is the xmlcatalog command-line utility, specifically its interactive --shell mode implemented in the usershell() function. The root cause is CWE-121 (Stack-based Buffer Overflow): usershell() allocates fixed-size arrays on the call stack to hold parsed command tokens, arguments, and argv entries but performs no bounds checking on input length, so an excessively long input line overwrites adjacent stack memory including saved frame pointers and return addresses. Modern hardening measures - stack canaries (SSP), ASLR, and non-executable stack - raise the practical bar for reliable code execution, but a crash-level denial-of-service against the xmlcatalog process is straightforward to trigger.
Know when Libxml2 gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:A/VC:N/VI:N/VA:L/SC:L/SI:L/SA:N
Local vector with no privileges required to run xmlcatalog; user must actively invoke --shell mode (UI:R); impact is limited to process crash (A:L) within the unchanged xmlcatalog process scope.
Primary rating from Vendor (CERT-PL).
CVSS VectorVendor: CERT-PL
DescriptionCVE.org
libxml2 is vulnerable to multiple stack-based buffer overflows in the xmlcatalog utility when running in --shell mode. The usershell() function processes user input using fixed-size stack buffers without proper bounds checking. By supplying an overly long input line, an attacker can overflow internal buffers (command, arg, and argv) during input parsing. This results in memory corruption within the stack frame. Successful exploitation may cause a crash or potentially allow arbitrary code execution in the context of the xmlcatalog process.
This issue has been fixed in the commit c2e233fc.
NOTE: The maintainers of this project did not agree that this issue is a vulnerability and considered it a bug.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.
A stack-based buffer overflow occurs when a program writes more data to a buffer located on the stack than it was allocated to hold.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
Stack-based buffer overflow in libxml2's xmlBuildQName function allows remote unauthenticated attackers to crash affecte
xpointer.c in libxml2 before 2.9.5 (as used in Apple iOS before 10, OS X before 10.12, tvOS before 10, and watchOS befor
The xmlNextChar function in libxml2 before 2.9.4 allows remote attackers to cause a denial of service (heap-based buffer
Heap-based buffer overflow in the xmlStrncat function in libxml2 before 2.9.4, as used in Apple iOS before 9.3.2, OS X b
Heap-based buffer overflow in the xmlFAParsePosCharGroup function in libxml2 before 2.9.4, as used in Apple iOS before 9
Alpine Linux: libxml2 fixed in 2.12.7-r0
An issue was discovered in libxml2 before 2.10.3. Rated high severity (CVSS 7.5), this vulnerability is remotely exploit
A buffer overflow was discovered in libxml2 20904-GITv2.9.4-16-g0741801. Rated high severity (CVSS 7.5), this vulnerabil
The xmlParseElementDecl function in parser.c in libxml2 before 2.9.4 allows context-dependent attackers to cause a denia
parser.c in libxml2 before 2.9.5 does not prevent infinite recursion in parameter entities. Rated high severity (CVSS 7.
The xmlBufAttrSerializeTxtContent function in xmlsave.c in libxml2 allows context-dependent attackers to cause a denial
Multiple use-after-free vulnerabilities in libxml2 2.9.0 and possibly other versions might allow context-dependent attac
EUVD-2026-40092
GHSA-h67q-h62w-5mjr
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB