Every CVE Search/ Get API key

CVE-2026-54180

backpack/crud: CRUD panel query scopes are not enforced on Update, Delete, and Reorder (cross-tenant IDOR)

7.6 HighFix available

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.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
Low
Privileges needed
Low
User interaction
None

What an attacker can affect

Confidentiality
Low
Integrity
High
Availability
Low

Exploit likelihood

0.46%Up 0.1 points since Sep 15, 2026
90%50%10%1%

What each source reports

CVE List Score used 7.6

backpack/crud: CRUD panel query scopes are not enforced on Update, Delete, and Reorder (cross-tenant IDOR)

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.

Record
CVE-2026-54180
CVSS 3.1
7.6 HighCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:L
Weakness
CWE-639, CWE-863
Updated
2026-11-02
EUVDEUVD-2026-77717 7.6

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.

Record
EUVD-2026-77717
CVSS 3.1
7.6 HighCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:L
Updated
2026-11-02
GitHub AdvisoriesGHSA-vgmv-8xjc-6rch 7.6

Laravel Backpack CRUD: CRUD panel query scopes are not enforced on Update, Delete, and Reorder (cross-tenant IDOR)

Summary

Backpack CRUD's list and read operations correctly apply any query scopes registered via addClause() / addBaseClause() (e.g. tenant isolation, user ownership). However, the Update, Delete, and Reorder operations bypassed these scopes, fetching records directly from the unscoped model query.

An authenticated user who knows or can guess a record's primary key could therefore update, delete, or reorder records that should be invisible to them — a classic IDOR on write paths.

Applications that rely on addBaseClause for row-level access control (multi-tenancy, per-user data isolation) are affected.

Impact

Any Backpack CRUD panel that uses addBaseClause or addClause to restrict which rows a user may access is affected on its write operations. An authenticated low-privilege user can modify or delete records belonging to other tenants / users.

Patches

Apply the fixed release for your major version:

  • v6: upgrade to 6.8.14 or later
  • v7: upgrade to 7.0.38 or later

The fix ensures Update, Delete, and Reorder all resolve records through the same scoped query used by the read side.

Workarounds

If you cannot upgrade immediately, add explicit Gate / Policy checks in your CrudController's update(), destroy(), and reorder() methods to verify the authenticated user is permitted to act on the resolved record.

Credits

Reported by Vishal Shukla (@shukla304).

Record
GHSA-vgmv-8xjc-6rch
CVSS 3.1
7.6 HighCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:L
Weakness
CWE-639, CWE-863
Updated
2026-11-02
NVD 7.6

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.

Record
CVE-2026-54180
CVSS 3.1
7.6 HighCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:L
Weakness
CWE-639, CWE-863
Updated
2026-11-02
OSV 7.6

backpack/crud: CRUD panel query scopes are not enforced on Update, Delete, and Reorder (cross-tenant IDOR)

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.

Record
CVE-2026-54180
CVSS 3.1
7.6 HighCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:L
Weakness
CWE-639, CWE-863
Updated
2026-11-02
OSVGHSA-vgmv-8xjc-6rch 7.6

Laravel Backpack CRUD: CRUD panel query scopes are not enforced on Update, Delete, and Reorder (cross-tenant IDOR)

Summary

Backpack CRUD's list and read operations correctly apply any query scopes registered via addClause() / addBaseClause() (e.g. tenant isolation, user ownership). However, the Update, Delete, and Reorder operations bypassed these scopes, fetching records directly from the unscoped model query.

An authenticated user who knows or can guess a record's primary key could therefore update, delete, or reorder records that should be invisible to them — a classic IDOR on write paths.

Applications that rely on addBaseClause for row-level access control (multi-tenancy, per-user data isolation) are affected.

Impact

Any Backpack CRUD panel that uses addBaseClause or addClause to restrict which rows a user may access is affected on its write operations. An authenticated low-privilege user can modify or delete records belonging to other tenants / users.

Patches

Apply the fixed release for your major version:

  • v6: upgrade to 6.8.14 or later
  • v7: upgrade to 7.0.38 or later

The fix ensures Update, Delete, and Reorder all resolve records through the same scoped query used by the read side.

Workarounds

If you cannot upgrade immediately, add explicit Gate / Policy checks in your CrudController's update(), destroy(), and reorder() methods to verify the authenticated user is permitted to act on the resolved record.

Credits

Reported by Vishal Shukla (@shukla304).

Record
GHSA-vgmv-8xjc-6rch
CVSS 3.1
7.6 HighCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:L
Weakness
CWE-639, CWE-863
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
backpack/crud
Packagist
6.0.0 up to 6.8.14
6.8.14
backpack/crud
Packagist
7.0.0 up to 7.0.38
7.0.38
backpack/crud
Packagist
6.0.0 up to 6.8.14, plus listed versions
6.0.16.0.26.0.36.0.46.0.5
Show 45 moreShow less
6.0.66.0.76.1.06.1.16.1.106.1.116.1.126.1.136.1.146.1.156.1.166.1.26.1.36.1.46.1.56.1.66.1.76.1.86.1.96.2.06.2.16.2.26.2.36.2.46.3.06.3.16.3.26.4.06.4.16.4.26.5.06.5.16.5.26.5.36.5.46.5.56.6.06.6.16.6.26.6.36.6.46.6.56.6.66.7.06.7.1
6.8.14
backpack/crud
Packagist
7.0.0 up to 7.0.38, plus listed versions
7.0.17.0.107.0.117.0.127.0.13
Show 32 moreShow less
7.0.147.0.157.0.167.0.177.0.187.0.197.0.27.0.207.0.217.0.227.0.237.0.247.0.257.0.267.0.277.0.287.0.297.0.37.0.307.0.317.0.327.0.337.0.347.0.357.0.367.0.377.0.47.0.57.0.67.0.77.0.87.0.9
7.0.38

History

History
RecordedChangedSources
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-54180 is a high vulnerability (CVSS 7.6) in Laravel-backpack Crud, published August 20, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.46%, the 40th percentile. Fixed in backpack/crud 6.8.14.

References

Show 5 moreShow less
This page doesn't list everything

Left out here: 69 versions. The JSON record has them.

MoveEnter Open