LiteSpeed cPanel / WHM Plugin — CVE-2026-54420 Symlink-Following Root Privilege Escalation

A low-privileged shared-hosting tenant (FTP or web-shell access) plants a symbolic link inside a docroot; the privileged LiteSpeed plugin process follows it and performs a file operation as root, escaping the CageFS tenant boundary and taking over the whole server. Actively exploited (CISA KEV). Defensive hunt & harden pack — no exploit code.
Threat
CVE-2026-54420 · LiteSpeed cPanel/WHM Plugin symlink privesc
Severity
CISA KEV · CVSS 8.5
Platform
Linux · shared web hosting (CloudLinux/CageFS)
Leads to
Root takeover · tenant-boundary escape · server-wide compromise
Exploited
In the wild since May 2026 · KEV deadline 2026-06-18
Version
v0.1 · 2026-06-23
Author
HuntPack
01

Executive Summary

CVE-2026-54420 (CVSS 8.5, High) is a UNIX symbolic-link (symlink) following vulnerability in the LiteSpeed cPanel plugin (all versions before 2.4.8), distributed in the LiteSpeed WHM Plugin before 5.3.2.0. On a shared-hosting server running CloudLinux/CageFS, a low-privileged tenant who already has FTP or web-shell access can plant a symbolic link inside their own docroot that points outside the tenant boundary. When the LiteSpeed plugin's privileged (root) process performs a file operation, it follows that attacker-controlled symlink — reading, writing, or chowning a file as root — which lets the tenant escalate to root and escape CageFS, taking over the entire shared server and every other tenant on it.

CISA added the flaw to its Known Exploited Vulnerabilities catalog after observing in-the-wild exploitation; the KEV remediation deadline was 2026-06-18. LiteSpeed patched it in cPanel plugin v2.4.8 / WHM Plugin v5.3.2.1. A public proof-of-concept (fevar54/CVE-2026-54420-LiteSpeed-Symlink-Exploit on GitHub) exists, lowering the bar for opportunistic abuse.

Defender priority: this is a local privilege escalation that turns any single compromised/abusive tenant into full root on a multi-tenant server. The durable detection target is behavioral: a privileged LiteSpeed/cPanel binary (under /usr/local/lsws or /usr/local/cpanel) performing root-context file operations triggered from a tenant directory, plus the web-shell and post-root persistence that follow. Patching to v2.4.8 / WHM 5.3.2.1 is the single most important control (§10).
02

Source Review & Web Hunter Notes

TierSourceKey FindingCarry
1 · Vendor advisoryLiteSpeed security update (2026-06-01)Symlink-following flaw in cPanel plugin < 2.4.8 / WHM plugin < 5.3.2.0; patched in 2.4.8 / 5.3.2.1yes
1 · GovernmentCISA KEV catalogActively exploited; remediation deadline 2026-06-18yes
2 · PressThe Hacker News — CISA flags LiteSpeed cPanel flawRoot privilege escalation on shared hosting; CISA KEV context; in-the-wild since May 2026yes
2 · ResearchSecurityOnline — CVE-2026-54420 writeupCloudLinux/CageFS tenant-boundary escape; CVSS 8.5; public PoC repo referencepartial

Decisions: behavior-first (no durable network IOCs — this is a local privesc). Detection anchored on (a) symlink creation by a web/FTP tenant inside a docroot, (b) a privileged LiteSpeed/cPanel binary doing unexpected root-context file work, and (c) the web-shell + post-root persistence chain. Atomic IOCs (hashes, exploit paths) are not published in the sources, so concrete values are REPLACE_WITH_* placeholders; only the public PoC repo name is cited as context.

03

Hunt Brief & Attack Chain

Working hypothesis: A low-privileged tenant with FTP/web-shell access plants a symlink in their docroot pointing outside CageFS; the privileged LiteSpeed plugin process follows it and writes/chowns a root-owned file; the attacker uses that primitive to escalate to root, then establishes persistence (SUID binary, cron/systemd unit, SSH authorized_keys or /etc/passwd edit) and may pull tooling out over the network.

