Findings

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.

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

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

  3. Oct 16, 2026 · OSV.dev

    Fix available

    expat fixed in 2.5.0-1+deb12u4

  4. Oct 16, 2026 · OSV.dev

    Fix available

    expat fixed in 2.9.0-1~deb13u1

  5. Oct 16, 2026 · OSV.dev

    Fix available

    expat fixed in 2.8.4-2

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

Sources

References