CVE-2026-124541

JSON::XS versions before 4.05 for Perl leak the decoded part of a rejected long string in decode_str

Published Nov 14, 2026 CVSS n/a EPSS n/a KEV · Not listed
Description
JSON::XS versions before 4.05 for Perl leak the decoded part of a rejected long string in decode_str.

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.

Analysis

No analysis available yet

Remediation

Vendor Solution

Upgrade to JSON-XS 4.05 or later.

Tracking

Sign in to view the affected projects.

Advisories

No advisories available
History
Type Values Removed Values Added
Description JSON::XS versions before 4.05 for Perl leak the decoded part of a rejected long string in decode_str. 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.
Title JSON::XS versions before 4.05 for Perl leak the decoded part of a rejected long string in decode_str
Weaknesses CWE-401
References

Subscriptions

No data.

Weaknesses
  • CWE-401

    Missing Release of Memory after Effective Lifetime

Sources

Status
PUBLISHED
Assigner
CPANSec
Published
Updated
Nov 14, 2026, 11:53 AM
Reserved
Nov 8, 2026, 12:32 PM
Status
Received
Published
Nov 14, 2026, 12:17 PM
Modified
Nov 14, 2026, 12:17 PM