StepBehaviorTelemetryHunt Angle
1 · FootholdTenant has FTP / web-shell access in their docrootProcess / file eventsN1, Q3
2 · Symlink plantln -s creating a link pointing outside the tenantProcessRollup2 / file writeQ1
3 · TriggerPrivileged LiteSpeed/cPanel binary follows the link, writes root-owned fileProcessRollup2 / file writeQ2
4 · EscalationRoot context obtained; tenant boundary escapedProcessRollup2Q2 / Q5
5 · PersistenceSUID drop, cron/systemd unit, authorized_keys / passwd editfile write / ProcessRollup2Q4 / Q5
6 · Tooling pullWeb/php process makes outbound connection (reverse shell / download)NetworkConnectIP4Q6

Affected surface & telemetry

SurfaceRequired TelemetryPriorityGap Risk
Shared-hosting Linux serversProcess lineage + command line (ProcessRollup2)CriticalLow — Falcon for Linux sensor
Docroot / web file activityFile-create / write events under /home/*/public_htmlHighMedium — file telemetry volume on hosts
Privileged plugin processesProcess + file events from /usr/local/lsws, /usr/local/cpanelHighMedium — baseline plugin activity is noisy
Egress from web/php usersNetworkConnectIP4 from nobody/_lsphpMediumMedium — legit outbound from sites
04

Consolidated IOC Table

This is a local privilege escalation — there are no durable C2 domains/IPs in the sources. Behavior is the only reliable signal. Atomic values (exploit hashes, dropped-file paths) are not published, so they are REPLACE_WITH_* placeholders — fill them from your own IR before importing. Copy-ready blocks in §9.
TypeValueConfActionContext
Behaviortenant/web/FTP user runs ln -s inside /home/*/public_html pointing outside tenantmediumhuntSymlink plant — exploit primitive (Q1)
Behavior/usr/local/lsws or /usr/local/cpanel binary writes root-owned file in unexpected path / spawns shellhighdetectPrivileged plugin follows symlink — flagship signal (Q2)
Behaviorweb/php user (nobody, _lsphp) spawns sh/bash/id/whoami/unamehighdetectWeb-shell behavior (Q3)
Behaviornew SUID/SGID file or chmod u+s from non-admin contexthighdetectPost-root persistence (Q5)
Behaviorcron/systemd unit write or authorized_keys / /etc/passwd edit shortly after tenant-context processmediumhuntPost-root persistence (Q4)
FileREPLACE_WITH_WEBSHELL_PATH (web shell in docroot)unconfhuntFill from IR — not in sources
HashREPLACE_WITH_EXPLOIT_SHA256unconfhuntFill from IR — not in sources
Referencefevar54/CVE-2026-54420-LiteSpeed-Symlink-Exploit (GitHub PoC)contextawarenessPublic PoC repo (cited in sources)
05

ATT&CK Mapping

TacticTechniqueObserved BehaviorQuery / Control
Persistence / Initial footholdT1505.003 — Web ShellWeb/php user spawning shells from a docrootQ3
Privilege EscalationT1548 — Abuse Elevation Control MechanismPrivileged plugin follows attacker symlink → rootQ2
Privilege EscalationT1574.005 / T1222 — Symlink abuse / file permission modificationln -s outside tenant; root-owned file writesQ1, Q2
Privilege EscalationT1548.001 — Setuid and SetgidNew SUID/SGID file or chmod u+sQ5
PersistenceT1053.003 / T1543.002 / T1098.004 — Cron / systemd service / SSH authorized_keysPersistence written after a tenant-context processQ4
Command & ControlT1071.001 — Web protocolsOutbound from a web/php process (reverse shell / tool pull)Q6
06

Native Audit-Log Hunts

