Skip to main content
Public proof of conceptFix available

CVE-2026-32875

A public proof of concept exists; no exploitation attested.

  • Published2026-03-20
  • Fixed in5.12.0
  • WeaknessCWE-190 · CWE-787 · CWE-835

Am I affected?

With a domain, we read the version its public headers and pages expose. A distribution build can carry the fix under an older number.

Description

UltraJSON is a fast JSON encoder and decoder written in pure C with bindings for Python 3.7+. Versions 5.10 through 5.11.0 are vulnerable to buffer overflow or infinite loop through large indent handling. ujson.dumps() crashes the Python interpreter (segmentation fault) when the product of the indent parameter and the nested depth of the input exceeds INT32_MAX. It can also get stuck in an infinite loop if the indent is a large negative number. Both are caused by an integer overflow/underflow whilst calculating how much memory to reserve for indentation. And both can be used to achieve denial of service. To be vulnerable, a service must call ujson.dump()/ujson.dumps()/ujson.encode() whilst giving untrusted users control over the indent parameter and not restrict that indentation to reasonably small non-negative values. A service may also be vulnerable to the infinite loop if it uses a fixed negative indent. An underflow always occurs for any negative indent when the input data is at least one level nested but, for small negative indents, the underflow is usually accidentally rectified by another overflow. This issue has been fixed in version 5.12.0.

Timeline

dates in UTC
  1. 2026-03-2002:16CVE publishedNVD

Versions per branch

NVD · OSV
Ultrajson project ultrajson
BranchAffectedFixed in
5.x≥ 5.1.0, < 5.12.05.12.0

as publishedRanges as NVD and OSV publish them; a distribution’s build can be fixed under an older number.

Products declared by the CNA1 product

As GitHub_M, the CNA that assigned this CVE, declared them in the CVE record; versions as written.

  • ultrajson
    Affected
    • = >= 5.1.0, < 5.12.0no fix stated

Source: the CNA record (CVE Program), © The MITRE Corporation,CVE Terms of UseCVE recordupdated 2026-03-20

Distribution builds and vendor advisories

Packages from OSV.dev and products from the vendors' CSAF advisories.

version not verifiedVersions not verified: read as OSV.dev and the vendors publish them, not checked against each vendor's release list.

Packages

  • apache-beam-python-3.12-sdkChainguardall versions · fixed in 2.71.0-r1
  • label-studioMinimOSall versions · fixed in 1.23.1-r0
  • py3-ujsonAlpine:v3.24all versions · fixed in 5.12.0-r0
  • py3-ujsonAlpine:v3.23all versions · fixed in 5.12.0-r0
  • python-ujsonopenEuler:24.03-LTS-SP4all versions · fixed in 5.1.0-6.oe2403sp4
  • python-ujsonopenEuler:24.03-LTS-SP3all versions · fixed in 5.1.0-7.oe2403sp3
  • python-ujsonopenEuler:24.03-LTS-SP1all versions · fixed in 5.1.0-6.oe2403sp1
  • python-ujsonMageia:9all versions · fixed in 5.7.0-1.1.mga9

15 more package ranges on OSV.dev

Full record on NVD

Fix

  1. Update Ultrajson project ultrajson to 5.12.0

Advisories and patches

Detection

Nuclei template
none so far
ProjectDiscovery
Exploit-DB
no entry
Exploit-DB
Proof of concept
Metasploit modules
none listed
Metasploit Framework

Sources

  • CISA-ADPSSVC decisionpoc2026-03-25
  • CNACVSS 3.17.5known since 2026-10-23
  • CNAweakness (CWE)CWE-190, CWE-787, CWE-835known since 2026-10-23
  • NVDweakness (CWE)CWE-190read 2026-10-23
  • FIRST EPSSEPSS score0.5 %2026-11-08
  • OSVaffected packages—
  • GitHub AdvisoriesadvisoryHIGH2026-03-18

Identifiers

Technical details

CVSS v3 Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Published
2026-03-20
Last Modified
2026-07-15
NVD status
Modified
GitHub Advisory
GHSA-c8rr-9gxc-jprv

Frequently asked questions

What is CVE-2026-32875?

UltraJSON is a fast JSON encoder and decoder written in pure C with bindings for Python 3.7+. Versions 5.10 through 5.11.0 are vulnerable to buffer overflow or infinite loop through large indent handling. ujson.dumps() crashes the Python interpreter (segmentation fault) when the product of the indent parameter and the nested depth of the input exceeds INT32_MAX. It can also get stuck in an infinite loop if the indent is a large negative number. Both are caused by an integer overflow/underflow whilst calculating how much memory to reserve for indentation. And both can be used to achieve denial of service. To be vulnerable, a service must call ujson.dump()/ujson.dumps()/ujson.encode() whilst giving untrusted users control over the indent parameter and not restrict that indentation to reasonably small non-negative values. A service may also be vulnerable to the infinite loop if it uses a fixed negative indent. An underflow always occurs for any negative indent when the input data is at least one level nested but, for small negative indents, the underflow is usually accidentally rectified by another overflow. This issue has been fixed in version 5.12.0.

Is CVE-2026-32875 actively exploited?

A proof-of-concept exploit exists for CVE-2026-32875, but active exploitation has not been confirmed at this time.

What is the CVSS score for CVE-2026-32875?

CVE-2026-32875 has a CVSS v3 base score of 7.5 (HIGH severity), with vector string CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H.

Running ujson? Hear about its next vulnerability

Surveillance reads the versions in your stack — a domain, a lockfile or a list — checks each CVE against the ranges its sources publish, and alerts you when one you run is exploited or enters CISA KEV. A version it cannot read stays « version not verified ».

No credit card required · No monthly cap on website lookups · 250 API requests/month

Sources for this record