CVE-2026-93990
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.
Published Sep 19, 2026 · updated Oct 16, 2026
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.
Code
The project this record applies to. Exploit listings stay in References.
No public source repository is identified for this product.
Timeline
Detection, updates, and resolution for this record.
Sep 19, 2026 · OSV.dev
Detected
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
Oct 16, 2026 · OSV.dev
Fix available
expat fixed in 2.5.0-1+deb12u4; expat fixed in 2.9.0-1~deb13u1; expat fixed in 2.8.4-2
Oct 16, 2026 · OSV.dev
Fix available
expat fixed in 2.5.0-1+deb12u4
Oct 16, 2026 · OSV.dev
Fix available
expat fixed in 2.9.0-1~deb13u1
Oct 16, 2026 · OSV.dev
Fix available
expat fixed in 2.8.4-2
Oct 16, 2026 · OSV.dev
Updated
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
Affected
- Debian:12 expat0 → 2.5.0-1+deb12u4
- Debian:13 expat0 → 2.9.0-1~deb13u1
- Debian:14 expat0 → 2.8.4-2