Back

HIGH

Oj: Use-After-Free in Oj::Parser SAJ Callback via Input Mutation

Published Jun 30, 2026

Description

Oj (Optimized JSON) is a JSON parser and Object marshaller packaged as a Ruby gem. In versions prior to 3.17.2,Oj::Parser#parse is vulnerable to a heap use-after-free when a SAJ/SAJ2 callback mutates the input JSON string during parsing. The C engine holds a raw const byte * pointer into the Ruby string's internal buffer. If a callback (e.g. hash_start) resizes the string — for example by calling String#replace with a longer value — Ruby reallocates the string buffer and frees the old one. The C parser's pointer is left dangling; the next character read at parser.c:607 is a use-after-free. This issue has been fixed in version 3.17.2.

Affected products

Remediation

Red Hat statement

Red Hat's only product shipping the Oj Ruby gem (Compliance Backend) already includes version 3.17.3, which contains the fix for this vulnerability. No Red Hat products are affected.

References (7)

Change history (0)

No recorded changes yet.

Sources
CVE.org / MITRE
Status PUBLISHED
Assigner GitHub_M
Published Jun 30, 2026
Updated Jul 1, 2026
Reserved Jun 16, 2026
CISA Vulnrichment
Updated Jul 1, 2026
NVD
Status Deferred
Modified Jul 1, 2026
Red Hat
Severity Moderate
Public date Jun 30, 2026
ENISA EUVD
Assigner GitHub_M
Published Jun 30, 2026
Updated Jul 1, 2026
Exploited since n/a
EUVD-2026-40854 GHSA-Q2GM-54R6-8FWM