CVE-2026-54180
nicheRow-Level Authorization Bypass in Backpack for Laravel CRUD (backpack/crud)
Backpack for Laravel's CRUD package (backpack/crud) resolves records for the Update, Delete, and Reorder operations from the unscoped model query rather than the scoped query defined via addClause() or addBaseClause(), which is what the List and Read operations use. An authenticated admin-panel user who knows or guesses an out-of-scope record's primary key can send a crafted write request to modify, delete, or reorder records that should be hidden from them by tenant isolation, ownership, or other row-level access-control scopes. The attacker gains unauthorized write access (and some information exposure via record IDs) across tenant or ownership boundaries, but applications that do not use CRUD query clauses for authorization are not affected by this specific bypass. Affected versions are 6.0.0 up to (but not including) 6.8.14, and 7.0.0 up to (but not including) 7.0.38; the fix routes all three write operations through getModelWithCrudPanelQuery(). No public proof of concept exists, the flaw is not in the CISA KEV catalog, and no exploitation has been reported.
What to do: Upgrade backpack/crud to 6.8.14 (6.x line) or 7.0.38 (7.x line) or later, which routes Update, Delete, and Reorder through the scoped query. If immediate upgrade is not possible, add explicit authorization/policy checks (or global scopes) on the models used by affected CRUD controllers so write operations cannot touch out-of-scope primary keys. Audit application and server logs for authenticated users issuing update/delete/reorder requests against record IDs outside their tenant or ownership scope.
| backpack/crud (Backpack for Laravel CRUD) | >=6.0.0, <6.8.14 |
| backpack/crud (Backpack for Laravel CRUD) | >=7.0.0, <7.0.38 |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
backpack/crud provides Create, Read, Update & Delete (CRUD) functions for Backpack, a collection of Laravel packages that help users build custom administration panels. From 6.0.0 until 6.8.14 and 7.0.38, the Update, Delete, and Reorder operations resolve records from the unscoped model query instead of the query configured through addClause() or addBaseClause(). An authenticated user who knows or guesses an out-of-scope record primary key can therefore modify, delete, or reorder records hidden by tenant, ownership, or other row-level access-control scopes. Applications that do not rely on CRUD query clauses for authorization are not affected by this specific bypass. The fix routes all three write operations through getModelWithCrudPanelQuery(), matching the scoped list and read behavior. This issue is fixed in versions 6.8.14 and 7.0.38.
- Weakness
- CWE-639, CWE-863
- Vector
- CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:L
In the news0 stories
No ingested article mentions this CVE yet.