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. 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.
Configurations

No configuration.

History

28 Sep 2026, 17:17

Type Values Removed Values Added
References
  • () https://blog.hartwork.org/posts/expat-2-8-5-released/ -
  • () https://github.com/libexpat/libexpat/releases/tag/R_2_8_5 -
Summary (en) 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. (en) 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.

19 Sep 2026, 23:17

Type Values Removed Values Added
New CVE

Information

Published : 2026-09-19 23:17

Updated : 2026-09-28 17:17


NVD link : CVE-2026-93990

Mitre link : CVE-2026-93990

CVE.ORG link : CVE-2026-93990


JSON object : View

Products Affected

No product.

CWE
CWE-176

Improper Handling of Unicode Encoding