← Back to Feed CACHED · 2026-10-22 16:53:15 · CACHE_KEY CVE-2026-87886
CVE-2026-87886 · CWE-276 · Disclosed 2026-09-17

Acronis Backup cPanel/Plesk/DirectAdmin plugin local privilege escalation via insecure default file permissions

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

Someone left the janitor's keys on a hook anyone can reach, and the janitor has master access to every apartment in the building

CVE-2026-87886 is a local privilege escalation (LPE) caused by insecure default file permissions (CWE-276) in the Acronis Backup plugins for cPanel & WHM (before build 1.9.3.1021), Plesk (before build 1.8.11.638), and DirectAdmin (before build 1.2.3.238) on Linux. The Acronis plugin drops files with overly permissive modes, allowing any low-privileged local user — including a hosting customer's shell account or a web shell planted through an unrelated webapp flaw — to tamper with or leverage those files to escalate to root. Once root is achieved on a shared-hosting box, the attacker owns every customer site, database, mailbox, and backup managed by that control-panel instance. Acronis withheld specific file paths and exploitation technique details (advisory SEC-10986) to buy defenders time, but CISA confirmed active exploitation and added CVE-2026-87886 to the KEV catalog on 2026-09-16 with a remediation deadline of 2026-09-19 — a three-day window that signals urgency.

Acronis rates this HIGH / 7.8, which is directionally correct but understates the operational blast radius. A CVSS 7.8 with AV:L reads as a contained, single-host problem. On a dedicated workstation, it would be. But the Acronis Backup plugin exists *exclusively* on multi-tenant hosting servers — cPanel/WHM alone accounts for ~64% of hosting-panel deployments and Censys observes over 1 million cPanel/WHM instances on the public internet. On a shared hosting node, a local user going to root means compromise of every tenant, every database credential, and every backup artifact on the box. The vendor score ignores this blast-radius multiplier. Additionally, the backup-infrastructure angle means an attacker can manipulate or destroy recovery data — textbook ransomware preparation. The KEV listing with a -1 day lag (exploited before or on disclosure day) confirms this is not theoretical.

"KEV-listed LPE in backup plugin on multi-tenant hosting servers demands immediate action"
02 · The Attack Path

4 steps from start to impact.

STEP 01

Obtain low-privilege shell on the hosting server

The attacker needs a local, low-privilege Linux account on a server running the vulnerable Acronis Backup plugin. In shared-hosting environments this is trivially available: a compromised customer hosting account, a web shell planted via a vulnerable CMS (WordPress, Joomla, etc.), or SSH credentials obtained through credential stuffing. The CVSS vector's PR:L (Privileges Required: Low) reflects this. On shared hosts, hundreds or thousands of isolated user accounts exist, each a potential entry point.
Conditions required:
  • Low-privileged local shell on the target Linux server
  • Server must have the Acronis Backup plugin installed for cPanel/WHM, Plesk, or DirectAdmin
Where this breaks in practice:
  • Attacker must first compromise a hosting account or plant a web shell — not a zero-click remote attack
  • Acronis Backup plugin is an optional add-on; not all cPanel/Plesk servers have it installed
Detection/coverage: Standard shared-hosting compromise detection: web shell scanners (e.g., YARA rules, ClamAV), SSH brute-force monitoring, failed login alerts. No specific CVE-2026-87886 nuclei template or Qualys QID identified yet.
STEP 02

Identify and exploit insecure file permissions

The attacker locates Acronis Backup plugin files installed with overly permissive modes (CWE-276). Acronis has not disclosed specific paths, but backup plugins typically install binaries, scripts, or configuration files under /usr/lib/, /opt/acronis/, or cPanel plugin directories. Because the permissions are world-writable or world-readable where they should not be, the low-privileged user can overwrite a binary or script that runs as root during backup operations, or read configuration files containing elevated credentials. The attack complexity is AC:L — no race condition, no special configuration needed beyond the default insecure install.
Conditions required:
  • Default (unpatched) installation of the Acronis Backup plugin
  • File permissions left as shipped — no hardening applied
Where this breaks in practice:
  • If an admin has manually locked down file permissions (e.g., via automated hardening scripts), the default insecure perms may already be corrected
  • Technical details not publicly disclosed yet, which limits script-kiddie adoption — but targeted attackers clearly know the paths
Detection/coverage: File integrity monitoring (AIDE, OSSEC, Tripwire) on plugin directories would catch unauthorized modification. find / -perm -o+w -user root audits surface world-writable root-owned files.
STEP 03

Escalate to root via tampered plugin execution

