CVE-2026-124541: JSON::XS versions before 4.05 for Perl leak the decoded part of a rejected long string in decode_str
JSON::XS versions before 4.05 for Perl leak the decoded part of a rejected long string in decodestr.
A string is decoded through a fixed-size buffer (16 KiB in 4.04), and each time the buffer fills its contents move into a new scalar. Nothing frees that scalar when the string is then rejected for a control character, an invalid escape, malformed UTF-8 or the end of the input.
A process that keeps running after a failed decode retains the decoded part of each rejected string, with its size chosen by the sender. Repeated requests exhaust process memory.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
JSON::XSto a version that resolves this vulnerability.Fixed in 4.05