Skip to main content

Cpanel::JSON::XS CVE-2026-9516

| EUVDEUVD-2026-34061 HIGH
Release of Invalid Pointer or Reference (CWE-763)
2026-06-03 CPANSec GHSA-32gp-2g42-v9vc
7.5
CVSS 3.1 · Vendor: CPANSec
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Recon
    Identify Perl service accepting JSON with filter callbacks
  2. Delivery
    Send POST with UTF-8 BOM prefixed JSON body
  3. Exploit
    Trigger filter_json_object/THAW callback to croak
  4. Install
    decode_json skips SvPV_set restore
  5. C2
    Corrupted SV freed with offset pointer
  6. Execute
    Perl interpreter aborts
  7. Impact
    Worker process crash and DoS

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Pointer release safety
Exploitation Conditions

Exploitation requires the target application to (1) be decoding attacker-controlled JSON via Cpanel::JSON::XS prior to 4.41, (2) have the input begin with a 3-byte UTF-8 BOM (0xEF 0xBB 0xBF), and (3) have one of three specific callbacks registered on the JSON object that can throw during decoding: filter_json_object, filter_json_single_key_object, or allow_tags(1) with a THAW handler that croaks. The vulnerability cannot be triggered against a default Cpanel::JSON::XS configuration with no filter callbacks; it also cannot be triggered if the input lacks a leading UTF-8 BOM, because the buggy SvPV_set path is only taken when the BOM-skip branch executes. No authentication is required at the JSON layer (PR:N) and no user interaction is needed, but reachability depends entirely on the calling Perl application's choice to register a throwing filter callback - a non-default deployment pattern.

Impact

Signals diverge sharply. CVSS 7.5 (AV:N/AC:L/PR:N/UI:N/C:N/I:N/A:H) reflects pure availability impact reachable over network with no privileges or interaction, which is appropriate for a library that frequently parses untrusted JSON on HTTP boundaries. However the network vector only applies when the calling application both exposes JSON decoding to attacker-controlled input AND has explicitly registered a filter_json_object, filter_json_single_key_object, or allow_tags THAW callback that can throw - a non-default configuration most Perl JSON consumers do not use. EPSS at 0.02% (4th percentile) and the absence from CISA KEV reinforce that real-world exploitation is unlikely to be widespread. CISA SSVC marks Exploitation:none, Automatable:yes, Technical Impact:partial, which is consistent: trivially scriptable where reachable, but DoS-only and conditional on filter callbacks. Treat this as a targeted-risk patch rather than an emergency: prioritize for Perl web services and CPAN-consuming applications that register JSON filter callbacks, deprioritize for general Perl deployments.

Exploit ScenarioDerived

An attacker submits a single JSON document beginning with the three-byte UTF-8 BOM (0xEF 0xBB 0xBF) to a network-exposed Perl service whose JSON parser is configured with a filter_json_object, filter_json_single_key_object, or allow_tags+THAW callback that can throw on malformed or unexpected content. The decoder advances the input SV's buffer pointer past the BOM, the filter callback croaks while processing the document, and the SV is left with an offset pointer; when Perl later frees the scalar the allocator receives an invalid base and aborts the worker, crashing the service. No public exploit is identified at time of analysis, but the proof-of-concept test cases shipped in the patch (t/31_bom.t) demonstrate the three reachable trigger paths in a few lines of Perl.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.0% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Jun 03, 2026

Denial of service in the Cpanel::JSON::XS Perl module before version 4.41 allows remote attackers to crash any caller that decodes a UTF-8 BOM prefixed JSON document with a throwing filter callback. The flaw arises from a missed pointer restoration when decode_json aborts via a Perl exception, leaving the input scalar with a corrupted SvPVX pointer that fatally aborts the interpreter on later free. No public exploit identified at time of analysis, and EPSS is very low (0.02%), but CISA SSVC marks the issue as automatable with partial technical impact.

RemediationAI