HuntSourceLogicResponse
N1 · Plugin version inventorycPanel/WHM; rpm/plugin manifestLiteSpeed cPanel plugin < 2.4.8 or WHM plugin < 5.3.2.1 still installedPatch immediately (KEV)
N2 · Symlink audit in docrootsfind on host / file-integrity toolSymlinks under /home/*/public_html whose target resolves outside the tenant homeRemove; investigate owner
N3 · SUID/SGID driftFIM baseline of SUID filesNew/changed SUID/SGID binaries vs. a known-good baselineQuarantine; rebuild if confirmed
N4 · Root-artifact reviewAuditd / FIM on /etcRecent edits to /etc/passwd, /etc/cron*, systemd units, root authorized_keysTreat as root compromise
07

CrowdStrike LogScale CQL Hunt Queries

Pick your tenant's cloud first — every "Open in Falcon" button below uses this selection.
Linux hunts use ProcessRollup2/SyntheticProcessRollup2 for process events and file-event names for writes. Shared hosting is noisy — Q1, Q3, Q4 and Q6 carry medium+ FP, so each ships explicit // TUNING exclusions. Q2 (privileged plugin following a symlink) and Q5 (SUID drop) are the strongest keepers. Correlate medium-FP hits to a same-host Q2/Q3.
Q1 · Symlink creation by a web/FTP/tenant user inside a docroot
CONF MEDFP MEDCOST LOW

Looks for: ln -s run from inside a tenant docroot, especially with a target that climbs out of the home tree (../ or an absolute system path). Accomplishes: catches the exploit's symlink-plant primitive. FP: legit deploy scripts create symlinks — tune to non-admin users and out-of-tenant targets.

// HUNT: CVE-2026-54420 symlink plant (tenant runs ln -s in docroot toward system path)
// MITRE: T1574.005, T1222 | CONF: medium  FP: medium  COST: low
// CONF: medium - exploit primitive, but symlinks are also legit in deploy tooling
// FP: medium - CI/deploy and package managers create symlinks
// COST: low - simple process filter
// TUNING: allow-list deploy/admin UserName; focus on ../ or /usr,/etc,/var targets; exclude root
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| ImageFileName=/\/ln$/
| CommandLine=/\s-s(\s|f|n)/
| CommandLine=/(\.\.\/|\s\/(etc|usr|var|root)\/)/
| CommandLine=/\/home\/[^\/]+\/(public_html|www)/i
| UserName!="root"
| table([@timestamp, ComputerName, UserName, ParentBaseFileName, CommandLine], limit=200)
Q2 · Privileged LiteSpeed/cPanel binary spawning a shell or writing root-owned files
CONF HIGHFP LOWCOST LOW

Looks for: a binary under /usr/local/lsws or /usr/local/cpanel (e.g. lscpd, lsws, plugin binaries) spawning an interactive shell. Accomplishes: the flagship signal — a privileged plugin process dropping into a shell as root is exactly the post-symlink-follow escalation. Pair with the file-write variant below for root-owned writes.

// HUNT: CVE-2026-54420 privileged LiteSpeed/cPanel process spawns shell (post symlink-follow)
// MITRE: T1548, T1222 | CONF: high  FP: low  COST: low
// CONF: high - the plugin daemon has no business launching an interactive shell
// FP: low - rare; some plugin maintenance spawns sh - confirm command + timing
// COST: low - narrow parent-path filter
// TUNING: allow-list known plugin install/update child commands if baselined
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| ParentBaseFileName=/^(lscpd|lsws|litespeed|lshttpd)$/i
| ImageFileName=/\/(sh|bash|dash|python[0-9.]*|perl)$/
| UserName="root"
| table([@timestamp, ComputerName, UserName, ParentBaseFileName, ImageFileName, CommandLine], limit=200)
Q3 · Web-shell behavior — web/php user spawning shell & recon binaries
CONF HIGHFP LOW-MEDCOST LOW

Looks for: the web/php service account (nobody, _lsphp, nginx, apache) spawning sh/bash or recon binaries (id, whoami, uname). Accomplishes: catches the web-shell foothold that delivers the symlink plant. FP: a few sites legitimately shell out — exclude known apps/cron.

// HUNT: CVE-2026-54420 web-shell behavior (php/web user spawns shell + recon)
// MITRE: T1505.003 | CONF: high  FP: low-medium  COST: low
// CONF: high - php/web service accounts should not run interactive recon
// FP: low-medium - some CMS plugins shell out - baseline per host
// COST: low - process filter on a small set of users
// TUNING: allow-list known app helper commands; exclude scheduled/cron parents
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| UserName=/^(nobody|_lsphp|nginx|apache|www-data|httpd)$/i
| ImageFileName=/\/(sh|bash|dash|id|whoami|uname|wget|curl)$/
| table([@timestamp, ComputerName, UserName, ParentBaseFileName, ImageFileName, CommandLine], limit=200)
Q4 · Post-exploit root persistence (cron / systemd / authorized_keys / passwd)
CONF MEDFP MEDCOST LOW

Looks for: file writes to cron directories, systemd unit paths, SSH authorized_keys, or /etc/passwd / /etc/shadow. Accomplishes: catches the persistence stage that follows a successful root escalation. FP: legit config management edits these — scope to hosts with a recent Q2/Q3 hit and exclude config-management agents.

// HUNT: CVE-2026-54420 post-root persistence (cron/systemd/authorized_keys/passwd write)
// MITRE: T1053.003, T1543.002, T1098.004 | CONF: medium  FP: medium  COST: low
// CONF: medium - strong if correlated to a same-host Q2/Q3 escalation
// FP: medium - config management (ansible/puppet/cpanel) writes these paths
// COST: low - file-event path filter
// TUNING: scope to hosts with a recent Q2/Q3 hit; allow-list config-mgmt + cpanel updaters
#event_simpleName=/NewExecutableWritten|FileCreate/
| TargetFileName=/(\/etc\/cron|\/etc\/systemd\/system\/|\/lib\/systemd\/system\/|\/\.ssh\/authorized_keys|\/etc\/passwd|\/etc\/shadow)/
| UserName!=/^(_cpanel|cpanel)$/i
| table([@timestamp, ComputerName, UserName, ParentBaseFileName, TargetFileName], limit=200)
Q5 · SUID/SGID file creation or chmod u+s from a non-admin context
CONF HIGHFP LOWCOST LOW

Looks for: a chmod setting the setuid/setgid bit (u+s, g+s, or numeric 4xxx/2xxx) run from a non-admin/web/tenant user, or a copy of a shell into a SUID path. Accomplishes: catches a classic post-root SUID-backdoor drop. FP: low — most SUID changes are admin/install-time.

// HUNT: CVE-2026-54420 SUID/SGID backdoor (chmod u+s from non-admin context)
// MITRE: T1548.001 | CONF: high  FP: low  COST: low
// CONF: high - web/tenant accounts have no reason to set the setuid bit
// FP: low - package installs set SUID but run as root/pkg user - exclude those
// COST: low - process filter
// TUNING: allow-list package-manager parents (rpm/yum/dnf); keep non-admin UserName
#event_simpleName=/ProcessRollup2|SyntheticProcessRollup2/
| ImageFileName=/\/chmod$/
| CommandLine=/(u\+s|g\+s|\s[24][0-7]{3}(\s|$))/
| UserName!="root"
| table([@timestamp, ComputerName, UserName, ParentBaseFileName, CommandLine], limit=200)
Q6 · Outbound connection from a web/php process (reverse shell / tooling pull)
CONF MEDFP MEDCOST MED

Looks for: an outbound connection to a public IP whose initiating process is a web/php/shell binary running under a web service account. Accomplishes: surfaces reverse shells and second-stage tool downloads. FP: sites make legit outbound API calls — exclude RFC1918 + sanctioned destinations and correlate to a same-host Q3/Q2.

// HUNT: CVE-2026-54420 egress from web/php process (reverse shell / tool pull)
// MITRE: T1071.001 | CONF: medium  FP: medium  COST: medium
// CONF: medium - meaningful when the process is a shell, not the app itself
// FP: medium - many sites call external APIs/CDNs outbound
// COST: medium - network event volume
// TUNING: exclude RFC1918 + sanctioned API/CDN ranges; correlate to a same-host Q3/Q2
#event_simpleName=NetworkConnectIP4
| ContextBaseFileName=/^(sh|bash|dash|python[0-9.]*|perl|lsphp|php)$/i
| RemoteAddressIP4!=/^(10\.|192\.168\.|172\.(1[6-9]|2[0-9]|3[01])\.|169\.254\.|127\.)/
| table([@timestamp, ComputerName, UserName, ContextBaseFileName, RemoteAddressIP4, RemotePort], limit=200)
08

CrowdStrike Custom IOA Recommendations

IOA NameField PatternsBenign ExclusionsDeployment Path
LiteSpeed/cPanel plugin spawns a shellParent lscpd/lsws/litespeed/lshttpd; Child sh/bash/python/perl as rootBaselined plugin install/update helpers (allow-list)Endpoint Security → Custom IOA → Process Creation (Linux), Detect+Block
SUID bit set by non-admin contextImage */chmod; CmdLine u+s/g+s/4xxx; UserName != rootPackage-manager parents (rpm/yum/dnf)Custom IOA → Process Creation, Detect
Web/php user spawns interactive shellUserName nobody/_lsphp/nginx/apache; Child sh/bashKnown CMS helper commands per hostCustom IOA → Process Creation, Detect
Q2 and Q5 are the strongest promotions (little/no benign baseline on shared hosts). Q1, Q3, Q4, Q6 stay hunt/investigate, correlated to a same-host Q2/Q3 escalation. Baseline each host's legitimate plugin/CMS behavior before enabling Block.
09

