← Back to Feed CACHED · 2026-10-08 07:04:22 · CACHE_KEY CVE-2026-67401
CVE-2026-67401 · CWE-89 · Disclosed 2026-09-09

cPanel & WHM EmailTrack SQL Injection to Root RCE

ASSESSED — NOISGATE
Vendor
—
—
—
Reassessed
—
—
—
Verdict: —
Do you agree?
01 · The Real Story

Buying a $5 hosting account hands you the keys to every website on the server

CVE-2026-67401 is a SQL injection in cPanel & WHM's EmailTrack subsystem — the backend behind the "Track Delivery" feature that lets any hosting customer review their mail delivery logs. An authenticated cPanel account holder with default mail privileges can inject crafted SQL into an unsanitized account/domain parameter. The injected payload leverages SELECT … INTO OUTFILE to drop a PHP webshell into the account's public_html/ directory, then chains to root code execution through an undisclosed privilege-escalation surface (likely SUID cPanel binaries or root-owned task queues). Every supported cPanel & WHM release line is affected: 11.110.x, 11.134.x, 11.136.x, 11.138.x, and WP Squared — patched in builds 11.110.0.143, 11.134.0.55, 11.136.0.39, 11.138.0.4, and 11.138.1.9 respectively.

The vendor CVSS of 9.9 is honest and, if anything, understates the operational risk. The PR:L (Privileges Required: Low) metric technically captures the authentication requirement, but in the shared-hosting threat model, *every co-tenant already has that credential by default*. A motivated attacker can purchase a hosting account for under $5, immediately satisfying the only prerequisite. The S:C (Scope: Changed) designation is correct — the impact escapes the tenant's security boundary to reach root, compromising every account on the box. With a working public PoC now available (imbas007/CVE-2026-67401) and ~1.5 million internet-facing cPanel instances visible on Shodan, the vendor's CRITICAL rating is justified. We nudge the score to 9.5 to reflect the authentication gate, but this remains firmly in emergency-patch territory.

"Working PoC chains a $5 hosting login to full root on multi-tenant cPanel servers"
02 · The Attack Path

5 steps from start to impact.

STEP 01

Obtain cPanel credentials

The attacker acquires a valid cPanel login with mail privileges. On shared hosting, this is trivially achieved by purchasing a hosting plan ($3–10/month), using credential-stuffing against webmail/cPanel login portals, or phishing a hosting customer. The account parameter in EmailTrack is accessible to any mail-enabled cPanel user.
Conditions required:
  • Valid cPanel account with mail-enabled privileges
  • Network access to cPanel ports (2082/2083) or webmail (2095/2096)
Where this breaks in practice:
  • On dedicated/enterprise servers, cPanel accounts are tightly controlled and may require VPN to reach
  • Credential-stuffing is mitigated by cPHulk brute-force protection if enabled
Detection/coverage: Failed login attempts logged in /var/log/cPanel-login.log and cPHulk database; Shodan/Censys exposure scans for ports 2082-2096
STEP 02

Inject SQL via EmailTrack parameter

The authenticated attacker sends a crafted request to the EmailTrack endpoint, injecting SQL into the unsanitized account or domain parameter. The injection terminates the legitimate query string and appends attacker-controlled SQL. Boolean-based, time-based, and UNION-based injection vectors are all viable per the public PoC (poc_sqli.py in imbas007/CVE-2026-67401).
Conditions required:
  • Authenticated cPanel session
  • EmailTrack feature accessible (default on all mail-enabled accounts)
Where this breaks in practice:
  • ModSecurity with OWASP CRS may catch common SQLi patterns in request parameters
  • WAF rules inspecting cPanel API calls could block payloads
Detection/coverage: ModSecurity audit logs; MySQL slow query log or general query log if enabled; anomalous EmailTrack API call frequency in /usr/local/cpanel/logs/access_log
STEP 03

Write webshell via INTO OUTFILE

