Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Network-reachable authenticated user (PR:L) with low complexity; read is limited to backup metadata (C:L) while delete and root-privileged restore give I:H/A:H; same security authority so S:U.
Primary rating from Vendor (vulncheck).
CVSS VectorVendor: vulncheck
Lifecycle Timeline
3DescriptionCVE.org
CyberPanel through 1.9.1, fixed in commit b198460, contains an insecure direct object reference (IDOR) vulnerability in the IncBackups application's incremental-backup handlers (deleteBackup, fetchRestorePoints, and restorePoint) that allows authenticated panel users to access or manipulate other tenants' backup resources by supplying an attacker-controlled globally sequential IncJob integer ID that is never re-scoped to the authorized domain. Attackers can enumerate sequential backup IDs to read another tenant's backup metadata, irrecoverably delete another tenant's backup snapshots, or trigger unauthorized restoration of another tenant's backup job with root privileges.
AnalysisAI
Cross-tenant privilege abuse in CyberPanel through 1.9.1 lets any authenticated panel user read, delete, or restore other tenants' incremental backups by supplying a guessed IncJob integer ID that the IncBackups handlers never re-scope to the caller's own domain. The flaw affects the deleteBackup, fetchRestorePoints, and restorePoint endpoints; because IncJob IDs are globally sequential, an attacker can trivially enumerate victims, and unauthorized restores execute with root privileges. No public exploit identified at time of analysis, but the root cause and fix are fully disclosed in vendor commit b198460.
Technical ContextAI
CyberPanel is an open-source web hosting control panel (built on Django/Python) that manages websites, mail, DNS, and backups for many domains under a single multi-tenant installation. The vulnerability is a classic CWE-639 Insecure Direct Object Reference: the IncBackups application performs an ownership check on the user-supplied backup_domain but then loads the backup job with 'IncJob.objects.get(id=backup_id)' using an attacker-controlled integer primary key that is never constrained to the owned domain. Downstream privileged workers (DeleteSnapShot, the restore path) derive their target repository and system user from the IncJob object itself rather than from the validated domain, so passing your own domain alongside another tenant's IncJob ID is enough to act on their data. The fix scopes every lookup to 'website__domain=backup_domain' (and validates JobSnapshots ownership for local restores), closing the gap between the domain-level ACL check and the object-level operation.
RemediationAI
Upgrade to a CyberPanel build that includes commit b1984603f9b0099b39bca46fea176e53b6d4d601, which re-scopes the IncJob and JobSnapshots lookups to the caller's owned domain; this is an upstream fix available as a commit, and a specific tagged patched release is not independently confirmed in the input, so operators tracking releases should apply the commit or the next release incorporating it and verify via the GitHub advisory. If you cannot patch immediately, apply compensating controls: restrict panel account creation and audit existing low-privilege users, since exploitation requires an authenticated account (trade-off: does not stop an already-malicious tenant); place the CyberPanel management interface behind a VPN or IP allowlist to reduce exposure of the vulnerable endpoints (trade-off: no effect on legitimate internal tenants); and monitor application/backup logs for enumeration patterns against IncBackups deleteBackup/fetchRestorePoints/restorePoint and unexpected snapshot deletions or restores (trade-off: detective only, does not prevent the action). See the fix commit and the VulnCheck advisory (https://www.vulncheck.com/advisories/cyberpanel-incbackups-idor-via-sequential-backup-id) for details.
Same technique Authentication Bypass
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-48307
GHSA-947p-2q4v-5rgj