Machine-Readable IOC Appendix

Grouped IOC Quick-Copy

One-click blocks for detection, host checks, and IOC import. This is a local privesc — behavior is the durable signal; atomic values are placeholders until you fill them from IR.

Falcon IOC Management CSVbulk import (seed)
type,value,action,severity,expiration,description,tags
sha256,REPLACE_WITH_EXPLOIT_SHA256,detect,high,2026-09-23,CVE-2026-54420 LiteSpeed symlink exploit binary (fill from IR),cve:CVE-2026-54420
sha256,REPLACE_WITH_WEBSHELL_SHA256,detect,high,2026-09-23,Web shell observed pre-exploit (fill from IR),cve:CVE-2026-54420
domain,REPLACE_WITH_TOOLING_DOMAIN,detect,medium,2026-08-23,Second-stage tooling pull host (fill from IR),cve:CVE-2026-54420
Behavioral Signaturesdetection logic
tenant/web/FTP user runs ln -s inside /home/*/public_html pointing outside the tenant home
/usr/local/lsws or /usr/local/cpanel binary (lscpd/lsws) spawns sh/bash/python as root
web/php user (nobody, _lsphp, apache) spawns sh/bash/id/whoami/uname (web shell)
new SUID/SGID file or chmod u+s/4xxx from a non-admin/web/tenant context
cron/systemd unit write or authorized_keys / /etc/passwd edit right after a tenant-context process
outbound connection from a shell/php process under a web service account (reverse shell / tool pull)
Host check one-linersrun on shared servers
# Confirm patched plugin version (want cPanel plugin 2.4.8+ / WHM 5.3.2.1+):
cat /usr/local/lsws/admin/cpanelplugin/VERSION 2>/dev/null; rpm -qa | grep -i litespeed
# Find symlinks in docroots whose target escapes the tenant home:
find /home/*/public_html -type l -printf '%p -> %l\n' 2>/dev/null
# Inventory SUID/SGID files for baseline / drift:
find / -xdev -perm -4000 -o -perm -2000 2>/dev/null
# Recently changed sensitive root artifacts:
find /etc/cron* /etc/systemd /lib/systemd -mtime -7 2>/dev/null
Hardening / Blockbreak the chain
# PATCH FIRST (vendor advisory, CISA KEV - the #1 control):
Upgrade LiteSpeed cPanel plugin to v2.4.8 and WHM plugin to v5.3.2.1+
# Containment of the symlink class:
Enable CloudLinux CageFS for ALL tenants (enforce per-tenant filesystem boundary)
Apache: SymLinksIfOwnerMatch (not FollowSymLinks); use mod_ruid2 for per-tenant uid
LiteSpeed: disable "Follow Symbolic Link" / restrict to owner-matched links
# Reduce foothold + detect post-root:
Remove unused FTP accounts; restrict/disable FTP in favor of SFTP
File-integrity monitoring on /etc, cron, systemd units, and all SUID/SGID files
10