The injected SQL uses SELECT … INTO OUTFILE to write a PHP webshell (e.g., <?php system($_GET['c']); ?>) to the attacker's own public_html/ directory. The MySQL/MariaDB process runs with filesystem privileges sufficient to write to tenant home directories. The webshell becomes immediately accessible via HTTP on port 80/443. The PoC tool poc_full_chain.py automates this step.
Conditions required:
  • MySQL file_priv granted to the cPanel database user (default in cPanel's bundled MySQL)
  • Target directory writable by MySQL process
  • Apache/LiteSpeed serving PHP from public_html/
Where this breaks in practice:
  • If secure_file_priv is set to a restricted directory, INTO OUTFILE is blocked — but cPanel's default MySQL does not restrict this
  • Filesystem permissions on public_html/ may be tightened on hardened configs
  • open_basedir or disable_functions in PHP could limit shell utility
Detection/coverage: File integrity monitoring (AIDE/OSSEC/Wazuli) on public_html/ directories; new .php files in tenant webroot; MySQL general query log showing INTO OUTFILE statements
STEP 04

Execute commands as web server user

The attacker accesses the dropped webshell via HTTP, executing OS commands as the Apache/LiteSpeed worker user (typically nobody or the cPanel account's user via CloudLinux CageFS). This provides initial code execution on the server, though not yet as root.
Conditions required:
  • Webshell successfully written and PHP execution enabled
  • HTTP/HTTPS access to the webshell path
Where this breaks in practice:
  • CloudLinux CageFS isolates tenant processes and limits visibility of other accounts
  • Imunify360 or similar host-based malware scanners may detect the webshell
  • PHP disable_functions could block system(), exec(), passthru()
Detection/coverage: Web application firewall alerts; Imunify360/ClamAV malware scan; HTTP access logs showing requests to suspicious paths; process monitoring for shell spawns from PHP workers
STEP 05

Escalate to root

From the web-server execution context, the attacker leverages an undisclosed privilege-escalation vector to reach root. cPanel's architecture includes numerous SUID binaries, root-owned cron jobs, and internal task queues that run as root. The vendor confirmed that 'successful exploitation leads to code execution as root.' The exact escalation surface has not been publicly disclosed by cPanel to limit weaponization, but the PoC repo's poc_full_chain.py demonstrates the complete chain through to root.
Conditions required:
  • Code execution as web server / cPanel user from step 4
  • Presence of cPanel's privilege-escalation surface (SUID binaries, cron, or task queue)
Where this breaks in practice:
  • Kernel-level protections (SELinux in enforcing mode) may block the escalation
  • CloudLinux hardened kernel limits certain SUID abuse paths
  • Some managed hosting providers strip unnecessary SUID bits
Detection/coverage: auditd rules on SUID binary execution; unexpected processes running as root; new entries in root's crontab; modifications to /etc/ or /root/; Syslog anomalies from cPanel internal services
03 · Compensating Control

1
CRITICAL 9.5→IGNORE 0.0
SEVERITY REDUCED
Apply cPanel auto-update immediately via upcp — Run /usr/local/cpanel/scripts/upcp --force on every cPanel server to pull the patched build. cPanel's auto-update mechanism is the fastest remediation path. Per the noisgate mitigation SLA for CRITICAL, deploy within 3 days. If auto-updates were enabled (the default), your servers may already be patched — verify with the version check script below.
2
CRITICAL 9.5→HIGH 7.0
SEVERITY REDUCED
Restrict cPanel/WHM port access via firewall ACLs — Block external access to ports 2082, 2083, 2086, 2087, 2095, 2096, 2077, 2078 from all IPs except known admin ranges and VPN egress. This forces attackers to compromise your network first before reaching cPanel, converting AV:N to AV:A. Deploy within 3 days per the noisgate mitigation SLA. Note: this breaks customer self-service access to cPanel and webmail unless you proxy through a VPN or bastion.
3
CRITICAL 9.5→IGNORE 0.0
SEVERITY REDUCED
Disable EmailTrack feature via WHM Feature Manager — In WHM → Feature Manager → Edit Feature List, uncheck 'Track Delivery' for all feature lists. This removes the vulnerable endpoint entirely. If your hosting operation does not rely on customer-facing mail delivery tracking (most don't), this is a zero-impact mitigation. Deploy within 3 days.
4
CRITICAL 9.5→MEDIUM 6.5
SEVERITY REDUCED
Set MySQL secure_file_priv to restrict INTO OUTFILE — Add secure_file_priv=/var/lib/mysql-files to /etc/my.cnf under [mysqld] and restart MySQL. This prevents INTO OUTFILE from writing to arbitrary paths, breaking the file-write step of the exploit chain. The SQLi still exists but cannot achieve RCE. Deploy within 3 days. Test that cPanel's backup and import functions still work after applying.
5
CRITICAL 9.5→HIGH 7.5
SEVERITY REDUCED
Deploy CloudLinux CageFS and Imunify360 — CageFS virtualizes the filesystem for each tenant, preventing visibility of other accounts even after webshell deployment. Imunify360 provides real-time malware scanning that will detect dropped PHP webshells. Together they limit blast radius from 'all tenants' to 'single tenant' and add detection. This is a longer-term hardening measure. Deploy within 30 days if not already in place.
What doesn't work
  • ModSecurity with OWASP CRS alone — While it may catch generic SQLi patterns, cPanel's EmailTrack endpoint uses internal API routing that may bypass standard ModSecurity rule paths. Do not rely on WAF rules as a substitute for patching.
  • PHP disable_functions / open_basedir — These restrict what the webshell can do after being dropped, but do not prevent the SQLi or file-write steps. The root escalation may use cPanel binaries outside the PHP context entirely.
  • cPHulk brute-force protection — This prevents credential stuffing against the login page but does nothing if the attacker already has valid credentials (purchased account, phished creds, or compromised reseller).
  • IP-based WHM access restrictions only — WHM ACLs protect the admin interface (port 2086/2087) but the vulnerable EmailTrack endpoint is accessible through the cPanel user interface (port 2082/2083) and webmail ports, which are typically unrestricted.
04 · Intelligence Metadata

The supporting signals.

In-the-Wild ExploitationNo confirmed in-the-wild exploitation as of 2026-10-08. Not listed in CISA KEV. However, the complete attack chain has been publicly demonstrated in a lab environment via the imbas007 PoC repo.
Proof-of-ConceptWorking PoC available. imbas007/CVE-2026-67401 contains poc_sqli.py (SQLi detection) and poc_full_chain.py (full exploit: SQLi → file write → root RCE), plus a self-contained vulnerable lab. 5 stars, 3 forks. A separate defensive scanner exists at jithinkrishnanrs/CVE-2026-67401-cPanel-EmailTrack-SQLi (IOC scanner, not an exploit).
EPSS Score0.00861 (0.86%) — 30-day exploitation probability. Low, but the score may lag the PoC publication. EPSS models weight historical exploitation patterns; a fresh PoC for a widely-deployed product with 1.5M exposed instances will likely push this upward in future model updates.
CVSS VectorCVSS:3.0/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H — Network-accessible, low complexity, low privileges (any mail-enabled cPanel user), no user interaction, scope changed (tenant → root). Near-maximum score of 9.9; only PR:N would push it to 10.0.
Affected VersionsAll supported cPanel & WHM release lines: 11.110.x (< 11.110.0.143), 11.134.x (< 11.134.0.55), 11.136.x (< 11.136.0.39), 11.138.x (< 11.138.0.4), WP Squared (< 11.138.1.9). Status of EOL lines 11.118 and 11.126 is unclear — assume vulnerable.
Fixed Versions11.110.0.143, 11.134.0.55, 11.136.0.39, 11.138.0.4, 11.138.1.9 — released 2026-09-08. cPanel auto-updates (upcp) should have deployed these within 24-48 hours on servers with automatic updates enabled.
Exposure Surface~1.5 million internet-facing cPanel instances per Shodan/Shadowserver telemetry (sourced from CVE-2026-41940 reporting in April 2026). cPanel ports 2082-2083 (cPanel), 2086-2087 (WHM), 2095-2096 (Webmail) are commonly exposed. cPanel holds ~24% market share among hosting control panels per Datanyze.
Disclosure TimelineDisclosed 2026-09-08 by cPanel. Discovered by Ali Mustafa (rz1027) and abed1526. NVD published 2026-09-09. Working PoC appeared on GitHub within days of disclosure.
ResearcherAli Mustafa (GitHub: rz1027 / imbas007) and abed1526. Ali Mustafa also published the working PoC repository. Defensive toolkit published by Jithin Krishnan RS (jithinkrishnanrs).
Related VulnscPanel had a separate critical auth bypass (CVE-2026-41940, CVSS 9.8) exploited as a zero-day Feb–Apr 2026, compromising ~44,000 servers. The combination of two CRITICAL cPanel CVEs in 2026 signals systemic code-quality concerns in the product.

Sources.

  1. The Hacker News — cPanel EmailTrack Flaw Coverage
  2. GBHackers — cPanel EmailTrack SQL Injection Analysis
  3. Panelica — CVE-2026-67401 Deep Dive: Mail Account to Root
  4. imbas007/CVE-2026-67401 — Working PoC Exploit (GitHub)
  5. jithinkrishnanrs/CVE-2026-67401 — Defensive IOC Scanner (GitHub)
  6. DEV Community — CVE-2026-67401 Technical Analysis
  7. Strix.ai — CVE-2026-67401 CVSS Breakdown
  8. Picus Security — CVE-2026-41940 (Related cPanel Exposure Data)
05 · The Call

Final Verdict
= UNCHANGED to CRITICAL (9.5/10)

Why this verdict

  • Authentication gate provides thin friction: PR:L requires a valid cPanel account with mail privileges, which is the *default* for every shared-hosting customer. On a typical shared server with 200+ tenants, any single compromised or malicious tenant satisfies this prerequisite. An attacker can also purchase a $5 hosting plan. This narrows the reachable population only marginally — scoring a 0.4-point deduction from the vendor's 9.9.
  • Working public PoC eliminates complexity barrier: The imbas007/CVE-2026-67401 repository provides a complete, automated exploit chain (SQLi → file write → root RCE) with a bundled test lab. This removes any residual AC:L ambiguity and confirms the chain is reproducible. No adjustment — this *supports* the CRITICAL rating.
  • 1.5M exposed instances create massive attack surface: Shodan/Shadowserver data shows ~1.5 million internet-facing cPanel installations. cPanel ports are almost always internet-exposed by design (customers need to reach their control panels). Unlike internal-only software, there is no network segmentation friction to account for.
  • No confirmed ITW exploitation or KEV listing — but PoC existence makes this imminent: EPSS at 0.86% is low today, but the model lags PoC publication. Historically, working PoCs for widely-deployed products with trivial auth requirements get weaponized within weeks. No deduction for current lack of ITW — the window is closing.
  • Role multiplier: cPanel is *canonically* a multi-tenant production infrastructure component. A single cPanel server typically hosts 100–500+ customer accounts, each with databases (MySQL), email (Exim), websites (Apache/LiteSpeed), SSL private keys, and DNS zones. Root compromise = all tenant data on that server — potentially hundreds of businesses. This is analogous to a hypervisor escape in blast radius. ≥90% of cPanel installations occupy this high-value multi-tenant role by definition. The blast radius is tenant → all-tenants → supply-chain (attacker can modify hosted websites to serve malware to site visitors). This sets a CRITICAL floor that cannot be lowered by friction alone.
  • Scope Changed is accurate and devastating: The S:C designation correctly reflects that exploitation escapes the tenant security boundary. The attacker starts as one customer among hundreds and ends as root — owning the server, all accounts, all data, and the ability to pivot to other servers in the hosting provider's infrastructure.

Why not higher?

The score is already near-maximum at 9.5. The only path to 10.0 would be removing the authentication requirement entirely (PR:N), which does not apply here — a valid cPanel credential is genuinely required, even if it is trivially obtainable.

Why not lower?

A working PoC exists for a vulnerability affecting ~1.5M internet-facing servers where the only prerequisite is a standard hosting account. The blast radius is multi-tenant root compromise — every database, every email, every website on the server. cPanel is canonically a high-value multi-tenant platform; ≥90% of installations occupy this role. The CRITICAL floor applies per the deployment-role analysis. Downgrading below CRITICAL would require evidence that <1% of cPanel installations are production multi-tenant, which contradicts all market data.

06 · Verification

Crowdsourced verification payload.

Run this script on each cPanel server as root (or via sudo). It checks the installed cPanel build number against the known-patched versions and reports VULNERABLE, PATCHED, or UNKNOWN. Example: sudo bash check_cve_2026_67401.sh

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check_cve_2026_67401.sh — Verify patch status for CVE-2026-67401
# cPanel EmailTrack SQL Injection (root RCE)
# Run as root on each cPanel/WHM server.
# Exit codes: 0 = PATCHED, 1 = VULNERABLE, 2 = UNKNOWN

set -euo pipefail

CPANEL_BIN="/usr/local/cpanel/cpanel"

if [[ ! -x "$CPANEL_BIN" ]]; then
  echo "UNKNOWN — cPanel binary not found at $CPANEL_BIN. Is cPanel installed?"
  exit 2
fi

VERSION_RAW=$($CPANEL_BIN -V 2>/dev/null)
if [[ -z "$VERSION_RAW" ]]; then
  echo "UNKNOWN — Could not determine cPanel version."
  exit 2
fi

# Extract major.minor.patch.build
# Example: 11.138.0.4 (Build 1) or 11.138.1.9
VERSION=$(echo "$VERSION_RAW" | grep -oP '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+'| head -1)
if [[ -z "$VERSION" ]]; then
  echo "UNKNOWN — Could not parse version from: $VERSION_RAW"
  exit 2
fi

MAJOR=$(echo "$VERSION" | cut -d. -f1)
MINOR=$(echo "$VERSION" | cut -d. -f2)
PATCH=$(echo "$VERSION" | cut -d. -f3)
BUILD=$(echo "$VERSION" | cut -d. -f4)

echo "Detected cPanel version: $VERSION (raw: $VERSION_RAW)"

# Patched versions per vendor advisory:
#   11.110.0.143, 11.134.0.55, 11.136.0.39, 11.138.0.4, 11.138.1.9

result="UNKNOWN"

case "$MINOR" in
  110)
    if [[ "$PATCH" -gt 0 ]] || [[ "$PATCH" -eq 0 && "$BUILD" -ge 143 ]]; then
      result="PATCHED"
    else
      result="VULNERABLE"
    fi
    ;;
  134)
    if [[ "$PATCH" -gt 0 ]] || [[ "$PATCH" -eq 0 && "$BUILD" -ge 55 ]]; then
      result="PATCHED"
    else
      result="VULNERABLE"
    fi
    ;;
  136)
    if [[ "$PATCH" -gt 0 ]] || [[ "$PATCH" -eq 0 && "$BUILD" -ge 39 ]]; then
      result="PATCHED"
    else
      result="VULNERABLE"
    fi
    ;;
  138)
    if [[ "$PATCH" -gt 1 ]]; then
      result="PATCHED"
    elif [[ "$PATCH" -eq 1 && "$BUILD" -ge 9 ]]; then
      result="PATCHED"
    elif [[ "$PATCH" -eq 0 && "$BUILD" -ge 4 ]]; then
      result="PATCHED"
    else
      result="VULNERABLE"
    fi
    ;;
  118|126)
    echo "WARNING — Release line 11.$MINOR is EOL. Patch status unknown. Assume VULNERABLE."
    result="VULNERABLE"
    ;;
  *)
    if [[ "$MINOR" -gt 138 ]]; then
      result="PATCHED"
    else
      result="UNKNOWN"
    fi
    ;;
esac

# Additional check: is EmailTrack feature accessible?
if [[ -f "/usr/local/cpanel/Cpanel/EmailTrack.pm" ]]; then
  echo "INFO — EmailTrack module present at /usr/local/cpanel/Cpanel/EmailTrack.pm"
else
  echo "INFO — EmailTrack module not found (feature may be disabled or removed)."
fi

echo "$result — CVE-2026-67401 (cPanel EmailTrack SQLi → Root RCE)"

case "$result" in
  PATCHED)    exit 0 ;;
  VULNERABLE) exit 1 ;;
  *)          exit 2 ;;
esac