The attacker's modified binary, script, or configuration is executed by the Acronis Backup agent's scheduled or on-demand backup process, which runs with elevated (root) privileges. This grants the attacker arbitrary code execution as root. The full CVSS impact triplet C:H/I:H/A:H reflects complete compromise — the attacker can read all files, modify anything, and disrupt services. No user interaction is required (UI:N); the backup process triggers automatically.
Conditions required:
  • Acronis Backup agent must execute the tampered file (typically automatic via cron or on-demand backup trigger)
  • Scope is Unchanged (S:U) — the initial authority boundary is the OS itself
Where this breaks in practice:
  • If backups are not running frequently, there may be a delay before escalation triggers
  • Some hardened hosting environments run backup agents in containers or with reduced capabilities, though this is uncommon
Detection/coverage: Process monitoring for unexpected child processes spawned by the Acronis agent. Auditd rules on execve from Acronis plugin paths. EDR agents (if deployed on hosting servers) should flag privilege escalation chains.
STEP 04

Multi-tenant data access and backup manipulation

With root on a cPanel/WHM or Plesk server, the attacker has unrestricted access to all hosted customer accounts, MySQL/MariaDB databases, email stores, SSL private keys, and DNS configurations. Critically, root access to the Acronis Backup plugin also means the attacker can access, exfiltrate, or destroy backup data — undermining disaster recovery. This is the operational blast radius that CVSS 7.8 does not capture: a single server compromise yields data for potentially hundreds of customers and eliminates their recovery path.
Conditions required:
  • Successful root escalation from step 3
Where this breaks in practice:
  • None — once root is achieved, these actions are unrestricted on standard cPanel/WHM deployments
Detection/coverage: Anomalous data access patterns, bulk file reads across customer home directories, unexpected Acronis API calls, backup deletion or modification outside maintenance windows.
03 · Compensating Control

1
HIGH 8.2→IGNORE 0.0
SEVERITY REDUCED
Patch immediately to fixed builds — This is a KEV-listed, actively exploited vulnerability. Apply Acronis Backup plugin updates to cPanel & WHM build 1.9.3.1021, Plesk build 1.8.11.638, and DirectAdmin build 1.2.3.238. Per the noisgate mitigation SLA for KEV-listed vulnerabilities, patch/mitigate immediately, within hours — do not wait for a maintenance window. Acronis plugin updates can typically be applied via the hosting control panel's plugin manager without full server restart.
2
HIGH 8.2→MEDIUM 4.5
SEVERITY REDUCED
Audit and harden file permissions on Acronis plugin directories — If immediate patching is blocked (e.g., testing required), manually identify and restrict file permissions on Acronis Backup plugin directories (/usr/lib/acronis/, /opt/acronis/, cPanel plugin paths). Remove world-writable and group-writable bits on all root-owned plugin files: find /usr/lib/acronis /opt/acronis -type f -perm /o+w -exec chmod o-w {} +. This directly addresses CWE-276 and breaks the escalation path. Deploy within hours given KEV status.
3
HIGH 8.2→HIGH 7.0
Deploy file integrity monitoring on plugin paths — Configure AIDE, OSSEC, or Tripwire to monitor Acronis Backup plugin directories for unauthorized modifications. Alert on any file change outside scheduled update windows. This does not prevent exploitation but provides detection of active tampering, enabling rapid incident response. Pair with auditd rules: auditctl -w /usr/lib/acronis/ -p wa -k acronis_integrity.
4
HIGH 8.2→HIGH 7.5
Conduct forensic triage on pre-patch servers — BOD 26-04 requires forensic triage for KEV-listed vulnerabilities. For any server that ran a vulnerable plugin build before patching, review: (1) file modification timestamps on Acronis plugin directories, (2) auth.log and secure for unexpected privilege escalation, (3) cron jobs and systemd timers for persistence, (4) customer account integrity across all hosted sites. Treat pre-patch servers as potential breach sites.
5
HIGH 8.2→MEDIUM 5.0
SEVERITY REDUCED
Restrict local shell access and harden shared hosting isolation — Reduce the attack surface for the PR:L prerequisite by disabling unnecessary shell access for hosting accounts (use noshell or jailshell), enforcing CloudLinux CageFS or similar isolation, and implementing SSH key-only authentication. This makes the local access prerequisite harder to satisfy. Does not remediate the vulnerability itself but shrinks the pool of accounts that could exploit it.
What doesn't work
  • WAF / ModSecurity rules — This is a local privilege escalation via file permissions, not a web-facing attack. WAF rules cannot intercept local file system operations.
  • Network segmentation / firewall rules — The attack is local to the server; no network traffic is involved in the escalation itself. Firewalling cPanel ports does not help.
  • Disabling the Acronis Backup agent service — While this prevents the escalation trigger (backup process executing tampered files), it also disables all backups, which may be operationally unacceptable and creates a different risk. Only use as a last resort if patching is impossible.
  • Updating cPanel/WHM itself — The vulnerability is in the Acronis plugin, not in cPanel. Updating cPanel without updating the Acronis plugin leaves the flaw in place.
04 · Intelligence Metadata

The supporting signals.

In-the-Wild ExploitationConfirmed. Acronis acknowledged "limited, targeted attacks" against cPanel & WHM deployments. CISA KEV listing with a -1 day lag (exploited on or before disclosure). No exploitation reported against Plesk or DirectAdmin variants yet.
CISA KEV StatusListed 2026-09-16. Remediation deadline: 2026-09-19 (3-day window). Forensic triage required per BOD 26-04. Added alongside CVE-2026-76460.
Proof-of-Concept AvailabilityNo public PoC found. No results on pocindex.io, no GitHub repos named CVE-2026-87886, no ExploitDB or Metasploit module. Acronis deliberately withheld technical details. Private exploitation capability exists among targeted threat actors.
EPSS Score0.00233 (low percentile). EPSS underweights this because the local access vector depresses the model's probability estimate. KEV listing is the more reliable signal here — EPSS has not yet absorbed the exploitation intelligence.
CVSS VectorCVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H — Local access, low complexity, low privileges, no user interaction. Full CIA impact. The AV:L masks the operational reality on multi-tenant shared-hosting servers.
Affected Version RangescPanel & WHM plugin: all builds < 1.9.3.1021 · Plesk extension: all builds < 1.8.11.638 · DirectAdmin plugin: all builds < 1.2.3.238
Fixed VersionscPanel & WHM: 1.9.3 HF3 (build 1.9.3.1021) · Plesk: 1.8.11 (build 1.8.11.638) · DirectAdmin: 1.2.3 (build 1.2.3.238)
Exposure SurfaceCensys observes ~1,052,657 cPanel/WHM instances internet-facing. cPanel holds ~64% hosting-panel market share. Acronis Backup plugin is an optional add-on — installed base is a subset, but significant among MSPs and hosting providers using Acronis for backup.
Vendor AdvisoryAcronis SEC-10986. Technical exploitation details deliberately withheld. No IOCs published.
Disclosure TimelineDisclosed: 2026-09-15 (weekend advisory). CVE assigned: 2026-09-17. KEV added: 2026-09-16. Exploitation observed: on or before disclosure (-1 day lag).

Sources.

  1. Acronis Security Advisory SEC-10986
  2. CISA KEV Catalog Entry for CVE-2026-87886
  3. CISA Alert — Two KEVs Added 2026-09-16
  4. BleepingComputer — Acronis Warns of Actively Exploited Flaw
  5. SecurityWeek — Acronis Patches Exploited Vulnerability
  6. Help Net Security — Acronis Backup Plugin Vulnerability
  7. Censys — cPanel/WHM Exposure Data
  8. Vijilan — MSP Response Guide for CVE-2026-87886
05 · The Call

Final Verdict
= UNCHANGED to HIGH (8.2/10)

Why this verdict

  • Active exploitation confirmed and KEV-listed. CISA added CVE-2026-87886 to the KEV catalog on 2026-09-16 with a 3-day remediation deadline. Exploitation was observed *before* public disclosure (-1 day lag). This alone overrides any downward friction pressure from the local access vector.
  • Local access requirement is low friction on shared hosting. The AV:L / PR:L vector sounds restrictive, but on multi-tenant cPanel/WHM servers — the *only* environment where this plugin exists — low-privilege shells are abundant. Compromised hosting accounts, web shells from vulnerable CMSes, and SSH credential stuffing provide the entry point. This prerequisite is routinely satisfied in the hosting threat model.
  • Role multiplier: multi-tenant hosting server (high-value role). 100% of affected installations are on production hosting servers managing multiple customer accounts. Root escalation on a WHM instance yields access to *every* hosted site, database, email store, and SSL key on the server. The blast radius is tenant-scale to provider-scale — a single compromised server can affect hundreds of customers. This is NOT a workstation LPE.
  • Role multiplier: backup infrastructure. The affected component is literally a backup plugin. Root access through this path gives the attacker control over backup data — enabling exfiltration of historical data, backup destruction for ransomware preparation, or backup poisoning. Backup infrastructure is in the high-value-role catalog, and this component occupies that role by definition.
  • Score adjustment: 7.8 → 8.2. The vendor's 7.8 correctly captures the single-host LPE mechanics. The upward adjustment of +0.4 reflects the multi-tenant blast radius inherent to the deployment context (every installation is on shared hosting) and the confirmed active exploitation. The severity label remains HIGH because the local access vector is a real constraint — unauthenticated remote attackers cannot reach this directly.

Why not higher?

A CRITICAL rating would require either unauthenticated remote exploitation or a blast radius that reaches fleet/domain scale from a single exploitation event. CVE-2026-87886 requires local access as a prerequisite, which means an attacker must already have an initial foothold (compromised hosting account, web shell). The Scope is Unchanged — the escalation stays within the OS boundary of the single server. While the multi-tenant blast radius is severe, it is bounded to one server per exploitation, not fleet-wide. The Acronis Backup plugin is also an optional add-on, not installed by default on all cPanel instances, which limits the attack surface.

Why not lower?

A MEDIUM rating is impossible given confirmed active exploitation and KEV listing — these are hard overrides. Beyond that, the deployment context makes this operationally severe: every affected installation runs on a multi-tenant production hosting server where LPE-to-root means total compromise of all customer data. The backup-infrastructure role adds data-destruction and ransomware-preparation risk. Low attack complexity and no user interaction required mean the chain is reliable once the local access prerequisite is met. The -1 day exploitation lag indicates sophisticated threat actors are already weaponizing this.

06 · Verification

Crowdsourced verification payload.

Run this script on each target hosting server (cPanel/WHM, Plesk, or DirectAdmin Linux host) as root or with sudo. Invoke: sudo bash check_cve_2026_87886.sh. It checks whether the Acronis Backup plugin is installed and whether the installed build is below the patched threshold.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# check_cve_2026_87886.sh — Detect CVE-2026-87886 (Acronis Backup plugin LPE)
# Run as root on cPanel/WHM, Plesk, or DirectAdmin Linux servers.
# Exit codes: 0=PATCHED, 1=VULNERABLE, 2=UNKNOWN

set -euo pipefail

VULNERABLE=0
CHECKED=0

version_lt() {
  # Returns 0 if $1 < $2 (using sort -V)
  [ "$(printf '%s\n%s' "$1" "$2" | sort -V | head -n1)" = "$1" ] && [ "$1" != "$2" ]
}

# --- cPanel & WHM plugin check ---
CPANEL_PLUGIN_INFO=""
if [ -d "/usr/local/cpanel" ] || command -v whmapi1 &>/dev/null; then
  # Try common Acronis plugin locations
  for candidate in \
    /usr/local/cpanel/3rdparty/acronis/version \
    /opt/acronis/cpanel/version \
    /usr/lib/acronis/cpanel/version \
    /var/cpanel/acronis/version; do
    if [ -f "$candidate" ]; then
      CPANEL_PLUGIN_INFO=$(cat "$candidate" 2>/dev/null || true)
      break
    fi
  done
  # Fallback: check RPM/dpkg
  if [ -z "$CPANEL_PLUGIN_INFO" ]; then
    CPANEL_PLUGIN_INFO=$(rpm -q --queryformat '%{VERSION}' acronis-backup-cpanel 2>/dev/null || \
                         dpkg-query -W -f='${Version}' acronis-backup-cpanel 2>/dev/null || true)
  fi
  # Fallback: check plugin metadata
  if [ -z "$CPANEL_PLUGIN_INFO" ]; then
    for meta in /var/cpanel/plugins/acronis*/version /usr/local/cpanel/whostmgr/docroot/cgi/acronis/version; do
      if [ -f "$meta" ]; then
        CPANEL_PLUGIN_INFO=$(cat "$meta" 2>/dev/null || true)
        break
      fi
    done
  fi
  if [ -n "$CPANEL_PLUGIN_INFO" ]; then
    CHECKED=1
    FIXED_CPANEL="1.9.3.1021"
    echo "[*] cPanel/WHM Acronis plugin detected: build $CPANEL_PLUGIN_INFO"
    if version_lt "$CPANEL_PLUGIN_INFO" "$FIXED_CPANEL"; then
      echo "[!] VULNERABLE — build $CPANEL_PLUGIN_INFO is below fixed build $FIXED_CPANEL"
      VULNERABLE=1
    else
      echo "[+] PATCHED — build $CPANEL_PLUGIN_INFO >= $FIXED_CPANEL"
    fi
  elif [ -d "/usr/local/cpanel" ]; then
    echo "[*] cPanel detected but Acronis Backup plugin not found — NOT AFFECTED"
    CHECKED=1
  fi
