ZeroHour

CVE-2026-54180

niche

Row-Level Authorization Bypass in Backpack for Laravel CRUD (backpack/crud)

CVSS 3.1
7.6 high
EPSS
Published
()
Modified
AI analysis

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.

Affected
backpack/crud (Backpack for Laravel CRUD)>=6.0.0, <6.8.14
backpack/crud (Backpack for Laravel CRUD)>=7.0.0, <7.0.38
Estimated exposure
nicheunknown — plausibly low thousands of custom Laravel admin panels using Backpack 6.x/7.x with query-clause scoping — Backpack is a developer framework for bespoke Laravel admin panels, so there are no active-install counts or device-scan signatures; the truly at-risk subset is only apps that rely on addClause()/addBaseClause() for row-level authorization.

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

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 news

No ingested article mentions this CVE yet.