CVE-2026-93990

Expat before 2.8.5 Malformed UTF-16 Acceptance via Unchecked Surrogate

Published Sep 19, 2026 CVSS 4.0 · 8.7 High EPSS < 1% KEV · Not listed
Description
Expat before 2.8.5 fails to validate that a high surrogate in UTF-16 input is followed by a low surrogate, allowing malformed UTF-16 sequences to be accepted. Attackers can supply UTF-16 encoded XML containing lone high surrogates that consume the following code unit, causing Expat to pass unpaired surrogates to applications built with XML_UNICODE and to silently replace input characters in other builds.

Remediation

No solution or workaround provided in the CVE record

Tracking

Sign in to view the affected projects.

Advisories

Source ID Title
Debian DLA Debian DLA DLA-4807-1 expat security update
Debian DSA Debian DSA DSA-6566-1 expat security update
History
Type Values Removed Values Added
Description Expat through 2.8.4 fails to validate low surrogates following high surrogates in UTF-16 input, allowing malformed UTF-16 sequences to be accepted. Attackers can craft UTF-16 encoded XML with lone high surrogates that consume following code units, hiding markup characters from the parser and enabling XML injection attacks. Expat before 2.8.5 fails to validate that a high surrogate in UTF-16 input is followed by a low surrogate, allowing malformed UTF-16 sequences to be accepted. Attackers can supply UTF-16 encoded XML containing lone high surrogates that consume the following code unit, causing Expat to pass unpaired surrogates to applications built with XML_UNICODE and to silently replace input characters in other builds.
Title Expat through 2.8.4 Malformed UTF-16 Acceptance via Unchecked Surrogate Expat before 2.8.5 Malformed UTF-16 Acceptance via Unchecked Surrogate
References
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}

Type Values Removed Values Added
First Time appeared Libexpat
Libexpat expat
Vendors & Products Libexpat
Libexpat expat
Type Values Removed Values Added
Description Expat through 2.8.4 fails to validate low surrogates following high surrogates in UTF-16 input, allowing malformed UTF-16 sequences to be accepted. Attackers can craft UTF-16 encoded XML with lone high surrogates that consume following code units, hiding markup characters from the parser and enabling XML injection attacks.
Title Expat through 2.8.4 Malformed UTF-16 Acceptance via Unchecked Surrogate
First Time appeared Libexpat Project
Libexpat Project libexpat
Weaknesses CWE-176
CPEs cpe:2.3:a:libexpat_project:libexpat:*:*:*:*:*:*:*:*
Vendors & Products Libexpat Project
Libexpat Project libexpat
References
Metrics cvssV3_1

{'score': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N'}

cvssV4_0

{'score': 8.7, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N'}

Weaknesses

Sources

Status
PUBLISHED
Assigner
VulnCheck
Published
Updated
Nov 10, 2026, 12:49 PM
Reserved
Sep 19, 2026, 10:55 AM
Status
Awaiting Analysis
Published
Sep 19, 2026, 11:17 PM
Modified
Nov 10, 2026, 1:19 PM
Severity
Important
Public date
Sep 19, 2026, 10:58 PM