Upgrade Cpanel::JSON::XS to version 4.41 or later, which removes the in-place SvPV_set BOM-skip and replaces it with a local offset (upstream commit dfe1b41a36caba51dc12a2917fe50285d1ffaa7b, https://github.com/rurban/Cpanel-JSON-XS/commit/dfe1b41a36caba51dc12a2917fe50285d1ffaa7b.patch); the 4.41 release is on CPAN and changes are documented at https://metacpan.org/release/RURBAN/Cpanel-JSON-XS-4.41/changes, with the oss-security announcement at https://seclists.org/oss-sec/2026/q2/792. Debian users should track the security update for bug#1138273 across the six tracked releases. If upgrading immediately is not possible, the targeted compensating controls are: strip a leading 3-byte UTF-8 BOM from inputs before calling decode (e.g. s/^\xEF\xBB\xBF// on the bytes) which eliminates the vulnerable code path entirely with no functional impact for JSON which is BOM-free by spec; or remove filter_json_object, filter_json_single_key_object, and allow_tags(1)+THAW handlers, or wrap their bodies so they cannot croak (return undef on error instead of die) - the trade-off is that filter callbacks lose their ability to signal hard failure to the parser, so callers must validate filtered output afterward.

Affected VersionsENISA

Cpanel::JSON::XS 0 <4.41

Affected Packages

euvd cpanel_json_xs fix: 4.41

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Cpanel::JSON::XS is a widely deployed high-performance XS (C-level) JSON parser for Perl, derived from JSON::XS and maintained by Reini Urban (rurban). To handle a leading 3-byte UTF-8 byte order mark, decode_json() mutates the caller's input SV in place using SvPV_set() to advance the string buffer pointer past the BOM and SvCUR_set() to shorten the recorded length, restoring both on the normal return path. CWE-763 (Release of Invalid Pointer or Reference) captures the root cause: when an embedded filter callback (filter_json_object, filter_json_single_key_object, or an allow_tags THAW handler) croaks, control unwinds via Perl exception handling and the restoration block is skipped, leaving the SV pointing 3 bytes into its own allocated buffer with a shortened length. When the perl allocator later frees that SV it receives a pointer that does not match the original malloc base, aborting the interpreter. The upstream fix in commit dfe1b41 removes the in-place SvPV_set mutation entirely and instead carries a local offset variable through the decoder, so the caller's SV is never modified and nothing needs to be restored on the exception path.

Know when Cpanel gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (CPANSec) PRIMARY 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
SUSE HIGH

Primary rating from Vendor (CPANSec).

CVSS VectorVendor: CPANSec

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

2
CVSS changed
Jun 03, 2026 - 18:22 NVD
7.5 (None) 7.5 (HIGH)
CVE Published
Jun 03, 2026 - 00:15 nvd
UNKNOWN (no severity yet)

DescriptionCVE.org

Cpanel::JSON::XS versions before 4.41 for Perl allow denial of service via UTF-8 BOM prefixed input when a decode filter callback throws.

To skip a leading 3-byte UTF-8 BOM, decode_json() advances the input scalar's string pointer past the mark with SvPV_set() and restores it only on the normal return path. When decoding aborts through a Perl exception, for example a filter_json_object callback that croaks, the restore is skipped and the scalar is left with its string pointer offset into its own buffer and a shortened length.

When that scalar is later freed, the allocator receives an invalid pointer and the interpreter aborts. A single BOM prefixed document decoded with a throwing filter callback crashes any caller.

Executive ViewAI

Why It Matters

Cpanel::JSON::XS Perl module contains a denial-of-service vulnerability affecting applications that process JSON data with UTF-8 BOM prefixes, potentially impacting service availability across dependent systems. Although no public exploit has been identified and real-world exploitation risk is minimal, the HIGH CVSS rating and wide use of this library in production environments warrant prompt patching. Organizations should prioritize identifying affected systems and upgrading to version 4.41 or later within 30 days.

Business Impact: Medium
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.0%
Top 96% exploitable
Social Media
2
Sightings
Data Quality
8 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment Vendor CIRCL GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.0%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
Medium
Technical Impact
Partial

Priority Score

38
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

Related Vulnerabilities in Cpanel::JSON::XS Type Confusion and DoS Flaws

View all 2

More in Cpanel

View all
CVE-2026-67401 CRITICAL POC
9.9 Sep 09

Root-level remote code execution in WebPros cPanel is achievable by any mail-enabled account through a SQL injection fla

CVE-2023-29489 MEDIUM POC
6.1 Apr 27

An issue was discovered in cPanel before 11.109.9999.116. Rated medium severity (CVSS 6.1), this vulnerability is remote

CVE-2018-16236 MEDIUM POC
6.1 Aug 30

cPanel through 74 allows XSS via a crafted filename in the logs subdirectory of a user account, because the filename is

CVE-2026-93698 CRITICAL
9.9 Oct 02

OS command injection in cPanel and WP Squared allows an authenticated, low-privileged hosting account holder to execute

CVE-2020-26108 CRITICAL
9.8 Sep 25

cPanel before 88.0.13 mishandles file-extension dispatching, leading to code execution (SEC-488). Rated critical severit

CVE-2020-26105 CRITICAL
9.8 Sep 25

In cPanel before 88.0.3, insecure chkservd test credentials are used on a templated VM (SEC-554). Rated critical severit

CVE-2020-26101 CRITICAL
9.8 Sep 25

In cPanel before 88.0.3, insecure RNDC credentials are used for BIND on a templated VM (SEC-549). Rated critical severit

CVE-2020-26100 CRITICAL
9.8 Sep 25

chsh in cPanel before 88.0.3 allows a Jailshell escape (SEC-497). Rated critical severity (CVSS 9.8), this vulnerability

CVE-2020-26098 CRITICAL
9.8 Sep 25

cPanel before 88.0.3 mishandles the Exim filter path, leading to remote code execution (SEC-485). Rated critical severit

CVE-2020-10121 CRITICAL
9.8 Mar 17

cPanel before 84.0.20 allows a demo account to achieve code execution via PassengerApps APIs (SEC-546). Rated critical s

CVE-2020-10119 CRITICAL
9.8 Mar 17

cPanel before 84.0.20 allows a demo account to achieve remote code execution via a cpsrvd rsync shell (SEC-544). Rated c

CVE-2026-87900 CRITICAL
9.4 Sep 23

Argument injection in WP Toolkit for cPanel 6.11.2-10794 and earlier allows a remote authenticated (low-privileged, PR:L

Vendor StatusVendor

Debian

Bug #1138273
libcpanel-json-xs-perl
Release Status Fixed Version Urgency
bullseye vulnerable 4.25-1 -
bullseye (security) vulnerable 4.25-1+deb11u1 -
bookworm, bookworm (security) vulnerable 4.35-1+deb12u1 -
trixie (security), trixie vulnerable 4.39-2~deb13u1 -
forky, sid fixed 4.41-1 -
(unstable) fixed 4.41-1 -

SUSE

Severity: High
Product Status
openSUSE Tumbleweed Fixed
SUSE Linux Enterprise Module for Package Hub 15 SP7 Fixed

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy