This is a loaded trapdoor in the tenant hallway, not a sniper round from the street
CVE-2026-44962 is an XPath injection flaw in Plesk for Linux's APS Application Catalog search path. The vendor says low-privileged authenticated users can turn that bug into arbitrary OS command execution and local privilege escalation. Authoritative advisories point to vulnerable Linux builds prior to 18.0.75.1 and prior to 18.0.76.2, with fixes shipped on February 24-25, 2026; the workaround is to disable APS entirely in panel.ini.
The vendor's 9.9 CRITICAL score is technically understandable because the end-state is server-level compromise, but it overrates the real-world entry cost. This is not unauthenticated internet RCE: the attacker needs a valid Plesk account, the vulnerable APS feature must be reachable, and the component is already deprecated and headed for removal. That combination pushes this down from *internet emergency* to *serious tenant-to-root risk*.
4 steps from start to impact.
Get a valid Plesk foothold
https://host:8443. In practice this means a customer account, reseller account, reused password, stolen session, or already-compromised web-hosting tenant. The likely tooling is just a browser or curl; there is no public weaponized exploit kit widely circulating at the time of writing.- Internet or internal reachability to the Plesk panel
- Valid low-privileged Plesk credentials
- Plesk for Linux deployment
- This is authenticated remote, not pre-auth
- MFA, SSO, IP allowlisting, or admin-VPN-only exposure blocks the first move
- Many enterprises do not expose customer logins for Plesk at all
Reach the APS Catalog search surface
- APS Catalog feature enabled
- Account can access the Applications/App Catalog area
- Admins can disable APS with
[aps] enabled = off - The feature is deprecated and may already be absent or unused in newer estates
- Some service plans or role setups may hide app access from customers
Inject into the XPath query
curl with crafted parameters.- Vulnerable build installed
- Search request reaches the vulnerable code path
- No public GitHub or Exploit-DB PoC was readily discoverable during this review
- The attack path depends on a specific feature path rather than a generic panel endpoint
- Modern WAFs often do not inspect or protect the Plesk control plane on
8443
Turn panel code execution into host compromise
- Successful command execution
- Host contains other tenant data, keys, backups, or management secrets
- Blast radius is huge after exploitation, but only for hosts that permit the earlier authenticated feature path
- EDR, process allowlisting, and hardening can interrupt post-exploitation activity
The supporting signals.
| In-the-wild status | No CISA KEV listing and no credible public reporting of active campaigns found as of 2026-06-02. |
|---|---|
| Proof-of-concept availability | No clear public GitHub or Exploit-DB PoC was readily discoverable in web review. That lowers short-term weaponization pressure, though authenticated bugs are easy to reproduce once researchers reverse the fix. |
| EPSS | 0.00047 from the provided intel, which is extremely low. Percentile was not independently verified from FIRST during this browse session. |
| KEV status | Not KEV-listed as of 2026-06-02; treat this as a meaningful downgrade from vendor urgency language. |
| CVSS vector | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H — the decisive field is PR:L. This is network-reachable *after login*, not an unauthenticated perimeter break. |
| Affected versions | Plesk advisories say Plesk for Linux versions prior to 18.0.75.1 and prior to 18.0.76.2 are affected. |
| Fixed versions / backports | Fixed in 18.0.75.1 and 18.0.76.2. No distro backport guidance was published because this is a vendor-managed Plesk product update, not an OS package CVE bulletin. |
| Exposure reality | Plesk's admin interface normally runs on TCP/8443, and Plesk docs explicitly document that port. Bitsight's public footprint page reports 1,445,957 Plesk Obsidian observations over the prior 30 days, which shows a large exposed ecosystem even though that is not a count of vulnerable hosts. |
| Feature exposure nuance | Plesk documentation says customers see Application Catalog apps by default unless availability is restricted, which supports the low-privileged authenticated attack model. But APS Catalog is also deprecated and scheduled for removal, so many estates may already have reduced exposure. |
| Disclosure / credit | Public disclosure hit NVD on 2026-05-29. Plesk credits Georgii Shutiaev for responsible disclosure. |
noisgate verdict.
The single biggest downgrade factor is the attacker position: this requires authenticated remote access to the Plesk panel, which means it is a post-login control-plane flaw rather than an internet-scale pre-auth takeover. It stays in HIGH because a low-privileged tenant can reportedly convert that foothold into server-level command execution on a widely exposed hosting platform.
Why this verdict
- Downgrade: requires authenticated remote access — vendor CVSS starts at 9.9, but
PR:Lmeans the attacker already has a valid Plesk foothold. That is a major friction point versus true perimeter RCE. - Partial downgrade: feature-specific path — the bug lives in APS Catalog search, not in a universally hit panel route. Estates that disabled APS or never expose app management to customers cut the reachable population.
- Partial downgrade: deprecated component — APS Catalog is deprecated and scheduled for removal, which materially narrows the modern exposed population compared with core Plesk panel bugs.
- Upgrade pressure remains: tenant-to-host blast radius — if the vulnerable path is reachable, the stated impact is arbitrary OS command execution and LPE on the server. On shared hosting or MSP estates, one low-privileged account can become a multi-tenant incident.
- No exploitation pressure today — no KEV listing, no verified public campaign reporting, and a very low EPSS meaningfully reduce immediate emergency handling.
Why not higher?
Because the exploit chain starts with valid credentials. That prerequisite implies either prior compromise, insider access, or tenant access already exists, and each of those sharply narrows the attacker population compared with anonymous internet exploitation. The lack of KEV, low EPSS, no obvious public PoC, and the dying APS feature all keep this out of CRITICAL.
Why not lower?
Because once you are in, the impact is ugly: the vendor says a low-privileged authenticated user can reach arbitrary OS command execution and local privilege escalation. On internet-facing shared-hosting control planes, that is exactly the kind of bug that turns one customer account into full-host compromise, so treating it as routine backlog would be reckless.
What to do — in priority order.
- Disable APS now — If you cannot upgrade immediately, apply the vendor workaround by setting
[aps] enabled = offin/usr/local/psa/admin/conf/panel.iniand reload/restart the relevant Plesk services. For a HIGH verdict, deploy this control within 30 days; if the box is multi-tenant or customer-accessible, do it on the next change window, not at quarter-end. - Restrict panel access — Move
8443behind VPN, SSO proxy, bastion, or IP allowlists so random internet users and commodity credential-stuffing never reach the login page. For a HIGH verdict, implement or tighten this within 30 days, prioritizing customer-exposed shared-hosting nodes first. - Enforce strong auth on Plesk accounts — Turn on MFA where available, rotate stale credentials, and review reseller/customer accounts with broad permissions. This directly attacks the main prerequisite — valid login — and should be completed within 30 days for exposed hosts.
- Hunt for suspicious Plesk child processes — Create detections for shells, interpreters, package managers, downloaders, and cron/service changes spawned by Plesk web components. Roll this out within 30 days so you have post-exploitation visibility even if the panel bug is missed at the edge.
- Prune customer app-management rights — Review service plans and subscription settings that expose Application Catalog functionality to customers and resellers. Where business use allows, remove or narrow access within 30 days to shrink the reachable population.
- A website WAF in front of hosted domains does not reliably help if the vulnerable traffic goes to the Plesk control plane on
8443rather than customer sites on80/443. - Patching only customer CMS apps like WordPress, Joomla, or Drupal does nothing here; the flaw is in Plesk itself.
- Counting on low EPSS alone is a trap. EPSS is useful for queue order, not for dismissing a post-auth tenant-to-root bug on exposed hosting infrastructure.
Crowdsourced verification payload.
Run this on the target Plesk for Linux host as root or with sufficient privileges to read /usr/local/psa/admin/conf/panel.ini and execute Plesk CLI commands. Save it as check-cve-2026-44962.sh, then run sudo bash check-cve-2026-44962.sh; it reports VULNERABLE, PATCHED, or UNKNOWN based on installed Plesk version and whether the vendor workaround disables APS.
#!/usr/bin/env bash
# check-cve-2026-44962.sh
# Detects likely exposure to CVE-2026-44962 on Plesk for Linux.
# Output: VULNERABLE / PATCHED / UNKNOWN
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN
set -u
PANEL_INI="/usr/local/psa/admin/conf/panel.ini"
VERSION_FILE="/usr/local/psa/version"
get_version() {
local v=""
if [[ -r "$VERSION_FILE" ]]; then
v=$(grep -Eo '[0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?' "$VERSION_FILE" | head -n1)
fi
if [[ -z "$v" ]] && command -v plesk >/dev/null 2>&1; then
v=$(plesk version 2>/dev/null | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+(\.[0-9]+)?' | head -n1)
fi
echo "$v"
}
aps_disabled() {
[[ -r "$PANEL_INI" ]] || return 1
awk '
BEGIN { in_aps=0; disabled=0 }
/^[[:space:]]*\[aps\][[:space:]]*$/ { in_aps=1; next }
/^[[:space:]]*\[/ && $0 !~ /^[[:space:]]*\[aps\][[:space:]]*$/ { in_aps=0 }
in_aps && /^[[:space:]]*enabled[[:space:]]*=[[:space:]]*off[[:space:]]*$/ { disabled=1 }
END { exit(disabled ? 0 : 1) }
' "$PANEL_INI"
}
# Compare dotted versions. Returns 0 if $1 < $2
version_lt() {
local IFS=.
local i
local -a a=($1) b=($2)
for ((i=${#a[@]}; i<4; i++)); do a[i]=0; done
for ((i=${#b[@]}; i<4; i++)); do b[i]=0; done
for i in 0 1 2 3; do
if ((10#${a[i]} < 10#${b[i]})); then return 0; fi
if ((10#${a[i]} > 10#${b[i]})); then return 1; fi
done
return 1
}
version_ge() {
! version_lt "$1" "$2"
}
is_vulnerable_version() {
local v="$1"
# Advisory-fixed builds: 18.0.75.1 and 18.0.76.2
# Vulnerable if:
# - any version < 18.0.75.1
# - 18.0.76.0 or 18.0.76.1
# - anything between 18.0.75.1 and 18.0.76.0 is treated as patched branch-wise
if version_lt "$v" "18.0.75.1"; then
return 0
fi
if version_ge "$v" "18.0.76.0" && version_lt "$v" "18.0.76.2"; then
return 0
fi
return 1
}
main() {
local version
version=$(get_version)
if [[ -z "$version" ]]; then
echo "UNKNOWN"
exit 2
fi
# Vendor workaround disables the vulnerable feature.
if aps_disabled; then
echo "PATCHED"
exit 0
fi
if is_vulnerable_version "$version"; then
echo "VULNERABLE"
exit 1
fi
# Patched versions include 18.0.75.1+, 18.0.76.2+, and later branches.
if version_ge "$version" "18.0.75.1"; then
echo "PATCHED"
exit 0
fi
echo "UNKNOWN"
exit 2
}
main
If you remember one thing.
Sources
- NVD record for CVE-2026-44962
- Plesk advisory for CVE-2026-44962
- Plesk Obsidian change log
- Canadian Centre for Cyber Security advisory AV26-534
- Plesk docs: How Apps Become Available to Your Customers
- Plesk docs: Ports Used by Plesk
- Plesk KB noting APS Catalog deprecation/removal
- Bitsight public Plesk Obsidian footprint page
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.