CVE-2026-129115: JSON::XS versions from 3.0 before 4.05 for Perl read freed stack memory when a FREEZE result's serialisation grows the Perl stack under allow_tags in encode_rv
Robert Rothenberg 14 Nov 2026 11:59 UTC
========================================================================
CVE-2026-129115 CPAN Security Group
========================================================================
CVE ID: CVE-2026-129115
Distribution: JSON-XS
Versions: from 3.0 before 4.05
MetaCPAN: https://metacpan.org/dist/JSON-XS
VCS Repo: https://cvs.schmorp.de/JSON-XS/
JSON::XS versions from 3.0 before 4.05 for Perl read freed stack memory
when a FREEZE result's serialisation grows the Perl stack under
allow_tags in encode_rv
Description
-----------
JSON::XS versions from 3.0 before 4.05 for Perl read freed stack memory
when a FREEZE result's serialisation grows the Perl stack under
allow_tags in encode_rv.
With allow_tags, an object's FREEZE method is called in list context
and each returned value is encoded through a saved Perl stack pointer.
When encoding a returned value calls back into Perl, through TO_JSON
under convert_blessed or another FREEZE, and that callback grows the
stack, the stack is reallocated while the saved pointer still refers to
the freed block.
Encoding such objects reads freed memory, and encode can return undef
without an error.
Problem types
-------------
- CWE-416 Use After Free
Solutions
---------
Upgrade to JSON-XS 4.05 or later.
References
----------
https://metacpan.org/release/MLEHMANN/JSON-XS-4.05/changes
Timeline
--------
- 2026-11-13: Version 4.05 released with fix.
Credits
-------
Albert Gierlach (rivit), reporter