Skip to main content

Mini-XML EUVDEUVD-2026-101232

| CVE-2026-110604 LOW
Off-by-one Error (CWE-193)
2026-10-14 VulnCheck GHSA-pc2v-ppxx-vfq5
2.0
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Deliver crafted XML with 63-digit REAL value
  2. Delivery
    Application parses it under non-'.' locale
  3. Exploit
    Trigger off-by-one in mxml_strtod()
  4. Execution
    Write NUL byte past 64-byte stack buffer
  5. Impact
    Corrupt stack or crash process

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Off-by-one prevention
Exploitation Conditions

Exploitation requires that the host process runs under a C locale whose decimal point is NOT '.' (e.g., de_DE, fr_FR, or any comma-decimal locale) - in a default 'C'/en_US locale the vulnerable branch is not reached. The application must then parse attacker-controlled XML containing a REAL numeric value of exactly 63 digits immediately followed by a '.' character, which drives mxml_strtod()'s decimal-point substitution logic to write one byte past its 64-byte stack buffer. Limiting factors: the non-default locale precondition, the requirement that the attacker's data reaches the XML parser (UI:P / local delivery), and the single-byte NUL overwrite that constrains impact mostly to crashes or minor stack corruption rather than reliable control-flow hijack.

Impact

All available signals point to a low real-world priority. The vendor-assigned CVSS 4.0 base score is only 2.0, consistent with a vector that requires local attack delivery (AV:L), a non-default attack requirement (AT:P - the process locale's decimal point must not be '.'), passive user interaction (UI:P), and yields only limited integrity and availability impact (VI:L/VA:L) with no confidentiality loss - matching an off-by-one that writes a single NUL byte past a 64-byte stack buffer (CWE-193). No EPSS score, KEV listing, or SSVC decision data was provided, so probabilistic exploitation and automatability cannot be weighed; absence of these is not evidence of safety but does mean there is no signal of mass exploitation. There is no indication of active exploitation and no POC flag in the input, though a detailed public technical write-up by the reporting researcher is referenced, which lowers the research bar for a working trigger. The realistic worst case is a denial of service (process crash) or localized stack corruption rather than reliable code execution, since only one NUL byte is written out of bounds. Net: a genuine but minor bug - patch in routine maintenance cycles, not an emergency.

Exploit ScenarioDerived

An application linked against Mini-XML 4.0.0-4.0.6 runs in a locale whose decimal separator is not '.' (e.g., de_DE, fr_FR) and parses attacker-controlled XML. The attacker submits a REAL value consisting of 63 digits followed by '.', causing mxml_strtod() to write a terminating NUL one byte past its 64-byte stack buffer, typically crashing the process or corrupting adjacent stack memory. No weaponized exploit is published, but a public technical write-up documenting the flaw exists.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 14, 2026

An off-by-one stack out-of-bounds write in Mini-XML 4.0.0 through 4.0.6 lets an attacker who can supply crafted XML corrupt or crash a parsing application, but only when the host process runs under a locale whose decimal separator is not '.'. Supplying a REAL value of exactly 63 digits immediately followed by '.' drives mxml_strtod()'s decimal-point substitution logic to write a NUL byte one position past its 64-byte stack buffer (CWE-193), corrupting adjacent stack memory. No public exploit identified at time of analysis; independent assessment rates this CVSS:3.1/AV:L/AC:H/PR:N/UI:R/S:U/C:N/I:L/A:L (CVSS 4.0 base score 2.0), so all available signals point to a low real-world priority.

RemediationAI

Vendor-released patch: upgrade to Mini-XML 4.0.7 (or later), which fixes the numeric overflow, per the CHANGES.md entry in upstream fix commit 367c7ddd3387f65e867d776216de274bcaa3dae1 (https://github.com/michaelrsweet/mxml/commit/367c7ddd3387f65e867d776216de274bcaa3dae1); that commit changes the mxml_strtod() bound check to 'sizeof(temp) - 1 - (tempptr - temp)' so room is reserved for the terminating NUL. If upgrading immediately is not possible, the most effective compensating control is to force the parser process into a C/POSIX locale (e.g., set LC_ALL=C or LC_NUMERIC=C) or call setlocale(LC_NUMERIC, "C") at startup - this keeps execution out of the vulnerable decimal-point substitution branch, at the trade-off of disabling locale-aware numeric formatting elsewhere in the application; alternatively, reject or truncate XML REAL literals longer than roughly 62 digits before they reach the parser, or restrict which untrusted input sources can feed mxml, though these are validation heuristics rather than a complete fix. Note the non-default locale and attacker-controlled XML prerequisites mean the practical exposure is limited; nevertheless, treat the update as routine hygiene. Advisory references: https://www.vulncheck.com/advisories/mini-xml-4.0.0-through-4.0.6-stack-out-of-bounds-write-via-mxml-strtod and the upstream commit URL above.

Affected VersionsENISA

Mini-XML 4.0.0 ≤4.0.6

Affected Packages

euvd mini_xml no fix

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

Mini-XML (mxml) is a small C library used to parse and generate XML, tracked under CPE cpe:2.3:a:michael_r_sweet:mini-xml, with the vulnerable code in mxml-file.c (mxml_strtod(), lines ~1860-1887 in v4.0.6). The root cause is CWE-193 (off-by-one error): when parsing a REAL (floating-point) value, mxml_strtod() copies the numeric token into a fixed 64-byte stack buffer named temp and, if the current locale's decimal point is not '.', substitutes the locale-appropriate separator before calling strtod(). The length guard was written as 'if (declen <= (sizeof(temp) - (size_t)(tempptr - temp)))', which fails to reserve space for the terminating NUL; the patched form subtracts an additional 1. A token whose digits fill the buffer exactly (63 digits) followed by a '.' therefore causes a single NUL byte to be written at index 64, one byte past the buffer. The vulnerability is reachable only through the locale-dependent branch, so a default 'C'/'en_US' locale never triggers it. The same upstream commit (367c7ddd) also corrects a separate UTF-16 surrogate check (>= 0xdfff changed to > 0xdfff), but that is a distinct defect from the reported overflow.

Know when Mini Xml 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

Vendor (VulnCheck) PRIMARY 2.0 LOW
CVSS:4.0/AV:L/AC:L/AT:P/PR:N/UI:P/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N
vuln.today AI 3.6 LOW

AC:H and UI:R because a non-'.' locale plus a precisely crafted 63-digit value and the app processing attacker XML are needed; AV:L as delivery is typically local/file; C:N, I:L/A:L for a one-byte overflow.

3.1 AV:L/AC:H/PR:N/UI:R/S:U/C:N/I:L/A:L
4.0 AV:L/AC:L/AT:P/PR:N/UI:P/VC:N/VI:L/VA:L/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Local
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
Passive
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
Low
Vulnerable system: Availability
Low
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

Mini-XML 4.0.0 through 4.0.6 contains an off-by-one stack out-of-bounds write in mxml_strtod() when the locale decimal point is not '.'. Attackers can supply XML with a 63-digit REAL value followed by '.' to write a NUL byte past the 64-byte stack buffer, corrupting stack memory or crashing the process.

Threat Intelligence Overview

EPSS Score
0.2%
Top 88% exploitable
Prevalence
Low
niche lightweight XML C library, embedded in specific projects not everywhere
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity LOW
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Defer
Exploitation
Poc
System Exposure· derived
Small
Automatable
No
Human Impact· derived
Low
Technical Impact
Partial

Priority Score

10
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +10
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

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.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy