Live › vulnerability › CVE-2026-110674
Go to dashboardCpanel::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.
Summary written from the sources below. Check the originals before acting.
First seen by InfraStack 2026-10-23 21:57 UTC. All times on this page are UTC.
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.
No product ranges from the sources yet.
perl -MCpanel::JSON::XS -e 'print $Cpanel::JSON::XS::VERSION' to read the installed version.dupkeys_as_arrayref and allow_barekey or relaxed in JSON decoder setup.4.80 or later.relaxed together with dupkeys_as_arrayref.Each row is the first time that source carried this signal. The analyst’s rows are its own findings.
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.
With 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.
From 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.
Untrusted JSON decoded with relaxed and dupkeys_as_arrayref can crash the process or dereference an address chosen by a JSON number.
This page as .md · .json · in your agent: get_signal("CVE-2026-110674")
NVD data is provided by NIST and is public domain. Posts quoted belong to their authors.