Hardening — Tiered & Deployable

The exploit needs an unpatched plugin, a symlink the privileged process will follow, and a tenant foothold (FTP/web shell). Patching removes the bug; CageFS + symlink restrictions contain the class; FTP/FIM controls cut the foothold and catch the follow-on. Controls cite the strongest authority; where no formal benchmark exists they are flagged best-practice. Each key control ships a verifiable check.

Immediate — Patch & contain the symlink class
  • Patch to LiteSpeed cPanel plugin v2.4.8 / WHM plugin v5.3.2.1M1051 (Update Software). The vendor fix and the #1 control; CISA KEV deadline was 2026-06-18. Check: rpm -qa | grep -i litespeed and the plugin VERSION file.
  • Enable CloudLinux CageFS for every tenantM1022 (Restrict File/Directory Permissions); vendor (CloudLinux) hardening guidance. Enforces the per-tenant filesystem boundary the exploit escapes. Check: cagefsctl --list-enabled.
  • Disable unrestricted symlink following in the web serverM1022; best-practice (no formal benchmark). Apache: use SymLinksIfOwnerMatch (never bare FollowSymLinks) plus mod_ruid2; LiteSpeed: turn off "Follow Symbolic Link" or restrict to owner-matched links. Check: grep -ri 'FollowSymLinks\|SymLinksIfOwnerMatch' /etc/apache2 /usr/local/apache.
