LiteSpeed cPanel / WHM Plugin — CVE-2026-54420 Symlink-Following Root Privilege Escalation
root, escaping the CageFS tenant boundary and taking over the whole server. Actively exploited (CISA KEV). Defensive hunt & harden pack — no exploit code.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.
/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).Source Review & Web Hunter Notes
| Tier | Source | Key Finding | Carry |
|---|---|---|---|
| 1 · Vendor advisory | LiteSpeed 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.1 | yes |
| 1 · Government | CISA KEV catalog | Actively exploited; remediation deadline 2026-06-18 | yes |
| 2 · Press | The Hacker News — CISA flags LiteSpeed cPanel flaw | Root privilege escalation on shared hosting; CISA KEV context; in-the-wild since May 2026 | yes |
| 2 · Research | SecurityOnline — CVE-2026-54420 writeup | CloudLinux/CageFS tenant-boundary escape; CVSS 8.5; public PoC repo reference | partial |
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.
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.
| Step | Behavior | Telemetry | Hunt Angle |
|---|---|---|---|
| 1 · Foothold | Tenant has FTP / web-shell access in their docroot | Process / file events | N1, Q3 |
| 2 · Symlink plant | ln -s creating a link pointing outside the tenant | ProcessRollup2 / file write | Q1 |
| 3 · Trigger | Privileged LiteSpeed/cPanel binary follows the link, writes root-owned file | ProcessRollup2 / file write | Q2 |
| 4 · Escalation | Root context obtained; tenant boundary escaped | ProcessRollup2 | Q2 / Q5 |
| 5 · Persistence | SUID drop, cron/systemd unit, authorized_keys / passwd edit | file write / ProcessRollup2 | Q4 / Q5 |
| 6 · Tooling pull | Web/php process makes outbound connection (reverse shell / download) | NetworkConnectIP4 | Q6 |
Affected surface & telemetry
| Surface | Required Telemetry | Priority | Gap Risk |
|---|---|---|---|
| Shared-hosting Linux servers | Process lineage + command line (ProcessRollup2) | Critical | Low — Falcon for Linux sensor |
| Docroot / web file activity | File-create / write events under /home/*/public_html | High | Medium — file telemetry volume on hosts |
| Privileged plugin processes | Process + file events from /usr/local/lsws, /usr/local/cpanel | High | Medium — baseline plugin activity is noisy |
| Egress from web/php users | NetworkConnectIP4 from nobody/_lsphp | Medium | Medium — legit outbound from sites |
Consolidated IOC Table
REPLACE_WITH_* placeholders — fill them from your own IR before importing. Copy-ready blocks in §9.| Type | Value | Conf | Action | Context |
|---|---|---|---|---|
| Behavior | tenant/web/FTP user runs ln -s inside /home/*/public_html pointing outside tenant | medium | hunt | Symlink plant — exploit primitive (Q1) |
| Behavior | /usr/local/lsws or /usr/local/cpanel binary writes root-owned file in unexpected path / spawns shell | high | detect | Privileged plugin follows symlink — flagship signal (Q2) |
| Behavior | web/php user (nobody, _lsphp) spawns sh/bash/id/whoami/uname | high | detect | Web-shell behavior (Q3) |
| Behavior | new SUID/SGID file or chmod u+s from non-admin context | high | detect | Post-root persistence (Q5) |
| Behavior | cron/systemd unit write or authorized_keys / /etc/passwd edit shortly after tenant-context process | medium | hunt | Post-root persistence (Q4) |
| File | REPLACE_WITH_WEBSHELL_PATH (web shell in docroot) | unconf | hunt | Fill from IR — not in sources |
| Hash | REPLACE_WITH_EXPLOIT_SHA256 | unconf | hunt | Fill from IR — not in sources |
| Reference | fevar54/CVE-2026-54420-LiteSpeed-Symlink-Exploit (GitHub PoC) | context | awareness | Public PoC repo (cited in sources) |
ATT&CK Mapping
| Tactic | Technique | Observed Behavior | Query / Control |
|---|---|---|---|
| Persistence / Initial foothold | T1505.003 — Web Shell | Web/php user spawning shells from a docroot | Q3 |
| Privilege Escalation | T1548 — Abuse Elevation Control Mechanism | Privileged plugin follows attacker symlink → root | Q2 |
| Privilege Escalation | T1574.005 / T1222 — Symlink abuse / file permission modification | ln -s outside tenant; root-owned file writes | Q1, Q2 |
| Privilege Escalation | T1548.001 — Setuid and Setgid | New SUID/SGID file or chmod u+s | Q5 |
| Persistence | T1053.003 / T1543.002 / T1098.004 — Cron / systemd service / SSH authorized_keys | Persistence written after a tenant-context process | Q4 |
| Command & Control | T1071.001 — Web protocols | Outbound from a web/php process (reverse shell / tool pull) | Q6 |
Native Audit-Log Hunts
| Hunt | Source | Logic | Response |
|---|---|---|---|
| N1 · Plugin version inventory | cPanel/WHM; rpm/plugin manifest | LiteSpeed cPanel plugin < 2.4.8 or WHM plugin < 5.3.2.1 still installed | Patch immediately (KEV) |
| N2 · Symlink audit in docroots | find on host / file-integrity tool | Symlinks under /home/*/public_html whose target resolves outside the tenant home | Remove; investigate owner |
| N3 · SUID/SGID drift | FIM baseline of SUID files | New/changed SUID/SGID binaries vs. a known-good baseline | Quarantine; rebuild if confirmed |
| N4 · Root-artifact review | Auditd / FIM on /etc | Recent edits to /etc/passwd, /etc/cron*, systemd units, root authorized_keys | Treat as root compromise |
CrowdStrike LogScale CQL Hunt Queries
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.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)
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)
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)
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)
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)
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)
CrowdStrike Custom IOA Recommendations
| IOA Name | Field Patterns | Benign Exclusions | Deployment Path |
|---|---|---|---|
| LiteSpeed/cPanel plugin spawns a shell | Parent lscpd/lsws/litespeed/lshttpd; Child sh/bash/python/perl as root | Baselined plugin install/update helpers (allow-list) | Endpoint Security → Custom IOA → Process Creation (Linux), Detect+Block |
| SUID bit set by non-admin context | Image */chmod; CmdLine u+s/g+s/4xxx; UserName != root | Package-manager parents (rpm/yum/dnf) | Custom IOA → Process Creation, Detect |
| Web/php user spawns interactive shell | UserName nobody/_lsphp/nginx/apache; Child sh/bash | Known CMS helper commands per host | Custom IOA → Process Creation, Detect |
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.
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
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)
# 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
# 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
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.
- Patch to LiteSpeed cPanel plugin v2.4.8 / WHM plugin v5.3.2.1 — M1051 (Update Software). The vendor fix and the #1 control; CISA KEV deadline was 2026-06-18. Check:
rpm -qa | grep -i litespeedand the plugin VERSION file. - Enable CloudLinux CageFS for every tenant — M1022 (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 server — M1022; best-practice (no formal benchmark). Apache: use
SymLinksIfOwnerMatch(never bareFollowSymLinks) plusmod_ruid2; LiteSpeed: turn off "Follow Symbolic Link" or restrict to owner-matched links. Check:grep -ri 'FollowSymLinks\|SymLinksIfOwnerMatch' /etc/apache2 /usr/local/apache.
- Remove unused FTP accounts; prefer SFTP and restrict FTP — M1018 (User Account Management); best-practice. Shrinks the set of tenants who can plant a symlink. Check: review FTP user list in WHM /
/etc/proftpdorpure-ftpdconfig. - File-integrity monitoring on /etc, cron, systemd units, and SUID/SGID files — M1022; CIS Distribution Independent Linux Benchmark (FIM + SUID audit sections). Catches Q4/Q5 persistence. Check:
find / -xdev \( -perm -4000 -o -perm -2000 \) 2>/dev/nullvs. baseline. - Least-privilege for the plugin & service accounts — M1026 (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/_lsphpis not the effective uid across tenants.
- Application control / allowlisting on hosting servers — M1038 (Execution Prevention); best-practice. Blocks dropped SUID backdoors and unsanctioned binaries.
- Egress filtering from web/php service accounts — M1037 (Filter Network Traffic); best-practice. Blunts reverse shells and tool pulls (Q6) from compromised tenants.
- Patch-velocity SLA on KEV-listed hosting components — M1051; align to the CISA KEV / BOD 22-01 timeline so internet-facing hosting plugins are patched before the deadline.
Containment Runbook
| Phase | Actions | Owner | Evidence |
|---|---|---|---|
| Isolate | Network-contain the affected shared server; preserve docroot symlinks, web shells, and root artifacts before any cleanup | SOC L2 | Containment timestamp; Q1/Q2/Q3 events |
| Scope tenants | Enumerate every tenant on the shared server (each is a potential entry point and a victim); identify which tenant planted the symlink | IR + IT | Tenant list; FTP/web-user owner of the symlink |
| Hunt artifacts | Sweep for web shells in all docroots, out-of-tenant symlinks, new SUID/SGID files, rogue cron/systemd units, edited /etc/passwd and root authorized_keys | IR | Web-shell hashes; SUID/symlink/persistence inventory |
| Eradicate / rebuild | Patch 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 clean | IR + IT | Rebuild ticket; patch confirmation |
| Rotate credentials | Rotate all tenant credentials AND root/system credentials on the server; reissue SSH keys; invalidate sessions | IR + IT | Credential-reset log |
| Harden | Enable CageFS for all tenants; disable unrestricted symlink following; remove unused FTP; enable FIM + promote Q2/Q5 IOAs | Detection Eng | Control status; IOA enabled |
Detection Coverage Map & Validation
| Technique | Behavior | CQL | IOA | Coverage |
|---|---|---|---|---|
| T1574.005 / T1222 | Symlink plant in docroot | Q1 | — | Partial noisy; tune to non-admin + out-of-tenant target |
| T1548 | Privileged plugin → shell/root write | Q2 | IOA-1 | Good |
| T1505.003 | Web-shell behavior | Q3 | IOA-3 | Good |
| T1053.003 / T1543.002 / T1098.004 | Cron / systemd / authorized_keys persistence | Q4 | — | Partial correlate to Q2/Q3; exclude config-mgmt |
| T1548.001 | SUID/SGID drop | Q5 | IOA-2 | Good |
| T1071.001 | Web/php egress (reverse shell) | Q6 | — | Partial 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.
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
Changelog
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.References
| Tier | Source | Used For |
|---|---|---|
| 1 | LiteSpeed security advisory (2026-06-01) | Affected versions; fixed in cPanel plugin 2.4.8 / WHM plugin 5.3.2.1; symlink-following root cause |
| 1 | CISA Known Exploited Vulnerabilities catalog | Active exploitation; remediation deadline 2026-06-18 |
| 2 | The Hacker News — CISA Flags LiteSpeed cPanel Plugin Flaw | Root privesc on shared hosting; CISA KEV context; CVSS 8.5 |
| 2 | SecurityOnline — LiteSpeed cPanel Privilege Escalation CVE-2026-54420 | CloudLinux/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.