{"id":"CVE-2026-110685","kind":"vulnerability","aliases":["CVE-2026-110685"],"related":[],"title":"Cpanel::JSON::XS: failed THAW call leaks memory, enabling denial of service","description":"Cpanel::JSON::XS versions before 4.80 for Perl leak the decoded arguments of a tagged value when its THAW method dies in decode_tag.\n\nWith allow_tags, a tagged value's class name and argument array are decoded and passed to the class's THAW method. Both are released only after THAW returns, so a THAW that dies leaves the whole decoded argument structure allocated.\n\nEach rejected document leaks data of a size the sender chooses, so a process that catches the error and keeps running exhausts its memory.","summary":"Cpanel::JSON::XS before 4.80 for Perl leaks the decoded arguments of a tagged value when the class THAW method dies during decode with allow_tags. An attacker who sends many rejected documents can make a long-running process that catches the error and keeps running exhaust its memory.","severity":"medium","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-only"],"how_to_check":"- Check the installed version with `perl -MCpanel::JSON::XS -e 'print $Cpanel::JSON::XS::VERSION'`\n- Search dependencies for `allow_tags` usage in code that decodes untrusted input\n- unknown","fix":"- Upgrade Cpanel::JSON::XS to `4.80` or later\n- unknown","status":"open","published_at":"2026-10-19T19:17:22+00:00","first_seen_at":"2026-10-23T21:57:18+00:00","triaged_at":"2026-10-25T05:10:43+00:00","updated_at":"2026-10-25T05:10:43+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-10-25T05:10:43Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade Cpanel::JSON::XS to `4.80` or later\n- unknown","reach":"network","title":"Cpanel::JSON::XS: failed THAW call leaks memory, enabling denial of service","impact":"medium","summary":"Cpanel::JSON::XS before 4.80 for Perl leaks the decoded arguments of a tagged value when the class THAW method dies during decode with allow_tags. An attacker who sends many rejected documents can make a long-running process that catches the error and keeps running exhaust its memory.","category":"package","nicknames":[],"who_cares":["perl","cpanel-json-xs","self-hosted"],"confidence":0.6,"needs_auth":"unknown","worst_case":"Attacker exhausts server memory with repeated rejected documents","analyst_note":"Confirm the fixed version and whether any other Cpanel::JSON::XS release is affected; check the NVD entry at https://nvd.nist.gov/vuln/detail/CVE-2026-110685 for the advisory and CVSS score.","how_to_check":"- Check the installed version with `perl -MCpanel::JSON::XS -e 'print $Cpanel::JSON::XS::VERSION'`\n- Search dependencies for `allow_tags` usage in code that decodes untrusted input\n- unknown","needs_analyst":true,"not_affected_if":["default-config","trusted-input-only"],"who_is_affected":"Applications that decode untrusted JSON with Cpanel::JSON::XS and the allow_tags option enabled, where a class THAW method can die. Services that catch the decode error and keep running are the ones that grow in memory. Programs that never enable allow_tags or only decode trusted input can skip it.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"medium"},"cost_usd":0.000654,"input_tokens":3387,"output_tokens":630,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'-110685':15A,18A '-2026':14A,17A '4.80':32B,83C 'alloc':142C 'allow':52B,103C 'argument':38B,89C,112C,140C 'array':113C 'attack':55B 'call':6A 'catch':69B,158C 'choos':153C 'class':45B,109C,120C 'cpanel':1A,20B,28B,78C 'cpanel-json-x':19B 'cve':13A,16A 'data':147C 'decod':37B,50B,88C,100C,115C,139C 'denial':10A 'die':48B,98C,135C 'document':60B,145C 'enabl':9A 'error':71B,160C 'exhaust':75B,164C 'fail':4A 'host':27B 'json':2A,21B,29B,79C 'keep':73B,162C 'leak':7A,35B,86C,146C 'leav':136C 'long':65B 'long-run':64B 'make':62B 'mani':58B 'memori':8A,77B,166C 'method':47B,97C,123C 'name':110C 'packag':23B 'pass':117C 'perl':24B,34B,85C 'process':67B,156C 'reject':59B,144C 'releas':126C 'return':130C 'run':66B,74B,163C 'self':26B 'self-host':25B 'send':57B 'sender':152C 'servic':12A 'size':150C 'structur':141C 'tag':41B,53B,92C,101C,104C,106C 'thaw':5A,46B,96C,122C,129C,133C 'valu':42B,93C,107C 'version':81C 'whole':138C 'xs':3A,22B,30B,80C","nicknames":[],"mitigations":[],"who_affected":"Applications that decode untrusted JSON with Cpanel::JSON::XS and the allow_tags option enabled, where a class THAW method can die. Services that catch the decode error and keep running are the ones that grow in memory. Programs that never enable allow_tags or only decode trusted input can skip it.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-19T19:17:22+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-110685","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-110685","severity":null,"published_at":"2026-10-19T19:17:22+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"}