CVE-2026-84798
moderateMissing authorization check in Craft CMS allows unauthorized entry deletion
Craft CMS versions 5.0.0-RC1 through 5.10.10 have a missing authorization check (CWE-862) in ElementsController::actionDeleteForSite(): the method loads the element with checkForProvisionalDraft enabled and performs the deletion permission check against the user's own provisional draft, which only verifies draft ownership rather than deletion rights on the live entry. An authenticated backend user who holds viewEntries, viewPeerEntries, saveEntries, savePeerEntries, and editSite permissions but lacks the deleteEntriesForSite permission can trigger the delete-for-site action, and the deletion propagates to the canonical element without a second permission check. The attacker gains the ability to hard-delete a canonical entry's site record and, for single-site entries, the entire element and its content, which is irrecoverable because it bypasses Craft's recycle bin. Any Craft CMS deployment on an affected 5.x version that grants content-editing permissions to non-admin users (common in multi-author editorial teams) is affected; the attacker must already have an authenticated account, so it is not exploitable remotely without credentials. No public proof of concept is known, the flaw is not in CISA's KEV, and EPSS estimates only a 0.2% probability of exploitation in the next 30 days.
What to do: Upgrade to Craft CMS 5.10.11 or later. Until upgraded, audit backend user permission sets for anyone granted view/save (including peer-entry) permissions plus editSite but not deleteEntriesForSite, and consider temporarily revoking editSite from such users. Because this deletion bypasses the recycle bin and is unrecoverable, review recent delete-for-site activity by non-admin users and confirm database backups are current.
| Pixel & Tonic Craft CMS | >= 5.0.0-RC1, < 5.10.11 |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
Craft CMS versions >= 5.0.0-RC1 and < 5.10.11 fail to perform an independent authorization check in ElementsController::actionDeleteForSite(). The method loads an element with checkForProvisionalDraft enabled and runs the deletion authorization check against the user's own provisional draft (which only verifies draft ownership), then propagates the deletion to the canonical element without re-checking permissions. As a result, an authenticated user who has viewEntries, viewPeerEntries, saveEntries, savePeerEntries, and editSite permissions but lacks the deleteEntriesForSite permission can hard-delete a canonical entry's site record (and, for single-site entries, the full element and content), which is irrecoverable via Craft's recycle bin.
- Weakness
- CWE-862
- Vector
- CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:L/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
In the news0 stories
No ingested article mentions this CVE yet.