Near term — Cut the foothold & detect the follow-on
  • Remove unused FTP accounts; prefer SFTP and restrict FTPM1018 (User Account Management); best-practice. Shrinks the set of tenants who can plant a symlink. Check: review FTP user list in WHM / /etc/proftpd or pure-ftpd config.
  • File-integrity monitoring on /etc, cron, systemd units, and SUID/SGID filesM1022; CIS Distribution Independent Linux Benchmark (FIM + SUID audit sections). Catches Q4/Q5 persistence. Check: find / -xdev \( -perm -4000 -o -perm -2000 \) 2>/dev/null vs. baseline.
  • Least-privilege for the plugin & service accountsM1026 (Privileged Account Management); best-practice. Run web/php under per-tenant uids (mod_ruid2 / suEXEC) so a web shell never shares a uid with another tenant. Check: confirm nobody/_lsphp is not the effective uid across tenants.
Strategic — Default-deny & egress control
  • Application control / allowlisting on hosting serversM1038 (Execution Prevention); best-practice. Blocks dropped SUID backdoors and unsanctioned binaries.
  • Egress filtering from web/php service accountsM1037 (Filter Network Traffic); best-practice. Blunts reverse shells and tool pulls (Q6) from compromised tenants.
  • Patch-velocity SLA on KEV-listed hosting componentsM1051; align to the CISA KEV / BOD 22-01 timeline so internet-facing hosting plugins are patched before the deadline.
11

Containment Runbook

PhaseActionsOwnerEvidence
IsolateNetwork-contain the affected shared server; preserve docroot symlinks, web shells, and root artifacts before any cleanupSOC L2Containment timestamp; Q1/Q2/Q3 events
Scope tenantsEnumerate every tenant on the shared server (each is a potential entry point and a victim); identify which tenant planted the symlinkIR + ITTenant list; FTP/web-user owner of the symlink
Hunt artifactsSweep for web shells in all docroots, out-of-tenant symlinks, new SUID/SGID files, rogue cron/systemd units, edited /etc/passwd and root authorized_keysIRWeb-shell hashes; SUID/symlink/persistence inventory
Eradicate / rebuildPatch to v2.4.8 / WHM 5.3.2.1; remove shells/backdoors/persistence. If root compromise is confirmed, rebuild the server — do not trust an in-place cleanIR + ITRebuild ticket; patch confirmation
Rotate credentialsRotate all tenant credentials AND root/system credentials on the server; reissue SSH keys; invalidate sessionsIR + ITCredential-reset log
HardenEnable CageFS for all tenants; disable unrestricted symlink following; remove unused FTP; enable FIM + promote Q2/Q5 IOAsDetection EngControl status; IOA enabled
12

Detection Coverage Map & Validation

TechniqueBehaviorCQLIOACoverage
T1574.005 / T1222Symlink plant in docrootQ1Partial noisy; tune to non-admin + out-of-tenant target
T1548Privileged plugin → shell/root writeQ2IOA-1Good
T1505.003Web-shell behaviorQ3IOA-3Good
T1053.003 / T1543.002 / T1098.004Cron / systemd / authorized_keys persistenceQ4Partial correlate to Q2/Q3; exclude config-mgmt
T1548.001SUID/SGID dropQ5IOA-2Good
T1071.001Web/php egress (reverse shell)Q6Partial correlate to Q3/Q2; needs egress visibility

Validation gates: (1) confirm Falcon-for-Linux ProcessRollup2 with command line and file-event telemetry on all shared-hosting servers; (2) baseline each host's legit plugin install/update and CMS helper behavior before promoting Q2/Q3 to Block; (3) lab-test a benign ln -s ../target from a tenant home (Q1), a benign chmod u+s as non-root (Q5), and a benign web-user id/whoami (Q3); (4) promote Q2/Q5 to Custom IOA Detect+Block; keep Q1/Q3/Q4/Q6 as correlated hunts. Note: there are no source-published atomic IOCs — host-level symlink/SUID audits (N2/N3) backfill the gaps.