fi

# --- Plesk plugin check ---
PLESK_PLUGIN_INFO=""
if [ -d "/usr/local/psa" ] || command -v plesk &>/dev/null; then
  for candidate in \
    /opt/acronis/plesk/version \
    /usr/lib/acronis/plesk/version \
    /usr/local/psa/admin/plib/modules/acronis-backup/version; do
    if [ -f "$candidate" ]; then
      PLESK_PLUGIN_INFO=$(cat "$candidate" 2>/dev/null || true)
      break
    fi
  done
  if [ -z "$PLESK_PLUGIN_INFO" ]; then
    PLESK_PLUGIN_INFO=$(rpm -q --queryformat '%{VERSION}' acronis-backup-plesk 2>/dev/null || \
                        dpkg-query -W -f='${Version}' acronis-backup-plesk 2>/dev/null || true)
  fi
  if [ -n "$PLESK_PLUGIN_INFO" ]; then
    CHECKED=1
    FIXED_PLESK="1.8.11.638"
    echo "[*] Plesk Acronis extension detected: build $PLESK_PLUGIN_INFO"
    if version_lt "$PLESK_PLUGIN_INFO" "$FIXED_PLESK"; then
      echo "[!] VULNERABLE — build $PLESK_PLUGIN_INFO is below fixed build $FIXED_PLESK"
      VULNERABLE=1
    else
      echo "[+] PATCHED — build $PLESK_PLUGIN_INFO >= $FIXED_PLESK"
    fi
  elif [ -d "/usr/local/psa" ]; then
    echo "[*] Plesk detected but Acronis Backup extension not found — NOT AFFECTED"
    CHECKED=1
  fi
fi

# --- DirectAdmin plugin check ---
DA_PLUGIN_INFO=""
if [ -d "/usr/local/directadmin" ] || command -v directadmin &>/dev/null; then
  for candidate in \
    /opt/acronis/directadmin/version \
    /usr/lib/acronis/directadmin/version \
    /usr/local/directadmin/plugins/acronis-backup/version; do
    if [ -f "$candidate" ]; then
      DA_PLUGIN_INFO=$(cat "$candidate" 2>/dev/null || true)
      break
    fi
  done
  if [ -z "$DA_PLUGIN_INFO" ]; then
    DA_PLUGIN_INFO=$(rpm -q --queryformat '%{VERSION}' acronis-backup-directadmin 2>/dev/null || \
                     dpkg-query -W -f='${Version}' acronis-backup-directadmin 2>/dev/null || true)
  fi
  if [ -n "$DA_PLUGIN_INFO" ]; then
    CHECKED=1
    FIXED_DA="1.2.3.238"
    echo "[*] DirectAdmin Acronis plugin detected: build $DA_PLUGIN_INFO"
    if version_lt "$DA_PLUGIN_INFO" "$FIXED_DA"; then
      echo "[!] VULNERABLE — build $DA_PLUGIN_INFO is below fixed build $FIXED_DA"
      VULNERABLE=1
    else
      echo "[+] PATCHED — build $DA_PLUGIN_INFO >= $FIXED_DA"
    fi
  elif [ -d "/usr/local/directadmin" ]; then
    echo "[*] DirectAdmin detected but Acronis Backup plugin not found — NOT AFFECTED"
    CHECKED=1
  fi
fi

# --- Also check for world-writable Acronis files (detection heuristic) ---
echo ""
echo "[*] Scanning for world-writable Acronis-owned files (CWE-276 indicator)..."
WW_FILES=$(find /opt/acronis /usr/lib/acronis /usr/local/cpanel/3rdparty/acronis \
  /usr/local/psa/admin/plib/modules/acronis-backup \
  /usr/local/directadmin/plugins/acronis-backup \
  -type f -perm /o+w 2>/dev/null | head -20 || true)
if [ -n "$WW_FILES" ]; then
  echo "[!] WARNING: World-writable files found in Acronis paths:"
  echo "$WW_FILES"
  VULNERABLE=1
else
  echo "[+] No world-writable Acronis files detected."
fi

# --- Final verdict ---
echo ""
if [ "$CHECKED" -eq 0 ]; then
  echo "UNKNOWN — No cPanel/WHM, Plesk, or DirectAdmin with Acronis plugin detected on this host."
  exit 2
elif [ "$VULNERABLE" -eq 1 ]; then
  echo "VULNERABLE — CVE-2026-87886 affects this host. Patch immediately (KEV-listed, actively exploited)."
  exit 1
else
  echo "PATCHED — Acronis Backup plugin is at or above the fixed build."
  exit 0
fi