CVE-2026-54911 UltraJSON: Malformed/Truncated UTF-8 Accepted and Silently Rewritten in ujson.dumps()
Attackers can bypass input validation and corrupt data integrity by exploiting silent UTF-8 rewriting in UltraJSON when reject_bytes is disabled.
- Exploited in the wild
- Not known
- Login needed
- Not needed
- Attackable
- Over the internet
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2026-54911?
CVE-2026-54911 is a medium-severity vulnerability in ultrajson, published on 22 Jun 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.
Official description
UltraJSON is a fast JSON encoder and decoder written in pure C with bindings for Python 3.7+. Prior to 5.13.0, ujson.dumps() (or ujson.dump() or ujson.encode()) have a reject_bytes=False option. When set, they may accept malformed or truncated UTF-8 byte sequences, silently rewriting them into different Unicode characters instead of rejecting them. This leads to input validation bypass and data integrity issues. This vulnerability is fixed in 5.13.0.
Weakness: CWE-20
Which versions are affected by CVE-2026-54911?
3 open source packages ship an affected version, including ujson. It affects 1 product.
| Package | Affected | Fixed in |
|---|---|---|
ujson PyPI | All versions | 5.13.0 |
ujson PyPI | All versions | 5.13.0 |
ujson PyPI | All versions | 5.13.0 |
Products include Ultrajson Project Ultrajson.
How do I fix CVE-2026-54911?
Upgrade ujson to 5.13.0 or later.
Is CVE-2026-54911 being exploited?
There is no known exploitation of CVE-2026-54911 in the wild and no public exploit code.
Other vulnerabilities in ultrajson
Sources
Also known as DEBIAN-CVE-2026-54911, ECHO-0346-5369-6592, GHSA-3j69-69wj-xqx2, MINI-89q8-3p3r-9gwc, PYSEC-2026-2294, ROOT-APP-PYPI-CVE-2026-54911 and 1 more.