13

Hunt Summary Ticket

TITLE:        Hunt — CVE-2026-54420 LiteSpeed cPanel/WHM symlink root privesc (CISA KEV)
SEVERITY:     High (CVSS 8.5; actively exploited; full root takeover on shared hosting)
SCOPE:        Linux shared-hosting servers running LiteSpeed cPanel/WHM plugin (CloudLinux/CageFS)
HYPOTHESIS:   Tenant with FTP/web-shell access plants a symlink in a docroot -> privileged
              LiteSpeed/cPanel process follows it -> root file write -> escalation + persistence.
QUERIES RUN:  Q1 symlink plant in docroot | Q2 privileged plugin spawns shell (IOA) |
              Q3 web/php user spawns shell+recon (IOA) | Q4 root persistence write |
              Q5 SUID/SGID drop from non-admin (IOA) | Q6 web/php egress (reverse shell)
              + Native N1-N4 (plugin version, docroot symlink audit, SUID drift, /etc artifacts)
DO FIRST:     Patch to v2.4.8 / WHM 5.3.2.1 (KEV deadline 2026-06-18); run Q2/Q5; sweep symlinks
FINDINGS:     <pending analyst execution>
GAPS:         No source-published atomic IOCs; symlink plant is noisy on shared hosts
ACTIONS:      Patch; enable CageFS; disable symlink following; remove unused FTP; FIM; promote Q2/Q5
OWNER:        HuntPack
VERSION:      v0.1 - 2026-06-23
14

Changelog

v0.32026-07-24CQL correctness pass. All table() calls now carry an explicit row limit: the default is 200 and truncation is silent, so a capped result was indistinguishable from a complete one. Atomic-IOC sweeps (filters over 5+ hashes or C2 IPs) use limit=max so a wide infection is never silently under-scoped; behavioural hunts use limit=200, where exceeding the cap indicates the query needs tuning. Where present, event names that do not exist in the Falcon data model were corrected (e.g. ServiceInstalled is a Sysmon concept, not a Falcon event; ElfFileWritten is ELFFileWritten) — such queries could never return a row. No detection logic, fields, or IOCs changed.
v0.22026-06-29CQL syntax review (crowdstrike-logscale-v3): removed invalid NewFileWritten event (Q4).
v0.12026-06-23Initial pack: CVE-2026-54420 LiteSpeed cPanel/WHM plugin symlink-following root privilege escalation (CISA KEV, CVSS 8.5, in-the-wild since May 2026). Built on the review-v2 gold layout (fixed left-sidebar scrollspy TOC, collapsible, cloud selector inside the CQL section, per-card Copy/Open-in-Falcon, Grouped IOC Quick-Copy grid, coverage+validation, .ticket). Linux hunt for shared web-hosting servers: 6 CQL queries (symlink plant, privileged-plugin shell, web-shell behavior, root persistence, SUID drop, web/php egress) + 4 native hunts, 3 IOA candidates. Atomic IOCs are REPLACE_WITH_* placeholders (none published in sources); public PoC repo fevar54/CVE-2026-54420-LiteSpeed-Symlink-Exploit cited as context. Hardening leads with patch to v2.4.8 / WHM 5.3.2.1 + CageFS + symlink-following restrictions.
15

References

TierSourceUsed For
1LiteSpeed security advisory (2026-06-01)Affected versions; fixed in cPanel plugin 2.4.8 / WHM plugin 5.3.2.1; symlink-following root cause
1CISA Known Exploited Vulnerabilities catalogActive exploitation; remediation deadline 2026-06-18
2The Hacker News — CISA Flags LiteSpeed cPanel Plugin FlawRoot privesc on shared hosting; CISA KEV context; CVSS 8.5
2SecurityOnline — LiteSpeed cPanel Privilege Escalation CVE-2026-54420CloudLinux/CageFS tenant-boundary escape; public PoC repo reference

HuntPack v0.1 · LiteSpeed cPanel/WHM Plugin CVE-2026-54420 · Generated 2026-06-23 · Defensive use only. This is a local privilege escalation with no durable network IOCs — the behavioral detections (symlink plant, privileged-plugin shell, web-shell behavior, SUID/persistence) are the durable signal. Patch to v2.4.8 / WHM 5.3.2.1 first. Validate field names in your tenant before promoting any query.