libexpat 2.8.5 fixes CVE-2026-93990 (malformed UTF-16 smuggling)
libexpat 2.8.5 fixes CVE-2026-93990 by rejecting malformed UTF-16 that could be smuggled into applications.
Sebastian Pipping announced that libexpat 2.8.5, also called Expat 2.8.5, fixes CVE-2026-93990. The release rejects high UTF-16 surrogates that are not followed by a low surrogate. Previously, malformed UTF-16 could be passed into applications using Expat, where the application's handling could cause arbitrary damage. The note does not report observed exploitation.
- libexpat 2.8.5, also called Expat 2.8.5, shipped today.
- CVE-2026-93990: unpaired high UTF-16 surrogates were accepted.
- Malformed UTF-16 could reach the application and cause damage.
- Announcement does not report in-the-wild exploitation.
Vulnerabilities mentionedAll →
- CVE-2026-939908.7—UTF-16 Surrogate Validation Flaw Enables XML Injection in Expat through 2.8.4published · Expat project (libexpat) Expat XML parsing library (libexpat), including all products that embed it
| CVE | Vulnerability | CVSS | EPSS | Flags | Affected | Exposure | Published |
|---|---|---|---|---|---|---|---|
| CVE-2026-93990 | UTF-16 Surrogate Validation Flaw Enables XML Injection in Expat through 2.8.4 Expat (libexpat) through version 2.8.4 fails to validate that a high surrogate in UTF-16 input is followed by a valid low surrogate, so malformed UTF-16 sequences are silently accepted. A lone high surrogate consumes the following code unit, allowing an attacker to craft UTF-16-encoded XML in which markup characters are effectively hidden from the parser. This enables XML injection attacks: the consuming application can be made to interpret document structure or content differently than intended, which matches the CVSS 4.0 vector's high integrity impact with no confidentiality or availability impact. Any application, runtime, or product that embeds Expat and parses attacker-influenced UTF-16 XML is potentially affected, and the library's ubiquity makes that a very large population. No public proof-of-concept is known, the flaw is not in CISA's KEV catalog, and no in-the-wild exploitation has been reported. |
Posted by Sebastian Pipping on Sep 22 Hello oss-security, just a quick note that libexpat 2.8.5 (or "Expat 2.8.5") released today is fixing CVE-2026-93990: Reject high surrogates not followed by a low surrogate during UTF-16 decoding; previously, malformed UTF-16 could be smuggled into the application using Expat and could cause arbitrary damage there, depending on how malformed UTF-16 was handled inside the application; validation was not their job but...
This source does not provide full text. Read it at seclists.org.