{"id":"CVE-2026-110674","kind":"vulnerability","aliases":["CVE-2026-110674"],"related":[],"title":"Cpanel::JSON::XS: duplicate bare keys can crash Perl or read chosen memory","description":"Cpanel::JSON::XS versions from 4.33 before 4.80 for Perl miss duplicate non-ASCII bare keys, allowing type confusion under dupkeys_as_arrayref in decode_hv.\n\nWith allow_barekey, which relaxed enables, a bare key containing a non-ASCII byte is stored as UTF-8 but looked up as raw bytes, so a repeated key escapes the duplicate-key check and replaces the earlier value.\n\nFrom 4.41, under dupkeys_as_arrayref, a bare repeat replaces the array that collects a key's values with a plain value, and the next quoted repeat pushes onto that value as if it were an array. A JSON integer there is dereferenced as a pointer.\n\nUntrusted JSON decoded with relaxed and dupkeys_as_arrayref can crash the process or dereference an address chosen by a JSON number.","summary":"Cpanel::JSON::XS versions 4.33 to before 4.80 mishandle duplicate non-ASCII bare keys when decoding with relaxed and dupkeys_as_arrayref, so a repeated key can replace an array with a plain value. The next repeat then treats a JSON integer as a pointer, letting untrusted JSON crash the process or dereference an address chosen by a number.","severity":"unknown","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["cpan","cpanel-json-xs","json-parsing","package","perl"],"not_affected_if":["default-config","trusted-input-only"],"how_to_check":"- Run `perl -MCpanel::JSON::XS -e 'print $Cpanel::JSON::XS::VERSION'` to read the installed version.\n- Search the codebase for `dupkeys_as_arrayref` and `allow_barekey` or `relaxed` in JSON decoder setup.\n- Check whether untrusted input reaches the decoder with those options enabled.","fix":"- Upgrade Cpanel::JSON::XS to `4.80` or later.\n- Until upgraded, stop decoding untrusted JSON with `relaxed` together with `dupkeys_as_arrayref`.","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:54+00:00","updated_at":"2026-10-25T05:10:54+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-10-25T05:10:54Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade Cpanel::JSON::XS to `4.80` or later.\n- Until upgraded, stop decoding untrusted JSON with `relaxed` together with `dupkeys_as_arrayref`.","reach":"internet","title":"Cpanel::JSON::XS: duplicate bare keys can crash Perl or read chosen memory","impact":"high","summary":"Cpanel::JSON::XS versions 4.33 to before 4.80 mishandle duplicate non-ASCII bare keys when decoding with relaxed and dupkeys_as_arrayref, so a repeated key can replace an array with a plain value. The next repeat then treats a JSON integer as a pointer, letting untrusted JSON crash the process or dereference an address chosen by a number.","category":"package","nicknames":[],"who_cares":["perl","cpan","cpanel-json-xs","json-parsing"],"confidence":0.6,"needs_auth":"unknown","worst_case":"Process crashes or attacker-chosen memory address is dereferenced through JSON numbers","analyst_note":"Confirm affected version range (4.33 vs 4.41 start) and whether exploitation yields code execution, using the NVD entry and the upstream Cpanel::JSON::XS changelog.","how_to_check":"- Run `perl -MCpanel::JSON::XS -e 'print $Cpanel::JSON::XS::VERSION'` to read the installed version.\n- Search the codebase for `dupkeys_as_arrayref` and `allow_barekey` or `relaxed` in JSON decoder setup.\n- Check whether untrusted input reaches the decoder with those options enabled.","needs_analyst":true,"not_affected_if":["default-config","trusted-input-only"],"who_is_affected":"Applications that decode untrusted JSON with Cpanel::JSON::XS at versions 4.41 and later in the 4.x line (affected from 4.33) while both relaxed (allow_barekey) and dupkeys_as_arrayref are enabled. Services that only decode trusted JSON or use default decoder options are less exposed. unknown whether the sources list every affected range beyond 4.33 to before 4.80.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"unknown"},"cost_usd":0.000745,"input_tokens":3519,"output_tokens":787,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'-110674':16A,19A '-2026':15A,18A '-8':136C '4.33':34B,95C '4.41':159C '4.80':37B,97C 'address':85B,220C 'allow':107C,118C 'array':60B,169C,194C 'arrayref':52B,113C,163C,212C 'ascii':42B,104C,130C 'bare':5A,43B,105C,124C,165C 'barekey':119C 'byte':131C,142C 'check':152C 'chosen':12A,86B,221C 'collect':171C 'confus':109C 'contain':126C 'cpan':20B 'cpanel':1A,22B,30B,90C 'cpanel-json-x':21B 'crash':8A,79B,214C 'cve':14A,17A 'decod':46B,115C,206C 'derefer':83B,218C 'dereferenc':200C 'dupkey':50B,111C,161C,210C 'duplic':4A,39B,101C,150C 'duplicate-key':149C 'earlier':156C 'enabl':122C 'escap':147C 'hv':116C 'integ':72B,197C 'json':2A,23B,26B,31B,71B,78B,91C,196C,205C,224C 'json-pars':25B 'key':6A,44B,56B,106C,125C,146C,151C,173C 'let':76B 'look':138C 'memori':13A 'mishandl':38B 'miss':100C 'next':66B,182C 'non':41B,103C,129C 'non-ascii':40B,102C,128C 'number':89B,225C 'onto':186C 'packag':28B 'pars':27B 'perl':9A,29B,99C 'plain':63B,178C 'pointer':75B,203C 'process':81B,216C 'push':185C 'quot':183C 'raw':141C 'read':11A 'relax':48B,121C,208C 'repeat':55B,67B,145C,166C,184C 'replac':58B,154C,167C 'store':133C 'treat':69B 'type':108C 'untrust':77B,204C 'utf':135C 'valu':64B,157C,175C,179C,188C 'version':33B,93C 'xs':3A,24B,32B,92C","nicknames":[],"mitigations":[],"who_affected":"Applications that decode untrusted JSON with Cpanel::JSON::XS at versions 4.41 and later in the 4.x line (affected from 4.33) while both relaxed (allow_barekey) and dupkeys_as_arrayref are enabled. Services that only decode trusted JSON or use default decoder options are less exposed. unknown whether the sources list every affected range beyond 4.33 to before 4.80.","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-110674","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-110674","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"}