Like giving every hotel guest a master key that also opens the safe in the manager's office
CVE-2026-65643 is an arbitrary-file-creation flaw in cPanel & WHM's domain parking / addon-domain subsystem. Any authenticated cPanel account holder with the routine permission to add parked or addon domains — a permission enabled by default on virtually every shared-hosting plan — can write files to arbitrary paths on the underlying Linux server. Because cPanel's internal daemons run privileged operations on behalf of accounts, this file-write primitive escalates to code execution as root, giving the attacker unrestricted control over every site, database, email account, and SSL key hosted on that machine. All supported cPanel & WHM release tiers are affected: 110.x, 134.x, 136.x, and 138.x prior to the patched builds (11.110.0.141, 11.134.0.53, 11.136.0.37, 11.138.0.2, WP² 11.138.1.7).
No vendor CVSS score has been published — cPanel's advisory carried no numeric rating, and no CVE record existed in the CVE Program's store as of August 28, 2026. That silence radically understates the risk. The authentication prerequisite sounds like friction until you remember the deployment model: on shared hosting, *anyone* can buy a $5/month account and receive a cPanel login with domain-parking privileges. This is not 'authenticated access' in the enterprise sense — it is open enrollment. Combined with a blast radius that spans every tenant on the server (often hundreds of sites), the real-world severity is squarely CRITICAL.
4 steps from start to impact.
Obtain cPanel credentials
- Target server runs cPanel & WHM on an affected version
- Attacker can obtain or already holds any cPanel account on that server
- On dedicated servers with a single admin user, the attacker must already control that account — significantly harder
- Some hosting providers disable domain-parking for trial accounts
/usr/local/cpanel/logs/login_log; unusual account creation rates may signal bulk provisioning for exploitation.Trigger arbitrary file write via domain parking
/execute/DomainInfo/domains_data and related endpoints), the attacker initiates a park-domain or addon-domain operation with a crafted payload. The domain-parking subsystem fails to sanitize path components, allowing the attacker to write a file to an arbitrary location on the filesystem — e.g., /etc/cron.d/, /var/spool/cron/root, or a web-accessible directory under another user's docroot.- Valid cPanel session with park/addon domain permission
- Domain-parking feature not disabled by hosting provider
- If the hosting provider has proactively disabled domain parking (rare — this breaks a core feature), the vector is closed
- File write targets need to be guessable, but standard Linux paths are universal
/etc/cron.d/, /var/spool/cron/, and cPanel template directories would catch anomalous writes.Escalate to root via written payload
- Arbitrary file write from Step 2 succeeded
- No file-integrity monitoring blocks or alerts on the written path
- Kernel-level mandatory access controls (SELinux in enforcing mode, AppArmor) could prevent the cPanel daemon from writing outside its expected paths — but most shared-hosting providers run SELinux in permissive or disabled mode
- CloudLinux CageFS may contain some blast radius but does not prevent the initial file write by the cPanel daemon itself
cpsrvd or cpaneld spawning /bin/bash.Harvest all tenant data
/etc/shadow, dumps all MySQL databases (mysqldump --all-databases), copies SSL private keys from /var/cpanel/ssl/, exfiltrates email spools, and installs persistent backdoors (SSH keys, kernel modules). Every customer on the server is fully compromised. On reseller setups, the attacker may pivot to WHM-level API tokens that control additional servers.- Root shell from Step 3
- None — root is root
mysqldump processes; new entries in /root/.ssh/authorized_keys.The supporting signals.
| In-the-Wild Exploitation | Not confirmed. cPanel has not stated whether exploitation has been observed. Not listed in CISA KEV as of 2026-08-29. |
|---|---|
| Proof of Concept | No public PoC as of 2026-08-29. The vulnerability was discovered internally by cPanel support engineer Devon Courtney. However, the arbitrary-file-write primitive via domain parking is conceptually simple — reverse engineering the patch diff will likely yield a working exploit quickly. |
| EPSS Score | Unavailable. No CVE record has been published in the CVE Program's store, so FIRST has not generated an EPSS score. |
| KEV Status | Not listed in CISA KEV catalog as of 2026-08-29. |
| CVSS Vector (noisgate estimate) | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H — estimated 9.9. Network-accessible, low complexity, low privilege (but trivially obtainable), no user interaction, scope changed (cross-tenant), full CIA impact. Vendor published no score. |
| Affected Versions | All supported cPanel & WHM release tiers: 110.x, 134.x, 136.x, 138.x, and WP² 138.x prior to patched builds. |
| Fixed Versions | 11.110.0.141, 11.134.0.53, 11.136.0.37, 11.138.0.2, WP² 11.138.1.7 — apply via /scripts/upcp --force. |
| Exposure Surface | Shodan/Censys data from CVE-2026-41940 campaigns show ~650,000 cPanel/WHM instances directly internet-exposed, hosting an estimated 70 million+ websites globally. Domain parking is a default-enabled feature on virtually all of them. |
| Disclosure Date | 2026-08-27 — cPanel customer advisory. |
| Discoverer | Devon Courtney, cPanel support engineer (internal discovery). |
noisgate verdict.
The single most decisive factor is the multi-tenant blast radius combined with a near-zero authentication barrier: on shared hosting — cPanel's canonical deployment — any person who purchases a $5 account obtains the exact privilege level needed to root the server and compromise every co-tenant. This is functionally equivalent to an unauthenticated attack against all tenants on the box.
Why this verdict
- Near-zero auth friction on shared hosting: The 'authenticated' prerequisite is meaningless in cPanel's primary deployment model. Anyone can buy a hosting account for a few dollars and receive full domain-parking privileges. This is not enterprise authentication — it is open enrollment.
- Role multiplier: cPanel/WHM is canonically a multi-tenant hosting platform. Each server typically hosts 50–500 customer websites, databases, and email accounts. Root compromise = full tenant-to-tenant breach across the entire server. On reseller plans, WHM API tokens may enable lateral movement to additional servers. Blast radius: tenant → all tenants → potentially fleet via reseller chains.
- Massive exposure surface: ~650,000 cPanel instances are directly internet-exposed per Shodan telemetry, collectively hosting tens of millions of websites. Domain parking is enabled by default, making the vulnerable code path reachable on virtually every installation.
- All supported versions affected: There is no 'safe' version prior to the patch. Every cPanel server in production is vulnerable until updated.
- Simple primitive, fast weaponization expected: Arbitrary file write to root-controlled paths is a well-understood escalation pattern on Linux. The patch diff will be trivially reversible. Expect weaponized exploits within days to weeks.
Why not higher?
A score of 9.4 is near the ceiling. The only reason it isn't 10.0 is that the attack does require *some* form of authentication — even though it's trivially obtainable on shared hosting, on dedicated/VPS servers where the cPanel user *is* the server owner, the multi-tenant escalation angle doesn't apply. This narrows the worst-case population slightly.
Why not lower?
Downgrading below CRITICAL would require ignoring cPanel's canonical deployment context. The 'requires authentication' label is technically true but practically meaningless on shared hosting — the dominant use case. The blast radius (hundreds of co-tenants per server), the exposure surface (650K+ internet-facing instances), the all-versions scope, and the simplicity of the file-write-to-root primitive all reinforce CRITICAL. No combination of friction points justifies HIGH or below.
What to do — in priority order.
- Patch immediately via
/scripts/upcp --force— This is the only complete fix. Run on every cPanel server within the noisgate CRITICAL mitigation SLA of 3 days. The update is non-disruptive and takes 5–15 minutes per server. Automate across your fleet with Ansible/SSH loops. - Disable domain parking and addon domains — As an interim control before patching, disable the domain-parking and addon-domain features at the WHM level (
Tweak Settings → Domains → Allow addon domains = Off; Allow parked domains = Off). This removes the attack surface but breaks legitimate customer workflows — use only as a bridge to patching. Reclaim Hosting confirmed they applied this control within hours of disclosure. - Enable and enforce SELinux in enforcing mode — SELinux
enforcingwith the cPanel-targeted policy can prevent the cPanel daemon from writing to unexpected filesystem paths like/etc/cron.d/. This is a defense-in-depth layer — it may not fully block the exploit but raises the bar significantly. Most shared-hosting providers run SELinux disabled; turning it on requires testing. - Deploy file integrity monitoring on critical paths — Configure AIDE, OSSEC, or Wazuh to monitor
/etc/cron.d/,/var/spool/cron/,/usr/local/cpanel/hooks/, and all cPanel template directories. Alert on any file creation or modification outside expected change windows. This won't prevent exploitation but ensures rapid detection. - Audit and restrict cPanel account provisioning — Review automated account creation pipelines. If you operate a reseller or WHMCS-based provisioning system, temporarily gate new account creation behind manual approval to prevent attackers from rapidly spinning up accounts for exploitation.
- WAF / ModSecurity rules — The exploit uses cPanel's own authenticated API endpoints with valid session tokens. WAF rules cannot distinguish malicious domain-parking requests from legitimate ones without understanding the path-traversal payload, and no vendor signatures exist yet.
- CloudLinux CageFS — CageFS isolates user-space processes from each other but does not restrict cPanel's own privileged daemons, which are what perform the file write. The vulnerability is in cPanel's code running as root, not in user-space PHP.
- IP-restricting cPanel login — While reducing the attacker pool, this doesn't help when the attacker is a legitimate customer who purchased an account. The attack originates from a valid, authenticated session.
Crowdsourced verification payload.
Run this script on each cPanel/WHM server as root. It checks the installed cPanel build number against the patched versions. Example: sudo bash cpanel_cve_2026_65643_check.sh. No external dependencies required.
#!/usr/bin/env bash
# CVE-2026-65643 Vulnerability Check for cPanel & WHM
# Run as root on the target cPanel server.
# Exit codes: 0 = PATCHED, 1 = VULNERABLE, 2 = UNKNOWN
set -euo pipefail
if [ "$(id -u)" -ne 0 ]; then
echo "[!] Must run as root."
exit 2
fi
if ! command -v /usr/local/cpanel/cpanel &>/dev/null; then
echo "UNKNOWN — cPanel is not installed on this host."
exit 2
fi
# Get the full build version string, e.g., 11.138.0.2
BUILD=$(/usr/local/cpanel/cpanel -V 2>/dev/null | grep -oP '[\d]+\.[\d]+\.[\d]+\.[\d]+')
if [ -z "$BUILD" ]; then
echo "UNKNOWN — Could not determine cPanel version."
exit 2
fi
echo "[*] Detected cPanel build: $BUILD"
# Parse version components
IFS='.' read -r MAJOR MINOR PATCH REVISION <<< "$BUILD"
TIER="${MAJOR}.${MINOR}"
# Patched versions per tier:
# 11.110 >= 11.110.0.141
# 11.134 >= 11.134.0.53
# 11.136 >= 11.136.0.37
# 11.138 >= 11.138.0.2 (or WP2: 11.138.1.7)
check_patched() {
local need_patch="$1" need_rev="$2"
if [ "$PATCH" -gt "$need_patch" ]; then
return 0
elif [ "$PATCH" -eq "$need_patch" ] && [ "$REVISION" -ge "$need_rev" ]; then
return 0
fi
return 1
}
case "$TIER" in
11.110)
if check_patched 0 141; then
echo "PATCHED — $BUILD >= 11.110.0.141"
exit 0
else
echo "VULNERABLE — $BUILD is below 11.110.0.141. Update immediately: /scripts/upcp --force"
exit 1
fi
;;
11.134)
if check_patched 0 53; then
echo "PATCHED — $BUILD >= 11.134.0.53"
exit 0
else
echo "VULNERABLE — $BUILD is below 11.134.0.53. Update immediately: /scripts/upcp --force"
exit 1
fi
;;
11.136)
if check_patched 0 37; then
echo "PATCHED — $BUILD >= 11.136.0.37"
exit 0
else
echo "VULNERABLE — $BUILD is below 11.136.0.37. Update immediately: /scripts/upcp --force"
exit 1
fi
;;
11.138)
# Check both main (0.2) and WP2 (1.7) tiers
if [ "$PATCH" -ge 2 ]; then
echo "PATCHED — $BUILD >= 11.138.0.2"
exit 0
elif [ "$PATCH" -eq 1 ] && [ "$REVISION" -ge 7 ]; then
echo "PATCHED — $BUILD >= 11.138.1.7 (WP2)"
exit 0
elif [ "$PATCH" -eq 0 ] && [ "$REVISION" -ge 2 ]; then
echo "PATCHED — $BUILD >= 11.138.0.2"
exit 0
else
echo "VULNERABLE — $BUILD is below 11.138.0.2 / 11.138.1.7. Update immediately: /scripts/upcp --force"
exit 1
fi
;;
*)
echo "UNKNOWN — Tier $TIER is not in the known affected/patched list. Verify manually."
exit 2
;;
esacIf you remember one thing.
/scripts/upcp --force on every instance today, well within the noisgate mitigation SLA of 3 days for CRITICAL findings. There is no meaningful compensating control that preserves normal operations; disabling domain parking buys time but breaks customer workflows. The noisgate remediation SLA gives you 90 days to complete fleet-wide patching and post-compromise auditing, but given the trivial exploit prerequisites (any $5 hosting account), the simple file-write-to-root primitive, and the certainty that weaponized exploits will appear within days of the patch diff being analyzed, you should aim to have every server patched within 72 hours. After patching, audit for indicators of prior compromise: unexpected files in /etc/cron.d/, new SSH authorized_keys entries, unfamiliar cPanel accounts, and anomalous mysqldump process history. If you find evidence of exploitation, treat it as a full server compromise affecting all tenants.Sources
- The Hacker News — Critical cPanel Flaw Coverage
- CyberSecurity News — cPanel Vulnerability Analysis
- GBHackers — cPanel Root Control Vulnerability
- Reclaim Hosting — CVE-2026-65643 Customer Advisory
- RankiTeo — cPanel Vulnerability August 2026
- LowEndTalk — Community Discussion on cPanel Flaw
- Picus Security — cPanel Exposure Data (CVE-2026-41940 context)
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.