High severity · published Aug 7, 2026
CVE-2026-71847
Ruby JSON: JSON::ResumableParser#partial_value dereferences a freed input buffer and crashes on truncated duplicate-key streams
8.7
CVSS
0.4%
EPSS
No
On KEV
Description
Ruby JSON is a JSON implementation for Ruby. From 2.20.0 until 2.21.2, Ruby's JSON native C extension clears the consumed JSON::ResumableParser input buffer but leaves state.start, state.cursor, and state.end pointing into released storage. When partial_value reconstructs an incomplete object containing duplicate keys, the duplicate-key warning path calls cursor_position, which dereferences those stale pointers. This results in a heap-use-after-free and can terminate the Ruby process. An attacker who can supply JSON stream data to an application using JSON::ResumableParser may cause process termination when the application calls partial_value on incomplete attacker-controlled input containing duplicate object keys. This issue has been fixed in version 2.21.2.
Exploitation
Is it being used?
Exploit prediction (EPSS)0.4% · higher than 37% of CVEs
Exploited in the wildNo evidence yet
CISA KEVNot listed
Ransomware campaign useNot known
Affected products
Which versions
JS
json · ruby
>= 2.20.0, < 2.21.2 · source: vendor
References
NVD
https://nvd.nist.gov/vuln/detail/CVE-2026-71847
CVE.org
https://www.cve.org/CVERecord?id=CVE-2026-71847
github.com
https://github.com/ruby/json/security/advisories/GHSA-9hj4-r449-hfvc
More from json
9.1
CVE-2026-33210
Ruby JSON has a format string injection vulnerability
3.7
CVE-2026-54696
Ruby JSON: JSON generator heap buffer overflow when streaming to an IO
