{"api_version":"1","generated_at":"2026-11-14T23:50:24+00:00","cve":"CVE-2026-129115","urls":{"html":"https://cve.report/CVE-2026-129115","api":"https://cve.report/api/cve/CVE-2026-129115.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-129115","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-129115"},"summary":{"title":"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.\n\nWith 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.\n\nEncoding such objects reads freed memory, and encode can return undef without an error.","state":"PUBLISHED","assigner":"CPANSec","published_at":"2026-11-14 12:17:44","updated_at":"2026-11-14 12:17:44"},"problem_types":["CWE-416","CWE-416 CWE-416 Use After Free"],"metrics":[],"references":[{"url":"https://metacpan.org/release/MLEHMANN/JSON-XS-4.05/changes","name":"https://metacpan.org/release/MLEHMANN/JSON-XS-4.05/changes","refsource":"9b29abf9-4ab0-4765-b253-1875cd9b441e","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-129115","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-129115","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[],"timeline":[{"source":"CNA","time":"2026-11-13T00:00:00.000Z","lang":"en","value":"Version 4.05 released with fix."}],"solutions":[{"source":"CNA","title":"","value":"Upgrade to JSON-XS 4.05 or later.","time":"","lang":"en"}],"workarounds":[],"exploits":[],"credits":[{"source":"CNA","value":"Albert Gierlach (rivit)","lang":"en"}],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":null,"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"collectionURL":"https://cpan.org/modules","defaultStatus":"unaffected","modules":["JSON::XS"],"packageName":"JSON-XS","packageURL":"pkg:cpan/JSON-XS","programFiles":["XS.xs"],"programRoutines":[{"name":"encode_rv"}],"repo":"https://cvs.schmorp.de/JSON-XS/","versions":[{"lessThan":"4.05","status":"affected","version":"3.0","versionType":"custom"}]}],"credits":[{"lang":"en","type":"reporter","value":"Albert Gierlach (rivit)"}],"descriptions":[{"lang":"en","value":"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.\n\nWith 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.\n\nEncoding such objects reads freed memory, and encode can return undef without an error."}],"problemTypes":[{"descriptions":[{"cweId":"CWE-416","description":"CWE-416 Use After Free","lang":"en","type":"CWE"}]}],"providerMetadata":{"dateUpdated":"2026-11-14T11:54:10.777Z","orgId":"9b29abf9-4ab0-4765-b253-1875cd9b441e","shortName":"CPANSec"},"references":[{"tags":["release-notes"],"url":"https://metacpan.org/release/MLEHMANN/JSON-XS-4.05/changes"}],"solutions":[{"lang":"en","value":"Upgrade to JSON-XS 4.05 or later."}],"source":{"discovery":"UNKNOWN"},"timeline":[{"lang":"en","time":"2026-11-13T00:00:00.000Z","value":"Version 4.05 released with fix."}],"title":"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","x_generator":{"engine":"cpansec-cna-tool 0.1"}}},"cveMetadata":{"assignerOrgId":"9b29abf9-4ab0-4765-b253-1875cd9b441e","assignerShortName":"CPANSec","cveId":"CVE-2026-129115","datePublished":"2026-11-14T11:54:10.777Z","dateReserved":"2026-11-13T15:54:37.501Z","dateUpdated":"2026-11-14T11:54:10.777Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-11-14 12:17:44","lastModifiedDate":"2026-11-14 12:17:44","problem_types":["CWE-416","CWE-416 CWE-416 Use After Free"],"metrics":[],"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"129115","Ordinal":"1","Title":"JSON::XS versions from 3.0 before 4.05 for Perl read freed stack","CVE":"CVE-2026-129115","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"129115","Ordinal":"1","NoteData":"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.\n\nWith 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.\n\nEncoding such objects reads freed memory, and encode can return undef without an error.","Type":"Description","Title":"JSON::XS versions from 3.0 before 4.05 for Perl read freed stack"}]}}}