{"id":"CVE-2026-110677","kind":"vulnerability","aliases":["CVE-2026-110677"],"related":[],"title":"Cpanel::JSON::XS: duplicate-key decoding leaks memory, exhausting process memory","description":"Cpanel::JSON::XS versions from 4.28 before 4.80 for Perl leak the array collecting duplicate key values under dupkeys_as_arrayref in decode_hv.\n\nWith dupkeys_as_arrayref, the values of a duplicate object key are collected into a new array. An extra reference is never released, so the array and every value in it outlive the decoded structure. The array also leaks when decoding fails after a duplicate key.\n\nRepeatedly decoding untrusted JSON with a duplicate key holding a large value exhausts process memory.","summary":"Cpanel::JSON::XS versions 4.28 before 4.80 for Perl leak the array that collects duplicate key values when dupkeys_as_arrayref is used. Repeatedly decoding untrusted JSON with a duplicate key holding a large value can exhaust process memory, causing a denial of service.","severity":"unknown","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["cpanel-json-xs","package","perl","self-hosted"],"not_affected_if":["default-config","trusted-input"],"how_to_check":"- Run `perl -MCpanel::JSON::XS -e 'print $Cpanel::JSON::XS::VERSION'` and see whether the version is between `4.28` and `4.79`\n- Search the codebase for `dupkeys_as_arrayref` to find code that uses the affected option","fix":"- Upgrade Cpanel::JSON::XS to `4.80` or later\n- Until upgraded, avoid `dupkeys_as_arrayref` when decoding untrusted input","status":"open","published_at":"2026-10-19T19:17:21+00:00","first_seen_at":"2026-10-23T21:57:18+00:00","triaged_at":"2026-10-25T05:10:49+00:00","updated_at":"2026-10-25T05:10:49+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-25T05:10:49Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade Cpanel::JSON::XS to `4.80` or later\n- Until upgraded, avoid `dupkeys_as_arrayref` when decoding untrusted input","reach":"network","title":"Cpanel::JSON::XS: duplicate-key decoding leaks memory, exhausting process memory","impact":"low","summary":"Cpanel::JSON::XS versions 4.28 before 4.80 for Perl leak the array that collects duplicate key values when dupkeys_as_arrayref is used. Repeatedly decoding untrusted JSON with a duplicate key holding a large value can exhaust process memory, causing a denial of service.","category":"package","nicknames":[],"who_cares":["perl","cpanel-json-xs","self-hosted"],"confidence":0.7,"needs_auth":"unknown","worst_case":"Repeated requests exhaust server memory, causing denial of service.","analyst_note":"","how_to_check":"- Run `perl -MCpanel::JSON::XS -e 'print $Cpanel::JSON::XS::VERSION'` and see whether the version is between `4.28` and `4.79`\n- Search the codebase for `dupkeys_as_arrayref` to find code that uses the affected option","needs_analyst":false,"not_affected_if":["default-config","trusted-input"],"who_is_affected":"Applications that decode untrusted JSON with Cpanel::JSON::XS between 4.28 and 4.79 are exposed, and the leak is only triggered when dupkeys_as_arrayref is enabled and duplicate keys appear in the input. Systems that decode only trusted JSON, or that do not use Cpanel::JSON::XS or the dupkeys_as_arrayref option, can skip it.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"unknown"},"cost_usd":0.000659,"input_tokens":3397,"output_tokens":639,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'-110677':15A,18A '-2026':14A,17A '4.28':32B,77C '4.80':34B,79C 'also':133C 'array':39B,84C,112C,121C,132C 'arrayref':48B,92C,99C 'caus':67B 'collect':41B,85C,108C 'cpanel':1A,20B,28B,72C 'cpanel-json-x':19B 'cve':13A,16A 'decod':7A,52B,94C,129C,136C,143C 'denial':69B 'dupkey':46B,90C,97C 'duplic':5A,42B,57B,86C,104C,140C,148C 'duplicate-key':4A 'everi':123C 'exhaust':10A,64B,154C 'extra':114C 'fail':137C 'hold':59B,150C 'host':27B 'hv':95C 'json':2A,21B,29B,54B,73C,145C 'key':6A,43B,58B,87C,106C,141C,149C 'larg':61B,152C 'leak':8A,37B,82C,134C 'memori':9A,12A,66B,156C 'never':117C 'new':111C 'object':105C 'outliv':127C 'packag':23B 'perl':24B,36B,81C 'process':11A,65B,155C 'refer':115C 'releas':118C 'repeat':51B,142C 'self':26B 'self-host':25B 'servic':71B 'structur':130C 'untrust':53B,144C 'use':50B 'valu':44B,62B,88C,101C,124C,153C 'version':31B,75C 'xs':3A,22B,30B,74C","nicknames":[],"mitigations":[],"who_affected":"Applications that decode untrusted JSON with Cpanel::JSON::XS between 4.28 and 4.79 are exposed, and the leak is only triggered when dupkeys_as_arrayref is enabled and duplicate keys appear in the input. Systems that decode only trusted JSON, or that do not use Cpanel::JSON::XS or the dupkeys_as_arrayref option, can skip it.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-19T19:17:21+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-110677","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-110677","severity":null,"published_at":"2026-10-19T19:17:21+00:00","modified_at":"2026-10-19T20:50:17+00:00","first_seen_at":"2026-10-23T21:57:18+00:00","fetched_at":"2026-10-23T22:28:57+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}