---
id: "CVE-2026-110680"
kind: "vulnerability"
aliases: ["CVE-2026-110680"]
title: "Cpanel::JSON::XS: out-of-bounds write during canonical hash encoding can crash Perl"
severity: "unknown"
cvss: null
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["cpanel-json-xs", "package", "perl", "threads"]
not_affected_if: ["no-canonical-encoding", "no-tied-or-shared-hashes", "version-4.80-or-later"]
published_at: "2026-10-19T19:17:21+00:00"
first_seen_at: "2026-10-23T21:57:18+00:00"
updated_at: "2026-10-25T05:10:47+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-110680", "first_seen_at": "2026-10-23T21:57:18+00:00"}]
---

# Cpanel::JSON::XS: out-of-bounds write during canonical hash encoding can crash Perl

Cpanel::JSON::XS versions 4.20 through 4.79 for Perl write past the end of a buffer when a tied or shared hash changes size during canonical encoding. The memory corruption can crash the process, and the sources do not say whether it allows code execution.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Run `perl -MCpanel::JSON::XS -e 'print $Cpanel::JSON::XS::VERSION'` and check whether the result is between `4.20` and `4.79`
- Search dependency files for `Cpanel::JSON::XS` to find where it is used with canonical encoding on tied or threads::shared hashes

## Fix

- Upgrade Cpanel::JSON::XS to `4.80` or later
- Until upgraded, avoid canonical encoding of tied or threads::shared hashes (unknown whether this is a complete workaround)

## Timeline

- 2026-10-23T21:57:18+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-110680

## From the sources

Cpanel::JSON::XS versions from 4.20 before 4.80 for Perl write out of bounds when a tied or shared hash grows during canonical encoding in encode_hv.

With canonical, the keys of a tied or threads::shared hash are counted before a second pass collects them for sorting. The encoder uses a fixed 64-entry stack array or, for larger counts, a heap array sized from the first pass. If the second pass exceeds that capacity, entries are written out of bounds before the counts are compared.

This corrupts stack or heap memory and can crash the process.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
