This is not a burglar picking your front-door lock, it is one tenant discovering the master key cabinet in the hallway
CVE-2026-48172 is an incorrect privilege assignment bug in the LiteSpeed User-End cPanel Plugin's Redis enable/disable path, specifically the lsws.redisAble function. LiteSpeed says versions 2.3 through 2.4.4 are at risk; LiteSpeed first patched it in 2.4.5, then pushed broader follow-up hardening in 2.4.6/2.4.7, with WHM plugin 5.3.1.0 bundling cPanel plugin 2.4.7. Successful abuse lets a cPanel user run arbitrary scripts as root on the host.
The vendor's 9.8/CRITICAL framing overstates the reachable attack surface because this is not actually PR:N in the real world. An attacker needs a valid cPanel account, a compromised tenant, or some other foothold on a shared host first. That said, the downgrade stops at HIGH, not lower, because this lands as root, hits an often internet-facing hosting stack, and is already KEV-listed with active exploitation.
4 steps from start to impact.
Get any cPanel foothold
- Target uses LiteSpeed with the vulnerable User-End cPanel Plugin installed
- Attacker has a valid cPanel account or control of one tenant account
- Affected feature is exposed in the account's cPanel environment
- This is authenticated remote, not pre-auth internet spray-and-win
- Enterprises that do not run cPanel or do not expose shared hosting workflows are out of scope
- cPanel or hoster feature lists may hide the plugin from many accounts
Call the vulnerable API path
lsws.redisAble. Per LiteSpeed and NVD, the bug mishandles Redis enable/disable features and turns a user-level action into arbitrary script execution. Weaponization does not require memory corruption or a race; it is a privilege-boundary failure.- User account can reach the LiteSpeed plugin API path
- Plugin version is vulnerable
- Redis management code path is present
- If the user-end plugin was auto-removed or manually uninstalled, the path is gone
- Hosts that disabled auto-install or removed the cPanel feature cut off exploitation cleanly
- Some environments may not expose the Redis management UI to all packages
cpanel_jsonapi_func=redisAble; this is the best low-noise retrospective indicator in the vendor advisory.Execute attacker-controlled code as root
- Step 2 succeeds
- Underlying host permits root-level script execution from the plugin flow
- EDR is uncommon on shared-hosting Linux fleets, but where present it may catch post-exploitation behaviors
- Some containerized or heavily sandboxed hosting models may reduce secondary blast radius
/var/log/secure or /var/log/auth.log, shell histories, cron, authorized_keys, and suspicious files under /tmp, /var/tmp, and tenant web roots.Persist and monetize the host
- Root execution obtained
- Attacker has time before containment
- Fast hoster response and mass plugin removal reduce dwell time
- Good file-integrity and auth-log review can expose persistence quickly
redisAble log hits.redisAble log hits — Run the vendor grep across /var/cpanel/logs and /usr/local/cpanel/logs immediately, within hours. Any hit means you should treat the host as potentially compromised and investigate for root persistence, SSH keys, cron, and webshell artifacts.- A perimeter WAF does not solve this reliably because the attack is an authenticated control-panel workflow, not a simple public web exploit pattern.
- MFA on admin/WHM only is insufficient; the vulnerable hop is through a tenant cPanel account, not necessarily a privileged admin login.
- Generic OS patch compliance dashboards often miss this because the vulnerable object is a LiteSpeed/cPanel plugin component, not a standard distro package.
The supporting signals.
| In-the-wild status | Confirmed active exploitation by the vendor, and CISA KEV-listed. |
|---|---|
| KEV status | Added to CISA KEV on 2026-05-26; NVD reflects a due date of 2026-05-29 for federal remediation guidance. |
| Proof-of-concept availability | I did not find a high-confidence public exploit repo in primary-source review, but the advisory provides enough detail for straightforward reproduction once an attacker has a cPanel account. Treat this as easily weaponizable even without a polished GitHub PoC. |
| EPSS | User-supplied EPSS is 0.07956. That is not the main driver here because KEV and vendor-confirmed exploitation outweigh a middling predictive score. |
| CVSS and what it gets wrong | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H models this like pre-auth remote compromise. Reality is closer to authenticated remote privilege escalation from a tenant foothold. |
| Affected versions | Vendor advisory says cPanel User-End Plugin 2.3 through 2.4.4. NVD also notes CPEs up to excluding 2.4.7, reflecting the later follow-up hardening cycle. |
| Fixed versions | Initial fix landed in 2.4.5. LiteSpeed then released 2.4.6 and recommends cPanel plugin 2.4.7 bundled with WHM plugin 5.3.1.0 or later after a broader security review. |
| Exposure population | This is not general enterprise middleware; it is a hosting-control-panel edge case. But the population that *does* run it is inherently internet-facing and multi-tenant, which amplifies blast radius per affected host. |
| Internet prevalence context | W3Techs reports LiteSpeed on 15.3% of known-web-server websites and cPanel on 2.1% of known-web-panel websites, so the vulnerable combo is niche compared with Apache/Nginx estates, but far from rare in hosting. |
| Reporter | LiteSpeed credits David Strydom in the vendor advisory. |
Sources.
Why this verdict
- Downgrade from 9.8: the published vector treats this like
PR:N, but LiteSpeed explicitly says any cPanel user can exploit it. That is authenticated remote privilege escalation, not pure pre-auth internet RCE. - Keep it HIGH: the privilege jump is straight to root, so one weak tenant or one stolen hosting credential can burn the entire server and every account on it.
- KEV overrides complacency: CISA KEV listing and vendor-confirmed exploitation mean attackers are already proving the prerequisite is easy enough in the field.
Why not higher?
I am not calling this CRITICAL because the main exposure gate is real and meaningful: the attacker must first land a valid cPanel user context on a server that both runs LiteSpeed and still has the vulnerable user-end plugin present. That narrows the reachable population substantially versus true unauthenticated edge RCEs like VPNs, firewalls, or pre-auth admin-panel bugs.
Why not lower?
I am not dropping this to MEDIUM because the outcome is root, not a limited user-context bug, and the target class is inherently internet-facing shared hosting where compromised tenant accounts are common enough to matter. KEV status removes the usual argument that the precondition is too theoretical.
Crowdsourced verification payload.
Run this on each cPanel host as root. Save it as check-cve-2026-48172.sh and execute bash check-cve-2026-48172.sh; it needs root to read cPanel/LiteSpeed paths and logs. The script returns VULNERABLE, PATCHED, or UNKNOWN and exits 1, 0, or 2 respectively.
#!/usr/bin/env bash
# check-cve-2026-48172.sh
# Detect likely exposure to CVE-2026-48172 on a cPanel/LiteSpeed host.
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN
set -u
log_hits=0
plugin_present=0
cpanel_ver=""
whm_ver=""
status="UNKNOWN"
reason=""
ver_ge() {
# returns 0 if $1 >= $2
[ "$(printf '%s\n%s\n' "$2" "$1" | sort -V | head -n1)" = "$2" ]
}
ver_lt() {
# returns 0 if $1 < $2
! ver_ge "$1" "$2"
}
# 1) Retrospective exploitation signal from vendor/NVD guidance
if grep -rEqs 'cpanel_jsonapi_func=redisAble' /var/cpanel/logs /usr/local/cpanel/logs 2>/dev/null; then
log_hits=1
fi
# 2) Detect whether the user-end cPanel plugin looks installed
for d in \
/usr/local/cpanel/base/frontend/jupiter/ls_web_cache_manager \
/usr/local/cpanel/base/frontend/paper_lantern/ls_web_cache_manager \
/usr/local/cpanel/base/frontend/*/ls_web_cache_manager; do
if [ -d "$d" ]; then
plugin_present=1
break
fi
done
# 3) Try to discover cPanel plugin version from likely files/paths
cpanel_ver=$(grep -RhoE '2\.[0-9]+(\.[0-9]+){1,2}' \
/usr/local/cpanel/base/frontend/*/ls_web_cache_manager \
/usr/local/cpanel/whostmgr/docroot/cgi/lsws \
/usr/local/lsws 2>/dev/null | sort -V | tail -n1)
# 4) Try to discover WHM plugin version from likely files/paths
whm_ver=$(grep -RhoE '5\.[0-9]+(\.[0-9]+){1,2}' \
/usr/local/cpanel/whostmgr/docroot/cgi/lsws \
/usr/local/lsws 2>/dev/null | sort -V | tail -n1)
# 5) Decision logic
if [ "$log_hits" -eq 1 ]; then
status="VULNERABLE"
reason="Exploit indicator found in cPanel logs: cpanel_jsonapi_func=redisAble"
elif [ "$plugin_present" -eq 0 ]; then
status="PATCHED"
reason="User-end LiteSpeed cPanel plugin not found"
elif [ -n "$whm_ver" ] && ver_ge "$whm_ver" "5.3.1.0"; then
status="PATCHED"
reason="WHM plugin version appears to be $whm_ver (>= 5.3.1.0)"
elif [ -n "$cpanel_ver" ] && ver_ge "$cpanel_ver" "2.4.7"; then
status="PATCHED"
reason="cPanel plugin version appears to be $cpanel_ver (>= 2.4.7)"
elif [ -n "$cpanel_ver" ] && ver_lt "$cpanel_ver" "2.4.5"; then
status="VULNERABLE"
reason="cPanel plugin version appears to be $cpanel_ver (< 2.4.5)"
elif [ -n "$cpanel_ver" ] && { [ "$cpanel_ver" = "2.4.5" ] || [ "$cpanel_ver" = "2.4.6" ]; }; then
status="UNKNOWN"
reason="Found cPanel plugin version $cpanel_ver; vendor first fixed in 2.4.5 but later recommended 2.4.7 after additional review"
else
status="UNKNOWN"
reason="Could not reliably determine plugin version from host files"
fi
printf 'status=%s\n' "$status"
printf 'reason=%s\n' "$reason"
printf 'plugin_present=%s\n' "$plugin_present"
printf 'cpanel_plugin_version=%s\n' "${cpanel_ver:-not_found}"
printf 'whm_plugin_version=%s\n' "${whm_ver:-not_found}"
printf 'redisAble_log_hits=%s\n' "$log_hits"
case "$status" in
PATCHED)
echo "PATCHED"
exit 0
;;
VULNERABLE)
echo "VULNERABLE"
exit 1
;;
*)
echo "UNKNOWN"
exit 2
;;
esac